Разлика между сесия и бисквитки
Ключова разлика между сесия и бисквитка
- Сесиите са файлове от страна на сървъра, които съдържат информация за потребителя, докато бисквитките са файлове от страна на клиента, които съдържат информация за потребителя.
- Сесията зависи от Cookie, но Cookie не зависи от сесия.
- Една сесия приключва, когато потребителят затвори браузъра си, докато бисквитката изтича в зависимост от продължителността на живота, която сте задали за нея.
- Можете да съхранявате колкото искате данни в една сесия, но пространството за съхранение на данни в една бисквитка е само 4KB.
- Всички регистрирани данни в рамките на една сесия могат да бъдат унищожени с помощта на командата Session_destroy(). Няма обаче такава команда като unsetcookie() за премахване на данни от бисквитка.
Тук анализирах разликата между Сесия и бисквитка и ще оцени изчерпателно техните плюсове и минуси.
Какво е сесия?
Сесията е глобална променлива, съхранявана на сървъра. На всяка сесия се присвоява уникален идентификатор, който се използва за извличане на съхранени стойности. Всеки път, когато се създаде сесия, бисквитка, съдържаща уникалния идентификатор на сесията, се съхранява на компютъра на потребителя и се връща с всяка заявка към сървъра. Ако клиентският браузър не поддържа бисквитки, уникалният идентификатор на сесията се показва в URL адреса. Сесиите имат капацитета да съхраняват относително големи количества данни в сравнение с бисквитките.
Стойностите на сесията се изтриват автоматично при затваряне на браузъра. Ако искате да съхранявате стойностите за постоянно, трябва да ги съхранявате в база данни.
Точно като променливата на масива $_COOKIE, променливите на сесията се съхраняват в променливата на масива $_SESSION. Подобно на бисквитките, сесията трябва да бъде стартирана преди всички HTML тагове.
Защо и кога трябва да използвам Sessions?
Сесиите се използват за предаване на стойности от една страница към друга. Те съхраняват важна информация, като потребителския идентификатор, по-сигурно на сървъра, където злонамерените потребители не могат да я подправят.
Използва се и когато искате алтернатива на бисквитките в браузъри, които не поддържат бисквитки, за съхраняване на глобални променливи по ефективен и по-сигурен начин. По-добре е, отколкото да ги предавате в URL адреса или при разработване на приложение като количка за пазаруване, което временно съхранява информация с капацитет, по-голям от 4KB.
Създаване на сесия с PHP
За да започнете сесия, трябва да инициирате функцията session_start в PHP и впоследствие да запишете вашите стойности в суперглобалния масив $_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
Предимства на сесията
Ето предимствата на сесията от моя гледна точка.
- Подобрява взаимодействието с потребителя чрез поддържане на състояние на непрекъснат диалог при множество заявки.
- Намалява натоварването на сървъра чрез временно съхраняване на потребителски данни.
- Подобрява сигурността чрез контролирано излагане на данни за ограничен период от време.
- Позволява персонализирани изживявания въз основа на потребителското поведение и предпочитания.
- Улеснява сложни транзакции чрез проследяване на множество стъпки.
- Увеличава производителността на уебсайта, като свежда до минимум необходимостта от повторно удостоверяване.
- Поддържа мащабируемост чрез ефективно управление на потребителските сесии в разпределени системи.
Недостатъци на сесията
Според моя опит това са недостатъците на използването на сесии.
- Увеличава риска от пробиви на данни, ако данните от сесията бъдат прихванати.
- Консумира памет на сървъра, което потенциално намалява цялостната производителност на системата.
- Това може да доведе до непоследователни потребителски изживявания, ако се управлява неправилно.
- Изисква допълнителни сървърни ресурси за поддържане и наблюдение на сесии.
- Изтичането на сесията може да наруши дейностите на потребителите, причинявайки разочарование.
- Уязвим към атаки за отвличане на сесии и фиксиране.
- Това може да усложни спазването на разпоредбите за поверителност поради постоянното съхранение на данни.
Какво е бисквитка?
Бисквитката е малък файл с максимален размер 4KB, който уеб сървърът съхранява на клиентския компютър. След като бъде зададена бисквитка, всички следващи заявки за страници връщат името и стойността на бисквитката. Бисквитката може да бъде прочетена само от домейна, от който е издадена. Например набор от бисквитки, използващ домейна www.guru99.com, не може да бъде прочетен от домейна career.guru99.com. Повечето уебсайтове в интернет показват елементи от други домейни, като реклама. Домейните, обслужващи тези елементи, също могат да задават свои собствени бисквитки. Те са известни като бисквитки на трети страни. Бисквитка, създадена от потребител, може да бъде видима само за него. Други потребители не могат да видят стойността му. Повечето уеб браузъри имате опции за деактивиране на бисквитки, бисквитки на трети страни или и двете.
Защо и кога трябва да използвам бисквитки?
HTTP е протокол без състояние; бисквитките ни позволяват да проследяваме състоянието на приложението, като използваме малки файлове, съхранявани на компютъра на потребителя. Пътят, където се съхраняват бисквитките, зависи от браузъра. Internet Explorer обикновено ги съхранява в папката Temporal Internet Files.
Персонализиране на потребителското изживяване: Това се постига чрез позволяване на потребителите да избират своите предпочитания. Заявките за страници, които следват, са персонализирани въз основа на зададените предпочитания в бисквитките. Проследяване на посетените от потребителя страници.
Създаване на бисквитки с PHP
Сега нека се задълбочим в основния синтаксис, необходим за създаване на бисквитки.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
- В PHP, setcookie функция се използва за генериране на бисквитка. „Cookie_name“ представлява идентификатора за бисквитката, който е от съществено значение за сървъра, когато трябва да извлече стойността на бисквитката от масива $_COOKIE. Това име е задължително.
- „Cookie_value“ обозначава съдържанието на бисквитката и също е задължителен.
- Параметърът „[expiry_time]“ не е задължителен и може да се настрои да диктува продължителността на живота на бисквитката, като например да я настроите да изтича след 1 час. Това става чрез добавяне или изваждане на секунди от PHP функцията time(), например time() + 3600, за да зададете 1 час.
- „[cookie_path]“ е друг незадължителен параметър, който определя пътя на сървъра, където бисквитката е достъпна. Използването на наклонена черта „/“ показва, че бисквитката е достъпна в целия домейн, докато посочването на поддиректории ограничава достъпа до тези поддомейни.
- Параметърът „[domain]“, също незадължителен, установява къде може да бъде достъпна бисквитката. Например, настройването му на
www.cookiedomain.com
го прави достъпен в целия домейн, докатоwww.sub.cookiedomain.com
го ограничава до този поддомейн и неговите дъщерни поддомейни. Не забравяйте, че поддомейнът може също да има свои собствени поддомейни, стига общата дължина на домейна да не надвишава 253 знака. - Параметърът „[secure]“ не е задължителен, като настройката му по подразбиране е false. Той указва дали бисквитката трябва да се предава през HTTPS (ако е вярно) или HTTP (ако е невярно).
- Настройката „[Httponly]“ също не е задължителна. Когато е зададено на true, бисквитката не може да бъде достъпна от клиентски скриптови езици, като напр JavaСценарий .
Забележка: PHP функцията setcookie трябва да бъде извикана, преди да бъдат изведени HTML тагове.
Нека разгледаме практически пример с бисквитки.
В този случай ще разработим проста програма, която съхранява потребителско име в бисквитка, настроена да изтече след десет секунди.
Следният код „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
Предимства на бисквитките
От моя опит, ето ползите от бисквити:
- Подобрява елемента на изненада при откриването на вкуса.
- Предлага минималистична естетика, идеална за модерно брандиране.
- Намалява безпорядъка на опаковките, фокусирайки вниманието върху продукта.
- Елиминира пристрастията въз основа на предпочитанията на съставките или възприемането на марката.
- Насърчава дегустацията без предубеждения, което води до безпристрастна обратна връзка.
- Потенциално намалява разходите за печат на опаковки.
- Опростява регулаторното съответствие на пазари с по-малко строги закони за етикетиране.
Недостатъци на бисквитките
Въз основа на това, което видях, това са недостатъците на бисквитките.
- Клиентите не могат да идентифицират алергени или диетични ограничения.
- Липсва хранителна информация, която е важна за потребителите, които се грижат за здравето.
- Пропуска възможността да подчертае уникални или първокласни съставки.
- Това може да доведе до объркване сред подобни продукти по рафтовете.
- Предотвратява разпознаването на марката и изграждането на лоялност.
- Пречи на вземането на информирани потребителски решения.
- Това може да доведе до правни проблеми в региони със строги закони за етикетиране.
Сесия срещу бисквитка: Разлика между тях
Ето важните разлики между сесия и бисквитка, които съм наблюдавал в моята практика:
Сесиите са файлове от страна на сървъра, които съдържат потребителска информация |
Бисквитките са файлове от страна на клиента, които съдържат потребителска информация |
Сесията приключва, когато потребителят затвори своя браузър |
Бисквитката завършва в зависимост от продължителността на живота, която сте задали за нея |
In PHP, преди да използвате $_SESSION, трябва да напишете session_start(); По същия начин и за други езици |
Не е необходимо да стартирате бисквитката, тъй като тя се съхранява във вашата локална машина |
В рамките на една сесия можете да съхранявате колкото искате данни. Единственото ограничение, което можете да достигнете, е максималната памет, която скриптът може да консумира наведнъж, което е 128 MB по подразбиране |
Официалният максимален размер на бисквитката е 4KB |
Сесията зависи от бисквитката |
Бисквитката не зависи от сесията |
Session_destroy() се използва за унищожаване на всички регистрирани данни или за деактивиране на някои |
Няма функция с име unsetcookie() |
Заключение
Препоръчвам да използвате сесии, когато изискванията за сигурност на данните и капацитет надхвърлят това, което бисквитките могат да предложат. Бисквитките обаче са непобедими по отношение на лекотата на използване и за прилагането на леко, постоянно проследяване на потребителското състояние.