Здравствуйте! У меня есть скрипт авторизации, основанный на COOKIE:
<form id="sign_in" method="POST">
<div class="msg">Вход в панель управления</div>
<div class="input-group">
<span class="input-group-addon">
<i class="material-icons">person</i>
</span>
<div class="form-line">
<input type="text" class="form-control" name="login" placeholder="Имя пользователя" required autofocus>
</div>
</div>
<div class="input-group">
<span class="input-group-addon">
<i class="material-icons">lock</i>
</span>
<div class="form-line">
<input type="password" class="form-control" name="pass" placeholder="Пароль" required>
</div>
</div>
<div class="row">
<div class="col-xs-8 p-t-5">
</div>
<div class="col-xs-4">
<button class="btn btn-block bg-pink waves-effect" type="submit">Войти</button>
</div>
</div>
<div class="row m-t-15 m-b--20">
</div>
</form>
<?php
//запускаем сессию, где будут храниться данные о статусе авторизации пользователя: авторизован, или нет
if (isset($_COOKIE['pass']))
{
echo "<script>document.location.href='****';</script>";
}
function validfilter($value,$regexp,$flags='usi') {
if (preg_match('/'.$regexp.'/'.$flags, $value,$result) && $result[0]==$value) return $value;
else return false;
}
//получаем логин из формы
$login= validfilter($_POST['login'],'^([A-Za-z0-9-_]){3,20}$');
//получаем уже захэшированный пароль из формы
$pass = $_POST['pass'];
if ($pass) $pass=md5($pass);
//если обе переменные выбраны, то
if (isset ($login,$pass)) {
//подключаемся к базе данных, где хранятся логины пользователей и хэши их паролей
$link = mysqli_connect('localhost', '***', '***', '***') or die ("Не удаётся подключиться к базе данных");
//получаем хэш пароля пользователя из БД
$check = mysqli_query ($link, "SELECT login FROM *** WHERE login = '$login' AND pass = '$pass'") or die ("Ошибка выполнения запроса");
//создаём ассоциативный массив из этого запроса
$checkarr = mysqli_fetch_array ($check);
//выводим хэш пароля в переменную
$userlogin = $checkarr['login'];
// если хэши пароля из БД и введённого в форме пароля совпадают, то
if ($userlogin==$login) {
$link = mysqli_connect('localhost', '***', '***', '***') or die ("Не удаётся подключиться к базе данных");
$unstr = md5(uniqid());
$pass_salted = $unstr.$pass;
setcookie ('pass', $pass_salted, time()+14400);
$sethash = mysqli_query($link, "UPDATE *** SET hash = '$pass_salted' WHERE login = '$login'") or die ("Не удалось выполнить запрос");
echo "<script>document.location.href='http://****';</script>";
}
}
?>
На "секретной странице" стоит проверка :
$conn = mysqli_connect('localhost', '***', '***', '***') or die ("Не удаётся подключиться к базе данных");
session_start();
if (isset($_COOKIE['pass'])) {
$pass = $_COOKIE['pass'];
$query = mysqli_query ($conn, "SELECT login FROM *** WHERE hash = '$pass'");
$check = mysqli_fetch_array($query);
$login = $check['login'];
}
else{
echo "<script>document.location.href='http://***';</script>";
exit;
}
Такой вопрос: если я авторизовываюсь на сайте в двух браузерах одновременно, то в одном из них пропадает переменная login (хотя меня никуда не переадресовывает). С чем это может быть связано?