Поточний час:
Сьогодні 25 вересня, понеділок 2017 рік
Стрічка RSS

Введіть ваш Е-mail:

Zura-Blog 2 роки 9 місяців 6 днів

Ваш ip адрес:54.162.181.75

Добрий вечір!
Ви обновили сторінку в 21 : 51
Статистика

Кількість публікацій на блозі: 365
Кількість коментарів на блозі: 100
Кількість категорій на блозі: 17
Кількість міток на блозі: 28

Zura – Blog
Яндекс.Метрика UA TOP Bloggers

session_phpПривіт всім відвідувачам Zura — Blog, в сьогоднішній публікації мова буде йти про ще один важливий механізм в мові програмування рнр, який варто добре засвоїти, це сесії.

В минулих двох останніх публікаціях, говорилось про куки, ну і хто з вас читав ці публікації, або комусь з вас відомий такий елемент в мові програмування рнр, який називається куки, то в такому разі ви повинні знати що куки  дуже малі за розміром.

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

Це вважається, одною можна сказати  “проблемою”, коли потрібно отримати більше інформації, а в куку не можливо записати ні массив, ні обєкт, та й врешті решт кука приймає тільки текстові дані, і зрозуміло що якщо ми хочемо записати в куку щось більш складніше, то звісно що, це у нас не получиться.

Але в рнр існує елемент, який працює понад куками, скажем “поверх кук”, і назва цього елементу сесії. Для чого сесії потрібні, потрібні для того щоб зберігати більшу інформацію, між викликами скриптів, або між переходами користувача на сайт.

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

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

Самі можите зробити висновок, що в такому разі пропадають  обмеження на розмір інформації, яку необхідно вмістити, і тим самим  в сесії спокійно можна розмістити такі елементи як массиви.

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

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

Довжину файлу сесії можна налаштувати в рнр, в налаштуваннях можна зробити більшою або меншою, і звісно що за розмірами файл який створюється за рахунок сесії, створюється на сервері, він значно більший, ніж файл який створюється за рахунок куки.

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

Ну що ж, далі як запустили сесію.

для запуску сесії в рнр використовується функція:

session_start ();

 — якщо цю функцію не вказати, сесія буде не доступною, а точніше дані сесії будуть не доступні, тому щоб запустити сесію, потрібно в кодах вказувати цю функцію.

Як записувати інформацію в сесію — записується через суперглобальний массив який називається “session”, якщо в нього помістити якісь дані, тоді ці дані, будуть в сесію записані. 

$_session[‘login’] = ‘popkin’ ;

Як щось прочитати з цього массиву

$log = $_session[‘login’];

Для того щоб видалити повністю сесію — необхідно викликати функцію session_destroy(); unset видалить сесію

unset($_session[‘login’]); 

session_destroy();  

Отож якщо ми записуємо в кодах цей рядок, session_start (); то це означає що ми запускаємо механізм роботи сесії, сама функція взагалі то нічого не робить, але вона вказує на то, що дальше ми будемо працювати з сесіями.

На прикладі, якщо ми  переглянемо що знаходиться в суперглобальному массиві $_session через функцію var_damp:

session_start ();

var_dump($_session);

то звісно що на сторінці браузера побачимо, що в ньому нічого не знаходиться, і він пустий

array(0) { }

але, якщо ми подивимся в додаткових інструментах, які присутні в кожному браузері, це можливість перегляду що відбувається між сервером і клієнтом (вашим браузером), тоді побачимо що там появився такий запис 

PHPSESSID=970d05f59847d765e699660202e3adb4; path=/; domain=test1.ru

отож таке довге число 970d05f59847d765e699660202e3adb4 означає номер сесії який був створений рнр на сервері.

session_php1

Давайте в принципі, просто щось  запишемо в суперглобальний массив $_session, наприклад назву логіна.

session_start ();

$_session[‘login’]; =’popkin’;

var_dump($_session);

і так само переглянемо за допомогою спеціальних інструментів, що відбулось в сесії, на сторінці браузера появиться така інформація 

array(1) { [“login”]=> string(6) “popkin” }

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

Ну і власне зараз давайте “прикинем” різницю, між сесіями і куками.

Якщо глянути на картинку нижче, це попередній скрін з додаткових інструментів, які показуть що відбувається між клієнтом і сервером, то в полі де вказується тривалість куки, це поле має назву “Дійсна до” — в ньому вказується тривалість життя куки.

І на картинці бачимо, де “Дійсна до” (тривалість життя куки вказано ) вказаний просто текст “Сеанс”, що це означає, означає що браузер  сам вирішує скільки йому зберігати сессію, як правило сесії видаляються після закриття програми браузера.

session_php2

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

Кука звісно може вмістити набагато менше інформації, зберігається на стороні клієнта, (мається на увазі, у вас на компі, в спеціальних папках), і кука може мати (довгу тривалість життя), оскільки тривалість життя куки, ви можите виставити самі.

Отож, який з цього всього можна зробити висновок, в сесію ми можемо розмістити більше інформації, але в сесії маленька тривалість життя, в куках  може бути тривалість довша, скажем кука може існувати і пять років, але в неї можна розмістити дуже мало даних.

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

Приклад роботи сесії можемо побачити в  інтернет магазині, це “корзина”, в який зберігаються вибрані вами товари, в куках номер корзини, а в сесіях сам вміст корзини,  коли відвідувач знову заходить в інтернет магазин, заходить з свого компа, через браузер, а в куках вже виставлений номер (id – індентифікатор) цього користувача.

Тоді читається номер цього користувача, звірюється що в сесії номер саме цього користувача, і тоді на вихід отримується вся остальна інформація, яка стосується цього користувача, це товари які користувач передивляючись добавив в корзину.

Ну і все в принципі, звісно  що по сесіям ще можна написати і декілька сторінок інформації, але вважаю що цієї достатньо щоб уловити саму суть, як працюють сесії  і куки, оскільки в більшості скриптів сесії працюють з куками разом.

До речі, щойно згадав що на Zura — Blog є в наявності публікація, яка стосувалась форми авторизації для перегляду картинок. Точніше сказати, щоб переглянути картинку на сторінці сайту, для цього потрібно пройти авторизацію.

Публікація називається  “Створюємо форму авторизації для входу на сайт мовою програмування php” в публікації знаходиться демонстрація авторизації, ну і звісно що коди написані мовою програмування рнр, які потрібні для роботи цього елементу.

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

До зустрічі !

Leave a Reply

Your email address will not be published. Required fields are marked *