Hi.
public function Login()
{
if(isset($_POST['loginName']) && isset($_POST['loginName']))
{
if (!isset($_SESSION['try'])) {
$_SESSION['try']=1;
} elseif($_SESSION['try']>$this->max_trys) {
} else {
++$_SESSION["try"];
}
$model=new Models_Auth();
if($result=$model->checkUser())
{
$key=md5(rand(0,99).self::$thekey.uniqid(rand(), true));
$time=0;
if(isset($_POST['alwaysLogged'])){
$time=time()+321408000;
}
setcookie(self::$cookiename, $key, $time,'/','', false, true);
$setSession=$model->insertSession($result[0]['uid'],$result[0]['loginname'],$key);
if($setSession[0]==true){
$_SESSION['auth_logged'] =true;
$_SESSION['auth_userid'] =$result[0]['uid'];
$_SESSION['auth_loginname'] =$result[0]['loginname'];
header("Location: http://example.com/para1/para2/para3");
exit();
}
$_SESSION['auth_userid']=0;
tools::goNext("/Auth/show/Check/Login/false");
} else {
$_SESSION['auth_userid']=0;
tools::goNext("/Auth/show/Check/Login/false");
}
} else {
$_SESSION['auth_userid']=0;
return false;
}
}
Da wo der Header-Redirect ist sollte eigentl. auch tools::goNext stehen welche so aussieht:
public static function goNext($goto, $done=true, $homeuri=true){
header("Location: ".(($homeuri===true)?'http://expample.com/':"").ltrim($goto,"/"));exit();
}
Die weiteren gefragten Methoden aus dem "Model":
public function checkUser()
{
if(strpos($_POST['loginName'],'@')){
if(!$r=db::db_query("SELECT uid,loginname FROM t1.users WHERE email='".db::escape($_POST['loginName'])."'AND pw='".$this->cryptIt($_POST['loginPw'])."' AND regdone='1'")){
$r=db::db_query("SELECT uid, loginname FROM t1.users WHERE loginname='".db::escape($_POST['loginName'])."'AND pw='".$this->cryptIt($_POST['loginPw'])."' AND regdone='1'");
}
} else {
$r=db::db_query("SELECT uid, loginname FROM t1.users WHERE loginname='".db::escape($_POST['loginName'])."'AND pw='".$this->cryptIt($_POST['loginPw'])."' AND regdone='1'");
}
return $r;
}
public function insertSession($userid,$username,$sessionkey){
return db::db_query("INSERT INTO t1.users_sessions (userid, loginname, login_key) VALUES ('".$userid."','".$username."','".$sessionkey."')");
}
Nicht wundern bei den Queries, was da vor den Tabellennamen steht ist der Name des Schemas (ich nutze PostGreSQL 8.4). Ich nutze PHP 5.3 + Apache.
Hoffe das sind genügend Infos.
Gruß, phil