Hey
Folgende Methoden:
~~~php
/**
* Der technische Login, setzt Cookie, Session, Datenbank
*/
private function _setLoginStatus($name,$id,$time,$model,$bids){
// Values
$values=array(
'u_id'=>$id,
'u_name'=>$name
);
// Create Hash
$values['key']=sha1($values['u_id'].'|'.$values['u_name'].'|'.self::$cookiesalt);
// Create Cookie-String
$string=implode('|',$values);
# COOKIE // Save Cookie
if(setcookie('u',$string,time()+321408000)===false){
return false;
}
# MEM // Save Key to memcached
$userkey='u_'.$id.'_key';
if(!mem::get($userkey)){
mem::set($userkey,$values['key']);
}else{
mem::replace($userkey,$values['key']);
}
return true;
}
/**
* Checks if Cookie avaiable and not manipulated
*/
private function _checkCookie(){
#tools::ga($_COOKIE);exit();
if(isset($_COOKIE[self::$cookiename])){
$s=explode('|',$_COOKIE[self::$cookiename]);
// Cookie manipulated?
if(sha1($s[0].'|'.$s[1].'|'.self::$cookiesalt)===$s[2]){
return array($s[2],$s[0],$s[1]);
}else{
setcookie(self::$cookiename,'',time()-36000);
return array(false,$s[0]);
}
}
return false;
}
/*
* Authentifizieren
*/
public function Auth(){
if($keyIdName=$this->_checkCookie()){
if($keyIdName[0]===mem::get('u_'.$keyIdName[1].'_key')){
self::$uname=$keyIdName[2];
self::$uid=$keyIdName[1];
self::$status=true;
}else{
self::$uname='';
self::$uid=0;
self::$status=false;
mem::delete('u_'.$keyIdName[1].'_key');
}
}
\_setLoginStatus wird von einer Methode namens "Login()" aufgerufen.
Die Parameter werden alle richtig pbergeben und auch checkUsers() liefert das richtige Ergebnis zurück.
Auch das Cookie wird gesetzt, nach dem setLoginStatus wird ein PHP-Redirect durchgeführt
~~~php
header('Status: 301');
header('Location: /');
exit();
Danach ist der Cookie nicht mehr da - warum?