Приведенный ниже код является попыткой создать постоянный файл cookie для входа. Теперь я любитель и не профессионал, так что это первая попытка безопасного запоминания cookie-файлов. Когда я вхожу, идентификатор и токен хранятся в БД, и я могу зайти в любую личную область пользователя, значит cookie-файл установлен, но после перезапуска браузера возникает проблема , Я вошел в систему, и cookie настроен, но когда я захожу в частные области пользователя, кажется, что пользовательское значение равно нулю, значит, что cookie установлен (проверено эхом $_COOKIE
), но он не связан ни с одним пользователем, в областях пользователя не отображается информация о пользователях, также проверенная с помощью кода. Пользователь недоступен. Так как я вошел в систему, когда cookie не связан ни с одним пользователем. Куда я иду не так?
if (isset($_POST['rememberme'])) {
$salt = 'some text';
$hash = 'some text';
$identifier = md5($salt . md5($username . $salt));
$token = hash('sha512',$hash);
setcookie('auth', $identifier. "," . $token, time()+2678400);
$result = $db->prepare("INSERT INTO auth (identifier,token) VALUES (:identifier,:token)");
$result->execute(array(':identifier'=>$identifier,':token'=>$token));
}
if(isset($_COOKIE["auth"])){
$pieces = explode(",", $_COOKIE["auth"]);
$identifier = $pieces[0];
$token = $pieces[1];
$sql=$db->prepare("SELECT * FROM auth WHERE identifier=:identifier");
$sql->execute(array(':identifier'=>$identifier));
if($sql->rowCount()>0){
$row = $check->fetch(PDO::FETCH_ASSOC);
$dbtoken = $row['token'];
if($token==$dbtoken){
$newhash = 'some text';
$newtoken = hash('sha512',$newhash);
$que=$db->prepare("UPDATE auth SET token=:token WHERE identifier=:identifier");
$que->execute(array(':token'=>$newtoken,':identifier'=>$identifier));
setcookie('auth', $identifier. "," . $token, time()+2678400);
header("Location:home.php");
}
else{
echo "Unauthorized login attempt!";
setcookie("username","", time()+2678400);
}
}
}
Задача ещё не решена.
Других решений пока нет …