Hallo.
Danke für Eure Zeit und Mühen. Hier meine Fragen:
1.
Wie lösche ich einen Cookie?
2.
Kann ich einen Array in einem Cookie benutzen (Einlesen/Auslesen)?
3.
Yahoo Mail und andere bieten ein "Remember my Login" über Cookies an. Wie wird dies geschafft, ohne zur signifikanten Sicherheitslücke zu werden? Dasselbe will ich auch tun.
Was ist ein Hash (betrifft Passwort-Speicherung in der DB)?
Ich habe bereits im Forum recherchiert und diverse Cookie-betreffende Beiträge gelesen, bin aber in diesen drei Punkten noch nicht von Weisheit erleuchtet worden (obwohl teilweise gute Beiträge im Forum vorhanden sind). Ich würde mich daher sehr über Eure Hilfen freuen.
Grüße,
Sven
Ankündigung
Einklappen
Keine Ankündigung bisher.
Cookies: verschiedene Fragen
Einklappen
Neue Werbung 2019
Einklappen
X
-
Cookies: verschiedene Fragen
Stichworte: -
-
Ein Gast antworteteWie ich oben sagte :wink:
Das mit der Cookie Domain kann man glaube ich vernachlässigen, weil bei keiner Angabe automatisch die Domain genommen wird, von der Site die das Cookie gesetzt hat.
Einen Kommentar schreiben:
-
HEUREKA!
Es hat geklappt. Alles funktioniert jetzt. Ich hätte zwecks Kompatibilität vor dem Cookiesetzen "base64_encode($Daten)" verwenden sollen, und nach dem Cookieauslesen und vor unserialize "base64_decode($Daten)".
Vielen Dank an alle, vielen Dank an Afrob.
Sven
Einen Kommentar schreiben:
-
Eine weitere Frage ist, wie ich sicherstelle, daß nur meine Website den Cookie lesen darf.
Ich denke, es gibt da die Möglichkeit, die erlaubte Website im Cookie zu nennen. Wie ist dafür die richtige Schreibweise, wenn die Ziel-Website "http://Loesung.DesProblems.de" heißt?
Sven
Einen Kommentar schreiben:
-
Hallo Afrob,
mein PHP-Code transformt den Array ordnungsgemäß in einen serialisierten String, und speichert den Cookie ebenfalls ordnungsgemäß.
Auch wird der serialisierte String ordnungsgemäß aus dem Cookie wieder ausgelesen. Jedoch - und hier kommt das Problem - wird der serialisierte String nicht mittels "unserialize()" wieder in einen Array verwandelt (siehe Code). Woran liegt's? Kannst Du es erkennen?
PHP-Code:<?php
$Daten=$_COOKIE["FNR"];
$Info=unserialize($Daten); // Test-Routine folgt:
echo("Daten: ".$Daten."
");
echo("
Unserialized Daten zu Info Indexes: ".$Info["Username"]." und ".$Info["Password"]."
Print_R: ");
print_r($Info);
?>
Daten: a:2:{s:8:\"Username\";s:15:\"Sven Littkowski\";s:8:\"Password\";s:7:\"Higgins\";}
Unserialized Daten zu Info Indexes: und
Print_R
$Daten wird also noch erkannt, aber die Umformung haut nicht mehr hin. Kannst Du den Fehler erkennen, den zu entdecken mir versagt bleibt? Grüße,
Sven
Einen Kommentar schreiben:
-
Zitat von AfrobDer Code sieht grundsätzlich richtig aus für mich. Checke halt mal genau, ob alle Variablen/Arrays richtige Werte haben. Arrays mit print_r() ausgeben. Wurde das Cookie auch wirklich gesetzt? Beachte auch, dass du bevor du das Cookie ausliest keine echo Ausgaben machst! Und schreibe ganz am Anfang vom Script error_reporting(E_ALL);, vielleicht werden wichtige Fehlermeldungen unterdrückt.
mein PHP-Code transformt den Array ordnungsgemäß in einen serialisierten String, und speichert den Cookie ebenfalls ordnungsgemäß.
Auch wird der serialisierte String ordnungsgemäß aus dem Cookie wieder ausgelesen. Jedoch - und hier kommt das Problem - wird der serialisierte String nicht mittels "unserialize()" wieder in einen Array verwandelt (siehe Code). Woran liegt's? Kannst Du es erkennen?
PHP-Code:<?php
$Daten=$_COOKIE["FNR"];
$Info=unserialize($Daten); // Test-Routine folgt:
echo("Daten: ".$Daten."
");
echo("
Unserialized Daten zu Info Indexes: ".$Info["Username"]." und ".$Info["Password"]."
Print_R: ");
print_r($Info);
?>
Daten: a:2:{s:8:\"Username\";s:15:\"Sven Littkowski\";s:8:\"Password\";s:7:\"Higgins\";}
Unserialized Daten zu Info Indexes: und
Print_R
$Daten wird also noch erkannt, aber die Umformung haut nicht mehr hin. Kannst Du den Fehler erkennen, den zu entdecken mir versagt bleibt? Grüße,
Sven
Einen Kommentar schreiben:
-
Ein Gast antworteteDer Code sieht grundsätzlich richtig aus für mich. Checke halt mal genau, ob alle Variablen/Arrays richtige Werte haben. Arrays mit print_r() ausgeben. Wurde das Cookie auch wirklich gesetzt? Beachte auch, dass du bevor du das Cookie ausliest keine echo Ausgaben machst! Und schreibe ganz am Anfang vom Script error_reporting(E_ALL);, vielleicht werden wichtige Fehlermeldungen unterdrückt.
Einen Kommentar schreiben:
-
Hallo Afrob,
zunächst vielen Dank für Deine Mühe und Zeit. Dein Lösungsvorschlag ist sehr interessant, und ich habe versucht, ihn umzusetzen.
Nach erfolgreichem Login wird ein Cookie gespeichert, der den Username und das Password beinhaltet (hier noch vollkommen unkodiert). Der LoginDatensatz enthält die gewünschten Daten.
Nach erfolgreichem Login (Login-Check-Page)
PHP-Code:<?php
$Info=array("Username"=>$LogInDatensatz["Username"],"Password"=>$LogInDatensatz["Password"]);
$Daten=serialize($Info);
setcookie("FNR",$Daten,time()+3600,"/","Navis.TerraRomana.org");
?>
Auf der Login-Seite dagegen befindet sich der Auslesecode, der aus Testgründen zunächst nichts weiter tun soll als die zwei Werte anzuzeigen.
Vor dem Login (Login-Page)
PHP-Code:<?php
$Daten=$_COOKIE["FNR"];
$Info=unserialize($Daten);
echo($Info["Username"]." - ".$Info["Password"]);
?>
Jedoch wird nichts als der von mir vorgegebene Verbindungsstrich (zwischen den Werten) angezeigt. Ich meine, ich hätte alles richtig gemacht. Siehst Du das auch so? Liegt der Fehler an mir?
Bitte helfe mir nochmals darin, wenn Du die Zeit hast. Vielen Dank. Grüße,
Sven
Einen Kommentar schreiben:
-
Ein Gast antworteteEin Cookie kann man löschen, in dem man das gleiche Cookie nochmal setzt, mit einer negativen Gültigkeitsdauer. Eine andere Möglichkeit ist mir nicht bekannt.
Um ein Array in einem Cookie zu nutzen, mache ich aus dem Array einen String mit serialize(). Beim Auslesen dann unserialize(), um das Array wieder zu bekommen.
Edit: Den Serialize String könnte man noch mit base64_encode() bearbeiten und dann ins Cookie setzen. Dann gibt es keine Probleme mit irgendwelchen Zeichen.
Einen Kommentar schreiben:
Einen Kommentar schreiben: