setcookie() funktioniert nicht
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abteilung
anzeigen
code
datenbank
ergebnis
falsche eingabe
gleichheit
header
login
machen
output
punkt
schach
setzen
tag
text
verbesserung
verbindung
vergleichen
-
Hallo,
Ich möchte einen 14 Tage lang gültigen login machen, also auch dann, wenn keine Session mehr da ist.
ich übergebe einer php datei ob das gewollt wurde oder nicht:
<?php session_start(); ?> <?php $verbindung = mysql_connect("mysql.lima-city.de", "USER******" , "*********") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db_******_2") or die ("Datenbank konnte nicht ausgewählt werden"); $username = $_POST["username"]; $passwort = hash(sha512,$_POST["password"]); $login = $_POST["timelesslogin"]; $password = $_POST["password"]; $cookie_array = array($username, $username); $cookie = implode(";", $cookie_array); $abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); if($row->passwort == $passwort) { $_SESSION["username"] = $username; if($login = "true"){ $funzt = setcookie("Loginabtschach",$cookie,time()+60*60*24*14,"/admin/",".abteilung-schach.tk"); if($funzt = true){ echo("jey"); //hier wird dann auch jey ausgegeben, aber weiter im text: } } echo '<html> <head> <meta http-equiv="refresh" content="0; URL=http://abteilung-schach.tk/admin/administration.php"> </head> </html>'; exit(); } else { echo 'Falsche Eingabe'; echo '<html> <head> <meta http-equiv="refresh" content="0; URL=http://abteilung-schach.tk/admin/login.html"> </head> </html>'; //header('Location: http://abteilung-schach.tk/admin/login.html); } ?>
und lasse dann lasse ich mir die Variable $_COOKIE ausgeben (in der Hauptdatei)
print_r($_COOKIE);
aber da ist kein Cookie von mir dabei
weiß jmd warum?
Beitrag zuletzt geändert: 15.2.2014 18:27:30 von matthias-detsch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dein Script ist lausig. Aber das war ja nicht die Frage.
print_r ($_COOKIE['Loginabtschach']);
Wird dir dann auch das Cookie anzeigen. Und bei jedem Browser kann man sich auch die Cookies anzeigen lassen, die vorhanden sind.
Kommen wir mal zu einigen Verbesserungen:
in der SQL Abfrage (mal abgesehen, dass du die Usereingabe nicht validiert hast mit zum Beispiel mysql_real_escape_string) fragst du den Benutzernamen mit LIKE ab. Warum fragst du nicht den Benutzernamen direkt ab? Und warum fargst du nicht auch gleich nach dem Passwort in der SQL Abfrage?
So musst du es nicht mit PHP vergleichen, sondern es macht dann ja gleich die Datenbank, erhälst du ein Ergebnis ist alles gut, erhälst du kein Ergebnis gibt es entweder den User nicht, oder das Passwort ist falsch.
Bei if mit Variablen nur ein = zusetzen ist gefährlich, du setzt die Variable auf true. Bei vergleichen nimmt man doch zwei? Also ==
-
Nun... Immerhin funktioniert jetzt das Setzen des Cookies, auch wenn aus irgendeinem Grund jetzt ständig weiterleitungen zwischen hauptseite und login sin, deswegen habe ich den login damit erstmal entnommen.
Danke für eure beiden Antworten -
Du darfst nicht schreiben
if($login = "true");
denn damit belegst du es, sondern
if($login == "true");
so fragst du auf gleichheit.
anderer punkt: deine variable $login wird immer true sein, wenn ein Passwort übergeben wurde und fragt nicht ab ob es das richtige ist, da es weiter oben mit einem übergebenen $_POST[]; belegt wird.
Beitrag zuletzt geändert: 16.6.2014 22:25:48 von buergerforum -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage