Сеанс PHP і файли cookie PHP із прикладом

Що таке файли cookie?

Файл cookie — це невеликий файл із максимальним розміром 4 Кб, який веб-сервер зберігає на клієнтському комп’ютері.

Після встановлення файлу cookie всі наступні запити сторінок повертають назву та значення файлу cookie.

Файл cookie можна прочитати лише з домену, з якого він був створений. Наприклад, файл cookie з використанням домену www.guru99.com не можна прочитати з домену career.guru99.com.

Більшість веб-сайтів в Інтернеті відображають елементи з інших доменів, наприклад рекламу. Домени, що обслуговують ці елементи, також можуть установлювати власні файли cookie. Вони відомі як сторонні файли cookie.

Файл cookie, створений користувачем, може бути видимим лише для нього. Інші користувачі не бачать його значення.

Більшість веб-браузерів мають параметри для вимкнення файлів cookie, сторонніх файлів cookie або обох.

Якщо це так, тоді PHP відповідає, передаючи маркер cookie в URL.

Схема, наведена нижче, ілюструє, як працюють файли cookie.

Що таке Cookie

Тут,

1) Користувач запитує сторінку, яка зберігає файли cookie

2) Сервер встановлює файл cookie на комп’ютері користувача

3) Інші запити сторінок від користувача повертатимуть назву та значення файлу cookie

Чому і коли використовувати файли cookie?

  • Http є протоколом без стану; файли cookie дозволяють нам відстежувати стан програми, використовуючи невеликі файли, що зберігаються на комп’ютері користувача. Шлях зберігання файлів cookie залежить від браузера. Internet Explorer зазвичай зберігає їх у папці Temporal Internet Files.
  • Персоналізація користувальницького досвіду – це досягається, дозволяючи користувачам вибирати свої параметри. Сторінка, за якою потрібно слідувати, персоналізується на основі встановлених параметрів у файлах cookie.
  • Відстеження відвіданих користувачем сторінок

Створення файлів cookie

Давайте тепер розглянемо основний синтаксис, який використовується для створення файлу cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

ТУТ,

  • Php «setcookie» — це функція PHP використовується для створення файлу cookie.
  • «cookie_name» — це ім’я файлу cookie, яке сервер використовуватиме під час отримання його значення зі змінної масиву $_COOKIE. Це обов'язково.
  • “cookie_value” – це значення файлу cookie та його обов’язкове значення
  • «[термін_терміну_терміну_терміну]» необов’язковий; його можна використовувати для встановлення терміну дії файлу cookie, наприклад 1 година. Час встановлюється за допомогою функцій PHP time() плюс або мінус кількість секунд, що перевищує 0, тобто time() + 3600 за 1 годину.
  • «[шлях_cookie_path]» необов’язковий; його можна використовувати для встановлення шляху файлів cookie на сервері. Слеш «/» означає, що файл cookie буде доступним для всього домену. Підкаталоги обмежують доступ файлів cookie до субдомену.
  • «[домен]» необов’язковий, його можна використовувати для визначення ієрархії доступу до файлів cookie, тобто www.cookiedomain.com означає весь домен www.sub.cookiedomain.com обмежує доступ до файлів cookie www.sub.cookiedomain.com і його субдомени. Зауважте, що можна мати субдомен субдомену, якщо загальна кількість символів не перевищує 253 символи.
  • «[безпечний]» необов’язковий, за замовчуванням — false. Він використовується для визначення того, чи файл cookie надсилається через https, якщо для нього встановлено значення true, чи через http, якщо для нього встановлено значення false.
  • «[Httponly]» необов’язковий. Якщо встановлено значення true, то лише мови сценаріїв на стороні клієнта, тобто JavaScript не може отримати до них доступ.

Примітка: функція php set cookie повинна виконуватися перед відкриваючим тегом HTML.

Тепер розглянемо приклад використання файлів cookie.

Ми створимо базову програму, яка дозволить нам зберігати ім’я користувача у файлі cookie, термін дії якого закінчується через десять секунд.

Код нижче показує реалізацію наведеного вище прикладу «cookies.php».

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

вихід:

the cookie has been set for 60 seconds

Отримання значення файлу cookie

Створіть ще один файл під назвою «cookies_read.php» із таким кодом.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

вихід:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Примітка: $_COOKIE — це вбудована суперглобальна змінна PHP.

Він містить імена та значення всіх встановлених файлів cookie.

Кількість значень, які

Масив $_COOKIE може містити залежно від розміру пам’яті, встановленого у php.ini.

Значення за замовчуванням — 1 ГБ.

Тестуємо наш додаток.

Припустімо, що ви зберегли файли PHP у папці phptus.

  • Крок 1 – відкрийте веб-переглядач і введіть URL-адресу http://localhost/phptuts/cookies_read.php

Отримання значення файлу cookie

Примітка: відображено лише порожній масив

  • Крок 2 – Перейдіть до URL-адреси http://localhost/phptuts/cookies.php

Отримання значення файлу cookie

  • Крок 3. Поверніться на першу вкладку та натисніть кнопку оновлення

Отримання значення файлу cookie

Зачекайте хвилину, а потім знову натисніть кнопку оновлення. Які результати ви отримали?

Видалити куки

  • Якщо ви хочете знищити файл cookie до закінчення терміну дії, ви встановлюєте час закінчення терміну дії на час, який уже минув.
  • Створіть новий файл під назвою cookie_destroy.php із таким кодом
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Повторіть кроки з 1 по 3 з розділу вище щодо отримання значень файлів cookie.
  • Відкрийте URL-адресу http://localhost/phptuts/cookie_destroy.php
  • Перейдіть на URL-адресу http://localhost/phptuts/cookies_read.php які результати він показує?

Що таке сесія?

  • Сеанс — це глобальна змінна, яка зберігається на сервері.
  • Кожному сеансу призначається унікальний ідентифікатор, який використовується для отримання збережених значень.
  • Щоразу, коли створюється сеанс, файл cookie, що містить унікальний ідентифікатор сеансу, зберігається на комп’ютері користувача та повертається з кожним запитом на сервер. Якщо браузер клієнта не підтримує файли cookie, унікальний ідентифікатор php-сеансу відображається в URL-адресі
  • Сеанси можуть зберігати відносно великі дані порівняно з файлами cookie.
  • Значення сеансу автоматично видаляються, коли браузер закривається. Якщо ви хочете постійно зберігати значення, ви повинні зберегти їх у базі даних.
  • Як і змінна масиву $_COOKIE, змінні сесії зберігаються в змінній масиву $_SESSION. Так само, як файли cookie, сеанс має бути розпочато перед будь-якими тегами HTML.

Чому і коли використовувати Sessions?

  • Ви хочете більш безпечно зберігати важливу інформацію, таку як ідентифікатор користувача, на сервері, де зловмисники не зможуть її контролювати.
  • Ви хочете передати значення з однієї сторінки на іншу.
  • Вам потрібна альтернатива файлам cookie у браузерах, які не підтримують файли cookie.
  • Ви хочете зберігати глобальні змінні ефективнішим і безпечнішим способом, ніж передавати їх за URL-адресою
  • Ви розробляєте таку програму, як кошик для покупок, яка має тимчасово зберігати інформацію об’ємом понад 4 Кб.

Створення сесії

Щоб створити сеанс, ви повинні спочатку викликати функцію PHP session_start, а потім зберегти свої значення в змінній масиву $_SESSION.

Припустімо, ми хочемо знати, скільки разів завантажувалася сторінка, для цього ми можемо використати сеанс.

Наведений нижче код показує, як створювати та отримувати значення з сеансів

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

вихід:

You are visitor number 1

Знищення змінних сеансу

Функція session_destroy() використовується для знищення всіх змінних сесії Php.

Якщо ви хочете знищити лише окремий елемент сеансу, ви використовуєте функцію unset().

Наведений нижче код ілюструє, як використовувати обидва методи.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy видаляє всі дані сеансу, включаючи файли cookie, пов’язані із сеансом.

Unset звільняє лише окремі змінні сеансу.

Інші дані залишаються недоторканими.

Резюме

  • Файли cookie — це невеликі файли, що зберігаються на комп’ютері користувача
  • Файли cookie можна прочитати лише з домену, який видав файл
  • Файли cookie можуть мати термін дії, якщо його не встановлено, термін дії файлів cookie закінчується, коли браузер закривається
  • Сеанси схожі на глобальні змінні, що зберігаються на сервері
  • Кожному сеансу надається унікальний ідентифікаційний ідентифікатор, який використовується для відстеження змінних для користувача.
  • І файли cookie, і сеанси мають бути запущені до того, як будь-які теги HTML будуть надіслані в браузер.

Підсумуйте цей пост за допомогою: