2012-01-01 4 views
0

Установить куки: (Войти)PHP: Печенье для входа в систему

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

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

Проверьте вход в систему:

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

Я просеивают через кучу SO вопросов на это, но я m все еще очень неясно, как правильно проверить, существует ли файл cookie.

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

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

ответ

1

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

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

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

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

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

0

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

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

Использовать для вашего печенья.

Вам нужно будет хранить информацию где-нибудь на сервере (MySql, Memcache и т. Д.) И сравнить cookie от клиента с тем, что у вас есть на сервере.

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

+1

Применение функции хеширования несколько раз НЕ улучшает ее криптографические качества. –

Смежные вопросы