cookiesПривіт всім відвідувачам Zura — Blog, сьогоднішня публікація буде стосуватись терміну “cookie”.

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

Звідки виник цей термін невідомо, вважається що під час зародження “Unix-систем”.

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

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

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

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

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

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

Все що протокол http здатний робити, це вести обмін даними між клієнтом (браузером) і сервером.

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

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

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

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

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

 

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

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

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

І вам, а точніше сказати відвідувачу завдяки  “cookie” не потрібно буде тратити час на те, щоб весь час авторизуватись на сайті.

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

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

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

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

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

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

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

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

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

Але між кодами сторінки встановлений код, який має відношення до “cookie”,  приблизно така формула:

setcookie : name = value

де “name” це назва “cookie”, а “value” значення, саме коли браузер приймає це значення, тоді він автоматично створює в компютері текстовий файл.

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

 

Як створити “cookie” в мові програмування РНР.

В РНР для цього використовують спеціальну функцію, це 

setcookie ($name, $value, $time);

яка приймає три аргументи

$name — назва куки, може люба бути

$value — значення 

$time — час існування куки, звісно що не потрібно виставляти час який вже пройшов, оскільки кука буде не дійсна.

Власне як мова програмування РНР, так і мабуть що люба мова програмування працють в форматі часу від “UNIX”, час в “UNIX” рахується в секундах, і рахується з 1 січня 1970 року.

Для того, щоб виставити коректно час який визначає тривалість існування куки, в мові програмування рнр, використовують функцію time().

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

Приклади встановлення “cookie”:

setcookie ( ‘name’, ‘value’, ‘time'()+86400);

setcookie(“login”, “pupkin”, time() + 3600 * 24 * 7);

setcookie(“password”, “qwerty”, time() + 3600 * 24 * 7);

Після того, як “cookie” встановлені, при кожному відвідуваннні користувачем сторінки на сайті, PHP інтерпретатор формує глобальний масив $ _COOKIE, в котрому ключами є назви “cookie”, за якими зберігаються їхні значення.

Висновок: “cookie” —  це невеликий шматок текстової інформації, яку сервер зберігає в браузері користувача, і завдяки їм ми можемо ідентифікувати кожного користувача, коли той заходить на наш сайт.

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

На цьому все, до зустрічі !

 


user_97

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