problem mit cookies
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufwand
auswahl
besucher
datei
derma
domain
einstellung
eintrag
injektion
lage
leben
load
login
objekt
pawort
sekunde
session
speicher
username
weiterleitung
-
Hallo leute
ich möchte gerne eine Wiederkerfunktion schreiben, habe aber ein kleines Problem...
Das Folgende Script steht vor jeglicher ausgabe, also liegt es schonmal nicht daran, aber der cookie username bzw. passwort wird nicht erstellt oder ist leer...
if($_GET['ct'] == "login") { if($_POST['merken'] == "merken") { if($username != "" OR $passwort != "") { $abfragesetc = "SELECT * FROM rsbenutzer WHERE username LIKE '$username' LIMIT 1"; $ergebnissetc = mysql_query($abfragesetc); $rowsetc = mysql_fetch_object($ergebnissetc); if($rowsetc->gesperrt != "ON") { $username = $rowsetc->username; setcookie("username",$username,time()+(3600*24)); setcookie("passwort",$passwortmd5,time()+(3600*24)); } } } } elseif($_GET['ct'] == "logout") { setcookie("username","",time() - 3600); setcookie("passwort","",time() - 3600); }
Wäre nett, wenn mir jemand helfen könnte...
Gruß
Technofan
Beitrag geändert: 1.11.2007 10:26:33 von technofan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ja, das Auslesen klapt, hab ich mit der fertigen Variante, also ohne schleifen getestet.
darum geht es sich aber nicht, der coockie wird garnet erst gesetzt.
und das seriali dingsbums, was du da erwähnst is meines erachtens net nötig... will ja einfach nur, dass man automatisch wieder eingelogt ist, mehr net.
-
Die Variable $passwortmd5, die du in Zeile 14 in den Cookie schreiben willst, ist nicht definiert. Außerdem wird in deinem Script nirgens überprüft, ob das eingegebene Passwort korrekt ist. Du wirst erst $passwort in MD5 umwandeln müssen, das dann mit dem in der gespeicherten Hash vergleichen und dann das richtige Passwort als Hash in den Cookie schreiben.
Außerdem ist dein Script sehr anfällig gegenüber SQL-Injections, nur so am Rande. ;)
http://de.wikipedia.org/wiki/SQL-Injektion
Das was der Benutzer eingibt, wird direkt als Teil eines SQL-Befehls an die Datenbank gesendet. Da solltest du dir noch was überlegen.
-
if($_POST['merken'] != "") { $abfragesetc = "SELECT * FROM rsbenutzer WHERE username LIKE '".$_POST['username']."' LIMIT 1"; $ergebnissetc = mysql_query($abfragesetc); $rowsetc = mysql_fetch_object($ergebnissetc); if($rowsetc->gesperrt != "ON") { $user = $_POST['username']; $pw = $_POST['password']; $pwmd5 = md5($pw); if($rowsetc->passwort == $pwmd5) { setcookie("username",$user,time()+(3600*24)); setcookie("passwort",$pwmd5,time()+(3600*24)); } } else { setcookie("username","",time() - 3600); setcookie("passwort","",time() - 3600); } }
so, habs nochmal kompletiert...
Injektionen = Unmöglich, weil nur ausgelesen wird und net eingetragen. <.< -
Vielleicht verweigert einfach dein Browser Cookies. Hast das schonmal überprüft?
@serialisierung: Naja, man hat damit eigentlich nur Vorteile. ;) Und ich würd den ganzen Cookie Set /Unset Krams in eine Login/Logout Funktion packen. Das ist wesentlich übersichtlicher
// code der immer ausgeführt wird ... // handle login, if requested if ($act == 'login') { login(); } if ($act == 'logout') { logout(); } ... if (Cookie::exists('meincookie') && !isset($_SESSION['user'])) { // Member logged in via cookie ^_^ $cookie = new Cookie('meincookie'); $cookie->load(); // display this users homesite if his cookie is valid $cookieUser = $cookie->getValue(); $meinUser = new MeinUser($cookieUser->id); $meinUser->load(); $meinUser->setIsLoggedIn(true); $sessionUser = new SessionUser(); $sessionUser->id = $meinUser->getID(); $sessionUser->email = $meinUser->getEMail(); $sessionUser->name = $meinUser->getName(); $sessionUser->status = $meinUser->getStatus(); $sessionUser->loggedIn = $meinUser->isLoggedIn(); $user = $sessionUser; } else if (isset($_SESSION['user'])) { // Member logged in via session id // when this is a MeinUser, then replace it with SessionUser $user = unserialize($_SESSION['user']); if (is_a($user,'MeinUser')) { // TODO: improve this!!! $sessionUser = new SessionUser(); $sessionUser->id = $user->getID(); $sessionUser->email = $user->getEMail(); $sessionUser->name = $user->getName(); $sessionUser->status = $user->getStatus(); $sessionUser->loggedIn = $user->isLoggedIn(); $user = $sessionUser; } } else { // It's a guest! // Hier den Krams für gäste handhaben }
So etwa sieht das in einem Projekt aus an dem ich derzeit arbeite. Die KLassen sind simpel aufgebaut und dienen nur als Datencontainer.
In Login wird jenachdem was beim Login angegeben wurde ein COokie erstellt bzw ein Session Objekt. Ganz simpel ;) -
also, so wie du das machst, geht das bei mir net, weil bei mir alles in den content includet wird, ich kann also keine extradatei machen, und so wie du des machst ist es auch zu kompliziert finde ich... warum so viel Aufwand, wenns auch kürzer geht... aber zu allem Überfluss musste ich gerade feststellen, dass der IE nicht in der Lage ist eine Session zu speichern... er logt sich kurz ein, und sobald man iwo draufklickt, ist man wieder ausgelogt, ist aber nur beim IE so
-
ok, ich hab die Lösung beider Probleme...
Leute, ich sach euch eins... geht Nie zu United Domains nie im Leben!!!!!!!!!!!!!!!!!
Die Weiterleitung von denen ist sowas von dermaßen bescheuert, das glaubt ihr net, nur der Frame macht das, was man will, aber wer will schon ne Frameweiterleitung? XD
ich habe mich bei mir mit dem IE auf www.x-musik.com einmal mit der Domain von United Domains eingelogt und einmal mit der eigentlichen Domain von mit... mit UD gings nur 2 Sekunden und mit meiner eigenen gings ganze... ja, unendlich eben. XD
genau das gleiche mit dem Cookies... ohne UD gings und mit nicht
oder gibt's bei UD ne Einstellung??? weil meine Besucher haben auch ca. alle 5 sec ne andere IP. XD -
also, so wie du das machst, geht das bei mir net, weil bei mir alles in den content includet wird, ich kann also keine extradatei machen, und so wie du des machst ist es auch zu kompliziert finde ich... warum so viel Aufwand, wenns auch kürzer geht... aber zu allem Überfluss musste ich gerade feststellen, dass der IE nicht in der Lage ist eine Session zu speichern... er logt sich kurz ein, und sobald man iwo draufklickt, ist man wieder ausgelogt, ist aber nur beim IE so
Naja, mag kompliziert sein, aber ich brauch das auch an sehr vielen Stellen. Die Datei in der das steht wird am Anfang eingebunden und liest noch so einiges anderes aus. Konfig Datei, Templates, etc ;) -
ok, ich hab die Lösung beider Probleme...
Leute, ich sach euch eins... geht Nie zu United Domains nie im Leben!!!!!!!!!!!!!!!!!
Die Weiterleitung von denen ist sowas von dermaßen bescheuert, das glaubt ihr net, nur der Frame macht das, was man will, aber wer will schon ne Frameweiterleitung? XD
ich habe mich bei mir mit dem IE auf www.x-musik.com einmal mit der Domain von United Domains eingelogt und einmal mit der eigentlichen Domain von mit... mit UD gings nur 2 Sekunden und mit meiner eigenen gings ganze... ja, unendlich eben. XD
genau das gleiche mit dem Cookies... ohne UD gings und mit nicht
oder gibt's bei UD ne Einstellung??? weil meine Besucher haben auch ca. alle 5 sec ne andere IP. XD
Ich bin bei United-Domains und bei mir funktioniert alles einwandfrei. Da können die Jungs von United Domains doch nichts dafür, wenn du deine Seite mit einem Frame weiterleiten lässt? Bei United Domains hat man 3 oder 5 Weiterleitungsarten zur Auswahl!! ;) -
Ich bin bei United-Domains und bei mir funktioniert alles einwandfrei. Da können die Jungs von United Domains doch nichts dafür, wenn du deine Seite mit einem Frame weiterleiten lässt? Bei United Domains hat man 3 oder 5 Weiterleitungsarten zur Auswahl!! ;)
Ich lasse meine Seite eben nicht via Frame weiterleiten, sondern via Header. x.x
und meine Besucher haben alle 5 sec ne neue IP, was wiederum bewirkt, dass die cookies zwar gesetzt werden, aber dann nicht mehr gefunden werden können, weil: andere IP ... Uploads sind genau so unmöglich, da der Request nicht stabiel gesendet werden kann
evil-devil schrieb:
Naja, mag kompliziert sein, aber ich brauch das auch an sehr vielen Stellen. Die Datei in der das steht wird am Anfang eingebunden und liest noch so einiges anderes aus. Konfig Datei, Templates, etc ;)
Ja siehste, dann ist das ja für mich überflüssig ^^ ich hab auch eine Datei, die für Jede Kategorie Eintragungen Vornimmt (Forum: Neues Thema, Antworten, Editiren, beiträge löschen, themen löschen... Gästebuch: Eintrag schreiben, Eintrag kommentieren, Eintrag löschen... und sämtliches halt) und das alles mit 4 Funktionen, die sich der jeweiligen Kategorie anpassen. ^^ -
Ich lasse meine Seite eben nicht via Frame weiterleiten, sondern via Header. x.x
und meine Besucher haben alle 5 sec ne neue IP, was wiederum bewirkt, dass die cookies zwar gesetzt werden, aber dann nicht mehr gefunden werden können, weil: andere IP ... Uploads sind genau so unmöglich, da der Request nicht stabiel gesendet werden kann
Dann mach doch mal per DNS-Control. So mach ich das und hatte damit noch nie Probleme. Das ist sowieso die beste Variante ;) -
Tja, wenns das bei United-Domains gibt, versuch ich das mal
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage