Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z $this
Forum PHP.pl > Forum > Przedszkole
gcdreak
Witam!
Piszę własną klasę logowania i sesji i mam problem. Wywala mi taki błąd:
Kod
<b>Fatal error</b>:  Using $this when not in object context in <b>/home/ja/public_html/c4r22/logowanie/class.login.php</b> on line <b>69</b>

Moja klasa wygląda tak:
Kod
public function zaloguj($name, $pass){
              $zapytanie = "SELECT name, rank FROM users WHERE name = '". $name ."' AND password = '". sha1($pass)."'";
              $wynik = $this->db->query($zapytanie);
              $wiersz = $wynik->fetch_row();
              $user = $wiersz[0];
              $this->user = $user;
              $this->rank = $wiersz[1];
              
              if(isset($user)){
                  self::sesja_start();
              }else{
                  return false;
              }
          }
          
          /*************************  M  e  t  o  d  y   s  e  s  j  i  *************************/
          
          private static function sesja_start(){
              session_start();
              if(! isset($_SESSION['zalogowany'])){
                  session_regenerate_id();
                  $_SESSION['zalogowany'] = true;
                  $_SESSION['name'] = $this->user;
                  $_SESSION['rank'] = $this->rank;
                  $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
              }else{
                  $this->sesja_stop();
              }
              if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
                  session_unset();
              }
          }

public function sesja_stop(){  //wylogowywanie
             if($_SESSION['zalogowano'] == true){
                 unset($_SESSION['zalogowany'],$_SESSION['name'],$_SESSION['rank'],$_SESSION['ip']);
                 session_destroy();
             }else{
                 return false;
             }
            
         }


W moim przypadku line 69 to $this->sesja_stop(); Co drugi raz wyskakuje ten sam komunikat tylko, że z liniją 65.
Powodem błędu jest metoda sesja_start();
Co mam źle?
rzymek01
IMHO to jest tak:

w funkcji wyżej wywołujesz self::sesja_start();, a więc statycznie, czyli nie tworzysz obiektu
a w właśnie w funkcji składowej sesja_start masz odwołanie do obiektu $this, który de facto nie istnieje

//edit:
może zamiast self::sesja_start(); daj $this->sesja_start();
gcdreak
Nie, to nic nie daje.
Problem znika po usunięciu static z przed funcji, w sumie to nie pomyślałem o tym. Dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.