Автор Тема: Урок за бисквитки, кога?  (Прочетена 14577 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Урок за бисквитки, кога?
« -: 03 Юни 2011, 21:38:52 »
Здравейте,

Причината да съм тук е учителя gatakka. Благодарности, защото после неговите уроци набрах смелост да мигрирам към Ubuntu u вече втора година си перкам с него. В един момент осъзнах, че увлечението ми по сайтостроене не струва без пустото PHP. Купих книги, гледах чуждоезични уроци, но поднесеното от учителя gatakka направи нещата ясни и достъпни. Благодарности 2.

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

Нямам права да публикувам нова тема в точния раздел, затова се намирам тук.
В момента слушам Salsa streem. Всички песни от него до края на деня са мои поздрави към екипа.

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Re:Урок за бисквитки, кога?
« Отговор #1 -: 03 Юни 2011, 21:40:57 »
Бре, верно ли няма бе?
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Урок за бисквитки, кога?
« Отговор #2 -: 03 Юни 2011, 21:49:04 »
Истина няма и това ме учуди. Навсякъде се показва сесия, дори са посветени два урока на нея, но ни грам за бисквитките. Какво са, как се задават...няма, тъмна Индия.

Извинявам се за редакцията, но наскоро си залях клавиатурата с бира и някои копчета задържат...
« Последна редакция: 03 Юни 2011, 21:50:45 от infinity1305 »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re:Урок за бисквитки, кога?
« Отговор #3 -: 13 Юни 2011, 21:57:32 »
Истина няма и това ме учуди. Навсякъде се показва сесия, дори са посветени два урока на нея, но ни грам за бисквитките. Какво са, как се задават...няма, тъмна Индия.

Извинявам се за редакцията, но наскоро си залях клавиатурата с бира и някои копчета задържат...
Няма нищо сложно покрай бисквитките, сигурен съм, че дори и от документацията в php.net за тях може да ти стане напълно ясно какво са и как се ядат.
Понеже нещо не ми се получават видео уроците, може да драсна два-три реда, но само при проявено желание.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Урок за бисквитки, кога?
« Отговор #4 -: 26 Юни 2011, 00:16:49 »
Ами драсни, но нека са повече от два три реда. Например, форума тук ми лепи бисквитка. Нещо, повече, искам да я видя отвътре.



От тази снимка, кое какво е? Защо толкова много?
Между документация и практическо приложение, за мен има голяма разлика, за това питам.
Колкото повече по въпроса, толкова по-добре за моето образование.

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re:Урок за бисквитки, кога?
« Отговор #5 -: 26 Юни 2011, 00:38:24 »
Бисквитките са малки текстови файлове, който се използват от браузърите за съхраняване на някакъв вид потребителска информация.  Разгледай този линк http://php.net/manual/bg/features.cookies.php

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re:Урок за бисквитки, кога?
« Отговор #6 -: 26 Юни 2011, 02:45:05 »
Както HD цитира, бисквитките са просто едни файлчета, в които се записва определена информация (стринг). В бисквитките може да сложиш потребителско име, парола, поща, идентификатор, timestamp, каквото ти хрумне, сега вече е друг проблема със сигурността. Както гледам вече виждаш, че дори и човек който си няма понятие от бисквитките може да ги изтрие с едно кликване на мишката.

Трябва да знаеш, че бисквитките се изпращат от браузъра и се съхраняват на твоя компютър и се отварят само и единствено с браузъра, чрез който са били поставени. Мозила си складира бисквитките за нея, екслорера за него! Поради тая причина, бисквитките най-често се използват за разпознаване на даден потребител дали е бил в определен сайт (бутончето remember me). Пише се проверка дали съществува бисквитката, ако да - значи потребителя е бил вече в дадения сайт и може да му се спести писането на име и парола и директно да бъде логнат в системата.





Обърни внимание на ръчичките, които поставих.

Бисквитка в PHP се създава чрез функциите set_cookie, setrawcookie, както и със header функцията; премахва се със unset функцията.
Ще дам пример със set_cookie:
Код: PHP
  1. setcookie($name, $content #value, $expire, $path, $domain, $secure, $httponly);
  2.  

Надявам се, че ясно виждаш какво искам да ти покажа. Сега като знаеш как се поставя бисквитка и като сравниш твоята собствена снимка, мисля че става ясно кое къде отива. Но все пак ще обесня.

Първи параметър - име на бисквитката. С него може да видиш бисквитката чрез $_COOKIE масива, като му зададеш името на бисквиката като ключ - $_COOKIE['my_cookie'];

Втори параметър - стойност. Това е съдържанието на бисквитката, тук слагаш информацията, която ще видиш след отпечаташ на екрана $_COOKIE['my_cookie'];

Трети параметър - живот. Бисквитката не се пази постоянно на компютъра, тя има живот и ти може да го зададеш точно тук. Използва се unix timestamp, демек - към функцията time прибавяш колкото секунди искаш да живее бисквитката.

Четвърти параметър - път. Тук може да ограничиш бисквитката да важи само за определана папка (и нейните подпапки). Примерно nau4i.me/папка/бисквитена_папка - така бисквитката ще е валидна само за бисквитената папка (и папките в нея).

Пети параметър - домейн. Няма нужда от обяснение. Може да си го оставиш празно;

Шести параметър - "сигурност". Приема булева стойност (0 - false / 1 - true). Ако я оставиш на 1, бисквитката ще мине само ако сайта ти използва https (hypertext transfer protocol secure), а не редовното http;

Седми параметър - httponly. Също булева стойност. Aко му дадеш true, бисквитката ще бъде достъпна само чрез http протокол, а няма да бъде достъпен примерно за скриптови езици.



Да кажем, че имаме форма за регистрация и имаме бутон запомни ме.

Код: PHP
  1. if($_POST['fs'] == 1){//пращаме формата
  2.    if($username == $username && $password == $password){//проверки блабла
  3.        //имаме намерен запис в БД, потребителя ще бъде логнат
  4.        setcookie('username', $username, time()+60*60 #1час); //имаме пратена бисквитка
  5.   }
  6. }
  7.  
  8.  
  9. //следващия път като потребителя се логва в системата
  10. if($_COOKIE['username'] == $username){
  11.         //това е човека, направо да влиза
  12.         header('Location: logged.php');
  13.     }
  14. }
  15.  



Написах го в Gatakka стил, сядаш и го мислиш на момента. Надявам се, че вече имаш поне малка представа какво са и как може да използваш бисквитките! 8)
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re:Урок за бисквитки, кога?
« Отговор #7 -: 26 Юни 2011, 02:53:00 »
@Avalanche и какво цитирах, че не разбрах?  ???

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re:Урок за бисквитки, кога?
« Отговор #8 -: 26 Юни 2011, 03:05:13 »
@Avalanche и какво цитирах, че не разбрах?  ???
Като видях линка към php.net за бисквитките и като прочетох "Бисквитките са малки текстови файлове" и помислих, че си просто копнал текста от там (не съм чел целия коментар). Ама сега като се замисля и там не го пише това, срещал съм го в w3schools.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re:Урок за бисквитки, кога?
« Отговор #9 -: 26 Юни 2011, 09:45:09 »
Не помня дали Иван го беше казал в уроците си, но да направя една уговорка към изчерпателния урок на Avalanche, за което му благодарим.

Гледайте да записвате възможно най-малко информация в бисквитките. Оптимално е един индефикатор само. Има поне две големи причини за това. По-малката е в производителността. Много по-бързо ще прочетете една информация от при вас, независимо дали е на ФС или СУБД, от колкото от курабийката. Второто по-важно. Бисквитката е при потребителя и ние нямаме контрол върху нея във всеки един момент. Най-простата пакост, която може да свършие просто да я изтрие. Но да не забравяме, че той може да я манипулира и тогава да не се окажем в тъпото положение на Сони. Никога не трябва да имаме доверие на потребителя. В случая подозрителността е здравословна.

И все пак нещо като съвет. Не бих препоръчвал особено на начинаещи да си играят самоволно с вдиане на курабии. По-читаво ще е ползването на готовите в php функции за сесия. Те решават множество гадни проблемчета, които може да ни се натресат.
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re:Урок за бисквитки, кога?
« Отговор #10 -: 26 Юни 2011, 09:48:06 »
Смятам темата за важна за това я предлагам за залепена. Против има ли?
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Урок за бисквитки, кога?
« Отговор #11 -: 26 Юни 2011, 20:07:32 »
Отлично. Отговорът на Avalanche много ме зарадва. Благодаря за отделеното време и внимание, и на включилите се участници.

Позволете да се върна към снимката.
PHPSESSID за мен е име на сесия, дадена от интерпретатора на nau4i.me (справка php.ini на сървъра на nau4i.me). Така си го обяснявам. Но "nau4i.me" го броим 7 пъти. Без една сесия, как да разбирам другите 6 включвания. Едва ли са 6 курабийки или са?

wuser намеква за компроментиране на бисквитка от страна на потребител. Как става това? Аз мога засега да трия бисквитки, защото интерфейса на firefox ми го позволява, но не мога да я извличам. Да речем, влизам от домашния комп тук в форума. Извличам бисквитката, копирам я на флашка и я пренасам на служебния комп. Това на практика постижимо ли е. Firefox 4/5 версия борави с json файл и мисля, че вътре е бисквитката. Къде е златното ключе?

И съзирам леко разминаване с теорията от моите книги. Те учат - пpи нaтоваpени сaйтoве cookie е по-бързо, защото работата по съхранение на информацията става при клиента, а не от сървъра.

С сесия този трик не става, но от друга страна потребителят хлопне ли браузъра, хорото се повежда от начало. Четох, че сесията може да се пренасочи от временен файл на сървъра към база данни и тогава нещата да бъдат сходни като с бисквитка или греша в разсъжденията си.

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re:Урок за бисквитки, кога?
« Отговор #12 -: 26 Юни 2011, 20:37:58 »
Не грешиш, това е препоръчителния вариянт, но за съжаление нямаме урок за вкарване на сесия в база, но все пак има доста по темата в паяжината.

----------
Добавка
----------

За да не съм голословен, ето една връзчица:

http://www.phpclasses.org/search.html?words=session+handler&restrict[0]=C&restrict[1]=B&restrict[2]=D&forums=F&go_search=1&advanced=1

или

http://www.phpclasses.org/search.html?words=session+database&restrict[0]=C&restrict[1]=B&restrict[2]=D&forums=F&go_search=1&advanced=1
« Последна редакция: 26 Юни 2011, 20:58:01 от wuser »
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re:Урок за бисквитки, кога?
« Отговор #13 -: 26 Юни 2011, 20:56:55 »
Ами разбира се, ако аз ти изпратя целият си профил от моят браузър и ти го копираш в своя, ти ще имаш пълен достъп до всички мои акаунти и сайтове които посещавам.
Естествено, има доста начини да се предпазиш, ако ти се задълбава може да почнеш от тук - http://support.mozilla.com/en-US/home ( разбира се, това е валидно за лисицата), но принципа при останалите браузъри е подобен.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

infinity1305

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 55
Re:Урок за бисквитки, кога?
« Отговор #14 -: 09 Декември 2011, 22:09:13 »
...
Да кажем, че имаме форма за регистрация и имаме бутон запомни ме.

Код: PHP
  1. if($_POST['fs'] == 1){//пращаме формата
  2.    if($username == $username && $password == $password){//проверки блабла
  3.        //имаме намерен запис в БД, потребителя ще бъде логнат
  4.        setcookie('username', $username, time()+60*60 #1час); //имаме пратена бисквитка
  5.   }
  6. }
  7.  
  8.  
  9. //следващия път като потребителя се логва в системата
  10. if($_COOKIE['username'] == $username){
  11.         //това е човека, направо да влиза
  12.         header('Location: logged.php');
  13.     }
  14. }
  15.  
Надявам се, че вече имаш поне малка представа какво са и как може да използваш бисквитките! 8)

ОК, до тук разбрах, но имам нов съществен въпрос, даже разгледах десетки скриптове за логване с $_COOKIE или $_SESSION предоставени в нета.

На въпроса. Преди да вляза в форума тук, аз прочетох бисквитките на nau4i.me. Записах живота им. Влязох директно (без да се налага авторизация) и пак прочетох живота им. Той се удължи напред в времето. Чудесно, но как?

Ти казваш "следващия път като потребителя се логва в системата" -> "това е човека, направо да влиза". Taка и става, иначе трябваше отново да пиша име и парола в формата. Аз влязох направо, но в фонов режим излиза, че логиката сравни бисквитките ми. Опозна ме и им удължи живота. Къде точно става тази врътка. Те това искам да науча, защото на една гола сесия до затваряне на браузъра прилича на аматьорщина.

Мисля си, че влизането ми направо, след съответните проверки, скриптът е презаписал живота на бисквитки. Така ли е ?
« Последна редакция: 09 Декември 2011, 22:15:40 от infinity1305 »