Session einen Tag lang registriert lassen

Hallo zusammen,

ich habe noch etwas entdeckt, das mich verwirrt. Wenn ich ein folgenden Code schreibe, wird nichts angezeit:

PHP:
echo $row[0];
echo $row[1];

Wiso wird da nichts angezeigt? Sollte doch, oder! Ich wollte nur mal Prüfen, was er da aus gibt, denn im Verlaufe des Scripts prüfe ich, ob die $row[0] der $id enstricht. Aber wenn da nichts drinn steht, schlägt die Abfrage immer fehl (könnt ihr aus dem oberen Thread erkennen)!

Danke
Euer Pinky
 
Ich hab in dem Tutorial geschrieben, daß VOR dem setzen des Cookies bereits seine Berechtigung geprüft wurde.
Sprich, nur gültige Logins bekommen einen neuen Cookie.
Ausserdem liegt es immer in deiner "Macht" den Zeitpunkt zu setzen!

Zu den $row[0]:
Weiter oben benutzt du [phpf]mysql_fetsch_assoc[/phpf], das kommen keine numerischen Schlüssel mit.
 
Halli hallöchen,

habe mysql_fetch_assoc in mysql_fetch_array geänder sowie alle dazugehörigen $tmp Variablen.

Es funktioniert aber immer noch ned.

Nun habe ich mal ne frage. Aus deiner Antwort sehe ich, dass du dein Script so aufgebaut hast, dass mann zuerst eine Funktion schreiben soll, ob der User die richtigen Daten eingegeben hat, erst dann, wenn dieser Fall eintritt, dein Script einfügen.

Oder sehe ich da etwas falsch? Das heisst dann, dass der Login klappt, dann aber der md5-Wert verändert wird, damit keine Kopie oder sowas gemacht werden kann. Sehe ich das richtig?

Zum dem echo $row[0]; Problem, es zeigt mir die Variabel immer noch nicht an. Dort sollte doch die ID von oben stehen. Wenn ich aber oben echo $tmp[0]; mache, zeigt es mir die ID an. Woran ligt das? Warum wird der $row[0]; keine ID zugewiesen?

Vielen Dank
Euer Pinky
 
Hallo Alle, ich habe etwas sehr interessantes entdeckt. Bin ganz :confused:!

Wenn ich folgenden Code durchlaufen lasse, (man beachte die echo's im zweiten Tiel das Scripts):

PHP:
// ERSTER TEIL
<?php
$user_id = 1;
$jetzt = time();
$der_neue_cookie_wert = md5($jetzt.$user_id);
setcookie ('user_id',$user_id, time()+60*60*24*7*2);
setcookie ('cookiewert',$der_neue_cookie_wert, time()+60*60*24*7*2);
mysql_query('UPDATE user SET cookiewert="'.$der_neue_cookie_wert.'" WHERE id='.$user_id.';');
?>


PHP:
// ZWEITER TEIL
<?php
// Auf Manipulation ueberpruefen
$id_pruefen = htmlentities($_COOKIE['user_id']);
echo "$id_pruefen";  echo "<br>";
$string_pruefen = htmlentities($_COOKIE['cookiewert']);
$auswahl = mysql_escape_string($string_pruefen);
echo "$auswahl"; echo "<br>";
$query = @mysql_query('SELECT * FROM user WHERE id = "1"');
$row = mysql_fetch_array($query);
echo $row['cookiewert']; echo "<br>";
// Jetzt die Unterscheidung und der Vergleich
if($row[0] == $id_pruefen) { echo "// User ist berechtigt"; }
else { echo "// User ist nicht berechtigt"; }
?>

kommt folgende Ausgabe:

1 // AUSGABE VON echo "$id_pruefen";
9288ecfdaaf57404fb763a8a48854a9b // AUSGABE VON echo "$auswahl";
ac259092668c505e221e68e22b56930b // AUSGABE VON echo $row['cookiewert'];
// User ist berechtigt // AUSGABE VON if/else-Funktion

Man beachte, dass die zwei md5-Werte voneinander abweichen. So kann auch folgende Auwahl der ID nicht durchführen, weil die Werte eben voneinander abweichen. Folgender Code stammt von dem Originalscript:
PHP:
$query = @mysql_query('SELECT id FROM user WHERE cookiewert="'.mysql_escape_string($string_pruefen).'";');

Das kann ja nie gehen, da die md5-Werte immer voneinander abweichen werden. Wie muss ich das lösen?

Vielen Dank
Euer Pinky
 
Zuletzt bearbeitet:
Befinden sich beide Teile in dem selben Skript? Wenn ja, dann verteile mal beide Teile auf unterschiedliche Skripte.
 
Jawohl, das war die Lösung des Problems, vielen Dank, dass du mir zur so später Stunde noch geantwortet hast!

Danke
Euer Pinky
 
Zurück