Mit Cookie Session´s aktuallisieren

VanHellsehn

Erfahrenes Mitglied
Hi,
Ich habe mal ne frage.
Und zwar habe ich ein Login mit Sessions. Nur leider ist die Lebensdauer der Session nicht so optimal.
Deswegen habe ich zwei Cookie´s setzten lassen.
Login = Username
Login2 = Passwort
Nur Leider klappt folgender Code nicht.

PHP:
if(isset($_COOKIE['login'])) {
$lastonline = date("d.m.Y (H:i)"); 
$name2 = $_COOKIE['login'];
$pw2 = $_COOKIE['login2'];
$sql = "SELECT * FROM `benutzerdaten` WHERE (`Nickname` = '".$name2."') AND (`Kennwort` = '".$pw2."')"; 
$result = mysql_query($sql) or die(mysql_error()); 
if (mysql_num_rows($result) > 0) { 
mysql_query("UPDATE benutzerdaten SET Lastonline = '".$lastonline."' WHERE `Nickname`= '".$name2."'") or die(mysql_error());
  $data = mysql_fetch_assoc($result) or die(mysql_error()); 

  $_SESSION["user_id"] = $data["id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 

etc....


}
}

PS: Das Passwort werde ich noch verschlüsseln..
 
Mach es besser wie folgt: Statt Benutzername und Kennwort in Cookies zu speichern, wird stattdessen nur ein zufälliger Schlüssel gespeichert, der zur Identifikation dient. Eben ähnlichen der Sitzungs-ID, nur dass diese eine längere Lebensdauer hat. Dieser Zufallsschlüssel („user_token“) wird auch in der Datenbank gespeichert, um den jeweiligen Benutzer identifizieren zu können.
PHP:
session_start();

if( !isset($_SESSION['CREATED']) || $_SESSION['CREATED']+ini_get('session.gc_lifetime')>time() ) {
	session_regenerate_id(true);
	$_SESSION['CREATED'] = time();
}
if( !isset($_SESSION['user_id']) ) {
	if( isset($_COOKIE['user_token']) ) {
		$query = 'SELECT * FROM `benutzerdaten` WHERE `token` = "'.mysql_real_escape_string($_COOKIE['user_token']).'"';
		$result = mysql_query($query) or die(mysql_error());
		if( mysql_num_rows($result) ) {
			$data = mysql_fetch_assoc($result) or die(mysql_error());
			$_SESSION["user_id"] = $data["id"];
			$_SESSION["user_nickname"] = $data["Nickname"];
			$_SESSION["user_nachname"] = $data["Nachname"];
		} else {
			// Authentifizierung fehlgeschlagen
		}
	}
}
if( !isset($_SESSION['user_id']) ) {
	// Benutzer muss sich authentisieren
} else {
	$userToken = md5(uniqid(rand());
	$query = 'UPDATE `benutzerdaten` SET `token`="'.$userToken.'" WHERE `id`='.$data['id'];
	mysql_query($query) or die(mysql_error());
	setcookie('user_token', $userToken, time()+60*60*24*14);
	$_SESSION['user_token'] = $userToken;
	$_COOKIE['user_token'] = $userToken;
}
Ich hoffe da ist kein grundlegender Fehler drin.
 
Zurück