PHP: файлы cookie для входа - PullRequest
       1

PHP: файлы cookie для входа

0 голосов
/ 01 января 2012

Установить cookie: (логин)

    $settingCookie = $userDetail["salt"] . $userDetail["username"];

    setcookie("testing", $settingCookie, time()+43200); // 12 Hours

Проверьте, авторизованы ли вы:

$loginCheck = $_COOKIE["testing"];
if (isset($loginCheck)) {
    // Logged in
} else {
    // Not logged in
}

Я перебрал кучу ТАК вопросов по этому вопросу, но мне все еще неясно, как правильно проверить, существует ли файл cookie.

Очевидно, что это очень небезопасно, поскольку вы можете просто создать cookie "testing" в браузере, но я пытаюсь это исправить.

Так как я могу правильно проверить, соответствует ли $_COOKIE["testing"] соль и имя пользователя, с которым пользователь вошел в систему?

Ответы [ 2 ]

1 голос
/ 01 января 2012

Простой ответ на ваш вопрос:

if($_COOKIE["testing"] == $userDetail["salt"].$userDetail["username"]) {

Но это, вероятно, опрометчивая схема, так как я подозреваю, что вы не знаете конкретного имени пользователя на странице, где выВы проверяете логин.

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

Это не позволяет людям просто случайно создать файл cookie, поскольку они не знают правильное значение токена для других учетных записей.

0 голосов
/ 01 января 2012

Мне не нравится, что вы выставляете имя пользователя.Создайте хеш-функцию, например:

md5(md5(sha($userDetail["salt"].$userDetail["username"])));

Для использования в качестве файла cookie.

Вам потребуется хранить данные где-нибудь на сервере (MySql, Memcache и т. Д.) И сравнить файл cookie изклиент с тем, что у вас есть на сервере.

Другой вариант - использовать сеансы PHP для входа в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...