Приклад запам'ятати мене урок - курс cookies в php від devionity

У цій лекції ми розглянемо простий приклад форми аутентифікації з можливістю запам'ятати користувача, щоб він не вносив свій пароль і логін в форму кожен раз. Для початку створимо форму:

Створимо тепер файл admin.php, в якому опрацюємо дані форми. Для простоти прикладу в цьому ж файлі буде збережені дані про користувача, які зазвичай зберігаються в базі даних.

$ Db_data = array (
'Username' => 'jessie',
'Password' => 'magnets'
);

if ($ _POST) $ username = isset ($ _ POST [ 'username']). $ _POST [ 'username']. null;
$ Password = isset ($ _ POST [ 'password']). $ _POST [ 'password']. null;
> Elseif ($ _COOKIE) $ username = isset ($ _ COOKIE [ 'username']). $ _COOKIE [ 'username']. null;
$ Password = isset ($ _ COOKIE [ 'password']). $ _COOKIE [ 'password']. null;
> Else die ( "Restricted area!");
>

Після цієї конструкції (якщо скрипт не помер) ми можемо перевірити чи збігається логін / пароль:

foreach ($ db_data as $ k => $ v) $ status = $ status ($$ k === $ v);
>

Тут $ status - це змінна, яка повинна присвоїти початкове значення true. Після цього циклу вона буде містити true тільки якщо співпали username і password користувача. В цьому випадку необхідно перевірити прапорець Remember Me і відправити куки, якщо він відзначений:

if ($ status) if (isset ($ _ POST [ 'remember'])) setcookie ( 'username', $ username, time () + 60 * 60 * 24 * 366);
setcookie ( 'password', $ password, time () + 60 * 60 * 24 * 366);
>
echo 'Logged in!';
>

Отримаємо такий результат: якщо успішно зайшли, але не відзначили прапорець, то наступний візит на admin.php вже не буде можливий, тому що ми не зберегли стан результату аутентифікації. Якщо успішно зайшли і відзначили прапорець, то ми можемо навіть після перезавантаження браузера зайти на admin.php і побачити, що ми зайшли в систему, тому що були підставлені збережені куки.

→ На повний екран