Почему так странно работает авторизация на основе cookie?

Здравствуйте! У меня есть скрипт авторизации, основанный на 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 (хотя меня никуда не переадресовывает). С чем это может быть связано?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы