| Neuer Benutzer
Registriert seit: 17.11.2008
Beiträge: 20
| [Erledigt] Cookies funktionieren nicht... Hallo Leute,
langsam bin ich am verzweifeln, und ihr seid meine letzte Hoffnung.
Bisher habe ich die Sitzungsverwaltung meiner Website auschliesslich
über $session gelöst. Einige User hatten aber nun den Wunsch ihre
Sitzungenlänger "haltbar" zu machen. Daher möchte ich sie Session-ID
nun in einem Cookie abspeichern...
Aber aus irgendeinem Grund wird der Cookie nicht gespeichert (Dabei nehme ich mit dem Browser derzeit ALLE Cookies an!).
Am Besten zeige ich euch mal die Codeschnipsel meiner Login-Verwaltung (Website dazu ist Avalon die Aion Gilde).
So war es bisher: PHP-Code: <?php
session_start();
?>
<!--- Login verwalten --->
<?php
if ($login) {
$error=1;
$Player_Name = $_POST['acc'];
$Player_Passwort = $_POST['pwd'];
$query = "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
$result = mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " . mysql_error());
$zaehler = mysql_num_rows($result);
$row = mysql_fetch_row($result);
$Player_ID = $row[0];
if ($Player_Passwort=="") {
if ($zaehler>0) {
}
else {
}
}
else {
if ($zaehler == 1){
while ($error >= 1){
$zeit = time();
$session = "";
srand ((float) microtime() * 10000000);
$input = array ("1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$rand_keys = array_rand ($input, 30);
for ($i=0; $i<30; $i++) {
$session=$session.$input[$rand_keys[$i]];
}
$query = "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " . mysql_error());
$error = mysql_num_rows($result);
if ($error == 0) {
$query = "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
$query = "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
$result = mysql_query($query) or die("Session konnte nicht angelegt werden: " . mysql_error());
$_SESSION['id']=$session;
echo "Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
}
}
}
}
}
if ($logout) {
$query = "DELETE FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
session_unset();
$_SESSION=array();
$site="news";
}
?>
<!--- Sitzung abrufen --->
<?php
$session=$_SESSION['id'];
Nun möchte ich beides zusammenführen, etwa so: PHP-Code: <?php
session_start();
?>
<!--- Login verwalten --->
<?php
if ($login) {
$error=1;
$Player_Name = $_POST['acc'];
$Player_Passwort = $_POST['pwd'];
$query = "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
$result = mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " . mysql_error());
$zaehler = mysql_num_rows($result);
$row = mysql_fetch_row($result);
$Player_ID = $row[0];
if ($Player_Passwort=="") {
if ($zaehler>0) {
}
else {
}
}
else {
if ($zaehler == 1){
while ($error >= 1){
$zeit = time();
$session = "";
srand ((float) microtime() * 10000000);
$input = array ("1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$rand_keys = array_rand ($input, 30);
for ($i=0; $i<30; $i++) {
$session=$session.$input[$rand_keys[$i]];
}
$query = "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " . mysql_error());
$error = mysql_num_rows($result);
if ($error == 0) {
$query = "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
$query = "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
$result = mysql_query($query) or die("Session konnte nicht angelegt werden: " . mysql_error());
$_SESSION['id']=$session;
setcookie("UserSession", "$session", (time()+60*60*24*30));
echo "Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
}
}
}
}
}
if ($logout) {
$query = "DELETE FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
session_unset();
$_SESSION=array();
$_COOKIE['UserSession']="";
$site="news";
}
?>
<!--- Zustzliche Parameter erzeugen --->
<?php
$session=$_SESSION['id'];
if ($_COOKIE['UserSession']<>"") {
$session=$_COOKIE['UserSession'];
}
Aber auch wenn ich die SESSION dann ganz herausnehme funktioniert es nicht... PHP-Code:
<!--- Login verwalten --->
<?php
if ($login) {
$error=1;
$Player_Name = $_POST['acc'];
$Player_Passwort = $_POST['pwd'];
$query = "SELECT Members_ID FROM Members WHERE Members_Name = '$Player_Name' AND Members_Password = '$Player_Passwort' AND Members_Rank<=".$minlevellogin;
$result = mysql_query($query) or die("Accountdaten konnten nicht ermittelt werden: " . mysql_error());
$zaehler = mysql_num_rows($result);
$row = mysql_fetch_row($result);
$Player_ID = $row[0];
if ($Player_Passwort=="") {
if ($zaehler>0) {
}
else {
}
}
else {
if ($zaehler == 1){
while ($error >= 1){
$zeit = time();
$session = "";
srand ((float) microtime() * 10000000);
$input = array ("1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$rand_keys = array_rand ($input, 30);
for ($i=0; $i<30; $i++) {
$session=$session.$input[$rand_keys[$i]];
}
$query = "SELECT Sessions_ID FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Es konnte nicht ermittelt werden ob die Session schon existiert: " . mysql_error());
$error = mysql_num_rows($result);
if ($error == 0) {
$query = "DELETE FROM Sessions WHERE Sessions_MemberID='$Player_ID'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
$query = "INSERT INTO Sessions VALUES ('$session', '$Player_ID', $zeit)";
$result = mysql_query($query) or die("Session konnte nicht angelegt werden: " . mysql_error());
setcookie("UserSession", "$session", (time()+60*60*24*30));
echo "Sitzung: ".$session." - Cookie: ".$_COOKIE['UserSession'];
}
}
}
}
}
if ($logout) {
$query = "DELETE FROM Sessions WHERE Sessions_ID='$session'";
$result = mysql_query($query) or die("Bestehende Session konnte nicht gelöscht werden: " . mysql_error());
$_COOKIE['UserSession']="";
$site="news";
}
?>
<!--- Zustzliche Parameter erzeugen --->
<?php
if ($_COOKIE['UserSession']<>"") {
$session=$_COOKIE['UserSession'];
} Ich hofe jemand von euch findet den Fehler, ich bin wohl inzwischen Betriebsblind
Vielen, Vielen Dank im Voraus! |