Как сделать автоматический вход в систему, сохранить сеанс в браузере

#php #session-cookies

#php #сессия-файлы cookie

Вопрос:

Я видел некоторые сайты социальных сетей, если у вас есть учетная запись пользователя, и когда вы открываете браузер и вводите URL-адрес, вы будете напрямую входить в систему без ввода имени пользователя и пароля, даже если вы закроете компьютер и перезапустите браузер, вы все равно можете автоматически войти в систему, которая имеет другую форму, прежде чемя думаю, что это включает не только сеансовый файл cookie, как показано ниже

     setcookie(session_name(), '', time()-2592000, '/');
  

но может быть сложнее, чем это. предположим, если я использую php, кто-нибудь может сказать мне, как реализовать эту функцию, я предполагаю, что это делается на стороне сервера, извините, если я не сделал четкого описания.

Комментарии:

1. Как насчет этого: evolt.org/node/60265 ?

2. спасибо, это хороший учебник, этот веб-сайт stackoverflow тоже сделал то же самое? потому что каждый раз, когда я вхожу в систему, он автоматически заставляет меня входить в систему все время, даже если я перезагружаю свой компьютер

3. Да, это называется cookie. Я советую вам прочитать о файлах cookie и сеансах, если вы хотите узнать, как управлять пользователями на ваших веб-сайтах.

Ответ №1:

Что я делаю, так это сохраняю идентификатор пользователя и / или имя пользователя и хэш входа, md5 (userId имя пользователя пароль) в виде файлов cookie.

При следующем посещении возьмите идентификатор из файла cookie и проверьте хэш входа в систему по той же формуле, по которой он был сгенерирован. Если то же самое, войдите в систему автоматически.

Глобальный

 $randomSeperator = '!~!';
  

Первый запуск…

 $hash = md5($id . $randomSeperator . $username);
setCookie('id', $id);
setCookie('username', $username);
setCookie('hash', $hash);
  

Второй запуск…

 $id/$username/$hash = $_COOKIE[][][] .... // Get all 3 cookies

if($hash == md5($id . $randomSeperator . $username) ){
// Do Autologin
}
  

Комментарии:

1. большое спасибо, но я не очень хорошо понимаю, не могли бы вы показать мне какой-нибудь конкретный код, чтобы я мог получить полную картину, спасибо.

2. На первый взгляд мне кажется, что это небезопасно.