Я создаю систему входа в систему с php, и когда я отправляю правильную информацию, она устанавливает cookie. действие формы отправляется на ту же страницу, на которой установлена проверка cookie isset, но поскольку куки-файлы нуждаются в обновлении после их установки, вам нужно обновить страницу в другой раз, чтобы заметить, что файлы cookie находятся там.php: настройка файлов cookie и их восстановление?
Какое обходное решение для этого? вот мой код (где имя пользователя и пароль «администратора» так же, как заполнитель. когда я получаю систему работать, я вытащу значения из базы данных.)
<?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>
Вы понимаете, что каждый является потенциальным администратором с таким подходом? Любой пользователь может установить cookie с именем 'user' в своем клиенте. –
Ферхад, какой метод вы предлагаете? Мне интересно. – David
Используйте сеанс для всех пользовательских данных и файлов cookie для хранения идентификатора сеанса или хэша. –