Ich mache ein Login-System mit PHP, und wenn ich die richtigen Informationen einreiche, ist es ein Cookie gesetzt. Die Formularaktion wird an die gleiche Seite gesendet, auf der oben eine Cookie-Bestätigung für das isset-Cookie vorhanden ist. Da Cookies jedoch nach ihrer Einrichtung aktualisiert werden müssen, müssen Sie die Seite ein weiteres Mal aktualisieren, damit Cookies erkannt werden.php: Setzen von Cookies und Abrufen von ihnen?
Was ist ein Workaround dafür? hier ist mein Code (wo Benutzername und Passwort „admin“ nur als Platzhalter ist. wenn ich das System zum Laufen zu bringen, werde ich Werte aus der Datenbank ziehen.)
<?php
if(isset($_COOKIE['user']))
{
echo "Hello, administrator.<br />";
echo "<a href=?logout=yes>logout</a>";
if(isset($_GET['logout']))
{
setcookie("user", $_POST['username'], time() - 3600);
}
}
else
{
if (isset($_POST['submit']))
{
if (($_POST['username']=="admin")&&($_POST['password']=="admin"))
{
setcookie("user", $_POST['username'], time() + 3600);
}
else
{
echo "empty field or wrong user/pass.";
}
}
else
{
echo "nothing submitted. show form.";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0">
<tr><td colspan=2><h1>Login</h1></td></tr>
<tr><td>Username:</td><td>
<input type="text" name="username" maxlength="40">
</td></tr>
<tr><td>Password:</td><td>
<input type="password" name="password" maxlength="50">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="submit" value="Login">
</td></tr>
</table>
</form>
Sie erkennen, dass jeder ein potenzieller Administrator mit diesem Ansatz ist? Jeder kann in seinem Client einen Cookie namens 'user' setzen. –
Ferhad, welche Methode schlagen Sie vor? Ich bin neugierig. – David
Verwenden Sie die Sitzung für alle Benutzerdaten und den Cookie, um die Sitzungs-ID oder den Hash zu speichern. –