phil: header location problem

Beitrag lesen

Hi.

public function Login()  
	{  
		// Falls Benutzername UND Passwort eingegeben wurden  
		if(isset($_POST['loginName']) && isset($_POST['loginName']))  
		{  
			// Anzahl der Versuche, maximal X  
			if (!isset($_SESSION['try'])) {  
				$_SESSION['try']=1;  
			} elseif($_SESSION['try']>$this->max_trys) {  
				#tools::goTo("Auth/Passwort_vergessen","",true);  
			} else {  
				++$_SESSION["try"];  
			}  
			$model=new Models_Auth();  
			if($result=$model->checkUser())  
			{  
				// Zufalls Key  
				$key=md5(rand(0,99).self::$thekey.uniqid(rand(), true));  
				// Zeit des Cookies auf "Nur-für-diese-Sitzung" setzen  
				$time=0;  
				// für immer eingeloggt bleiben?  
				if(isset($_POST['alwaysLogged'])){  
					$time=time()+321408000; # 10 Jahre  
				}  
				// Cookie setzen  
				setcookie(self::$cookiename, $key, $time,'/','', false, true);  
				// Sitzung eintragen in die DB  
				$setSession=$model->insertSession($result[0]['uid'],$result[0]['loginname'],$key);  
				if($setSession[0]==true){  
					// Session setzen  
					$_SESSION['auth_logged']	=true;  
					$_SESSION['auth_userid']	=$result[0]['uid'];  
					$_SESSION['auth_loginname']	=$result[0]['loginname'];  
					// Weiterleiten  
					header("Location: http://example.com/para1/para2/para3");  
					exit();  
				}  
				$_SESSION['auth_userid']=0;  
				// Falls erstellen einer Session nicht klappt  
				tools::goNext("/Auth/show/Check/Login/false");  
			} else {  
				$_SESSION['auth_userid']=0;  
				tools::goNext("/Auth/show/Check/Login/false");  
			}  
		} else { // Falls Benutzername oder Passwort NICHT eingegeben wurden  
			$_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()  
	{  
		// Falls ein "@" im Loginnamen ist, handelt es sich um eine E-Mail  
		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'")){  
					// Falls es bei den E-Mails kein Ergebnis gab, nochmal User probieren  
					$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 {// Falls es sich um einen Usernamen (ohne "@") handelt..  
			$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;  
			  
	}  
  
  
	/**  
	* Trägt neue Login-Session ein  
	*/  
	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