20. februar 2003 - 10:37Der er
32 kommentarer og 1 løsning
Problemer med cookies og login
Jeg kan ikke få cookies til at virke på min homepage. Jeg prøver at lave et autologon script ved brug af cookies, men det virker ikke. Brugeren skal kunne vælge om han/hun skal logges ind automatisk eller ej. Her er scriptet:
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
baronen> sæt det her ind før header("Location:$current_page"); :
$check = mysql_query("SELECT brugerid FROM team WHERE brugerid='brugerid' AND brugernavn='$_COOKIE[\'brugernavn\']' "); if ($check) { header("Location:$current_page"); } else { header ("Location:default.php"); }
$check = mysql_query("SELECT * FROM team WHERE id='brugerid' AND nick='brugernavn' "); if ($check) { header("Location:$current_page"); } else { header ("Location:default.php"); }
"$current_page" ska så være en anden side en den der checker cookien.
du ka også sige:
$check = mysql_query("SELECT * FROM team WHERE id='brugerid' AND nick='brugernavn' "); if ($check) { header("Location:LOGINDSIDEN.php"); } else { include ("default.php"); }
eller det her:
if (brugerid && brugernavn) { header("Location:LOGINDSIDEN.php"); } else { include ("default.php"); }
dvs. i princippet kan man bare skrive logindsiden.php i adressen, så kommer man ind på siden?
Jeg skal bare have muligheden for at lave cookies på min side, så folk bliver logget ind automatisk. Jeg kan ikke se hvor du er på vej hen med det der...
sessions er fint, når brugeren er inde.. men du ska bruge cookies til at genkende brugeren, når han kommer tilbage til siden. det samlede script kunne se således ud (har byttet om på default og login og tilføjet "lidt"):
på alle "hemlige sider ska du bare sætte det her i toppen": include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$brugernavn' AND pass='$pass'"); if (!$check) { echo "Denne side kan kun ses hvis du er logget og det er du ikke, buhu.<br><a href=\"default.php\">Log ind</a>""; }
<--- conn.php ---> @mysql_connect(localhost, DBlogin, DBpass) or die (databasefejl); mysql_select_db(DBnavn) or die ($fejl);
<--- default.php ---> include ("conn.php"); $query = mysql_query("SELECT * FROM team WHERE id='brugerid' AND nick='brugernavn' "); $row = mysql_fetch_array($query); if ($query) { echo "Du er logget ind som $row[nick]"; } else { ?> Du er ikke logget ind. LOG IND:<br><br> <form action="login.php" method="post"> Nick:<br><input type="text" name="nick"><br> Pass:<br><input type="password" name="pass"><br> Husk mig:<input type="checkbox" name="auto_logon" value="ja"><br> <input name="login" type="submit" value=" ok "> <? } ?>
<--- login.php ---> include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$_POST[nick]' AND pass='$_POST[pass]'"); $row = mysql_fetch_array($check); if ($check) { if ($_POST[auto_logon] == "ja") { setcookie("logget_ind","ja", time()+3600); setcookie("brugerid","$row[id]", time()+3600); setcookie("brugernavn","$row[nick]", time()+3600); } else { $logget_ind = "ja"; $brugerid = $row[id]; $brugernavn = $row[nick]; session_register("logget_ind"); session_register("brugerid"); session_register("brugernavn"); session_register("pass"); } header ("logok.php"); } else { setcookie("logget_ind",""); setcookie("brugerid",""); setcookie("brugernavn",""); setcookie("pass",""); echo "Ugyldigt nick/pass! <a href=\"default.php\">Tilbage</a>"; }
<--- logok.php ---> include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$brugernavn' AND pass='$pass'"); if (!$check) { echo "Denne side kan kun ses hvis du er logget og det er du ikke, buhu.<br><a href=\"default.php\">Log ind</a>""; } ?> her er alt det indhold der kun vises hvis du er logget ind...
på alle "hemlige" sider ska du bare sætte det her i toppen: include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$brugernavn' AND pass='$pass'"); if (!$check) { echo "Denne side kan kun ses hvis du er logget og det er du ikke, buhu.<br><a href=\"default.php\">Log ind</a>"; exit; }
UTROLIGT jeg laver så mange fejl i dag! HER er det du ska bruge:
på alle "hemlige sider" ska du bare sætte det her i toppen: include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$brugernavn' AND pass='$pass'"); if (!$check) { echo "Denne side kan kun ses hvis du er logget og det er du ikke, buhu.<br><a href=\"default.php\">Log ind</a>"; exit; }
<--- conn.php ---> @mysql_connect(localhost, DBlogin, DBpass) or die ("databasefejl"); mysql_select_db(DBnavn) or die ("databasefejl");
<--- default.php ---> include ("conn.php"); $query = mysql_query("SELECT * FROM team WHERE id='brugerid' AND nick='brugernavn' "); $row = mysql_fetch_array($query); if ($query) { echo "Du er logget ind som $row[nick]"; } else { ?> Du er ikke logget ind. LOG IND:<br><br> <form action="login.php" method="post"> Nick:<br><input type="text" name="nick"><br> Pass:<br><input type="password" name="pass"><br> Husk mig:<input type="checkbox" name="auto_logon" value="ja"><br> <input name="login" type="submit" value=" ok "> <? } ?>
<--- login.php ---> include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$_POST[nick]' AND pass='$_POST[pass]'"); $row = mysql_fetch_array($check); if ($check) { if ($_POST[auto_logon] == "ja") { setcookie("logget_ind","ja", time()+3600); setcookie("brugerid","$row[id]", time()+3600); setcookie("brugernavn","$row[nick]", time()+3600); } else { $logget_ind = "ja"; $brugerid = $row[id]; $brugernavn = $row[nick]; session_register("logget_ind"); session_register("brugerid"); session_register("brugernavn"); session_register("pass"); } header ("logok.php"); } else { setcookie("logget_ind",""); setcookie("brugerid",""); setcookie("brugernavn",""); setcookie("pass",""); echo "Ugyldigt nick/pass! <a href=\"default.php\">Tilbage</a>"; }
<--- logok.php ---> include ("conn.php"); $check = mysql_query("SELECT * FROM team WHERE nick='$brugernavn' AND pass='$pass'"); if (!$check) { echo "Denne side kan kun ses hvis du er logget og det er du ikke, buhu.<br><a href=\"default.php\">Log ind</a>"; } ?> her er alt det indhold der kun vises hvis du er logget ind...
include ("conn.php"); $query = mysql_query("SELECT * FROM team WHERE id='$brugerid' AND nick='$brugernavn' "); $row = mysql_fetch_array($query); if ($query) { echo "Du er logget ind som ".$row[nick]; } else { ?> Du er ikke logget ind. LOG IND:<br><br> <form action="login.php" method="post"> Nick:<br><input type="text" name="nick"><br> Pass:<br><input type="password" name="pass"><br> Husk mig:<input type="checkbox" name="auto_logon" value="ja"><br> <input name="login" type="submit" value=" ok "> <? } ?>
Der er dog noget sært alligevel, for det virker godt nok når jeg kører det LOKALT, men når jeg uploader det til webhotellet og kører det dér, så virker cookies ikke!?
Det er meget mærkligt, da det er nøjagtig den samme kode...
$query = mysql_query("SELECT * FROM team"); $row = mysql_fetch_array($query); if ($_POST[nick] != $row[nick]) { header("Location:$current_page&error=nick"); } else { if ($_POST[pass] != $row[pass]) { header("Location:$current_page&error=pass"); } } } ?>
Den virker korrekt på min egen "server" (Windows XP med IIS 5.1, PHP 4.3.0 og mySQL 3.23.55), men på webhotellet bliver alt andet end "setcookie..." delen udført korrekt. Hvis jeg bruger sessions istedet, så er der ingen problemer.
register_globals er sat til ON begge steder
Der er ingen fejlmeddelelser eller noget. Når jeg kører den online, bliver cookies ganske enkelt ikke sat.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.