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;
}
}
$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?