[Powered by Google Translate] [ПХП Седнице]
[Томи МацВиллиам, Универзитет Харвард]
[Ово је ЦС50.] [ЦС50.ТВ]
Седнице у ПХП се може користити за имплементацију функционалности,
као логовања корисника, у вашем веб апп.
ПХП сесија вам омогућавају да повежете информације
са целе седнице корисника прегледања
а не само једној страници.
Значи као корисник посећује разне ПХП страница које чине ваш сајт,
свака информација у седници ће истрајати.
То значи да се подаци чувају на седници од једне странице
се касније може приступити другој страни.
Складиштење информација у седници је лако,
и ми смо то урадили преко знака долара, наглашавају, капитал СЕССИОН променљиву.
Долар знак, наглашавају, СТК-баш као знаком долара, наглашавају, ГЕТ
и знак долара, наглашавају, ПОСТ-
је асоцијативни низ који се састоји од кључних вредности парова.
Дакле, можемо да користимо синтаксу-као знак за долар, наглашавају, Сессион,
носач, цитат, трла, цитирам, носач, једнако, цитат, бар, цитирам-
да сачувате вредност "бар" у кључном "фоо".
Међутим, пре него што могу да пишу или читају са дужином низа,
ћемо морати да позове специјалну функцију-
седница, наглашавају, старт, () -
и то ће иницијализовати седницу.
Па хајде да погледамо пример.
Наша прва страна, хелло.пхп, користи седницу за излаз неке податке корисника.
Запамтите, ми ћемо морати да користимо сессион_старт пре него што се приступи било какве податке сесије.
Сада смо користећи ПХП иссет да утврди да ли постоји кључ
у $ _СЕССИОН асоцијативног низа.
Ако је кључ постоји, то значи да је корисник у пријављивања,
тако ћемо приказати на име корисника.
Ако то кључ није постављен, то значи да корисник није пријављен још,
тако ћемо приказати везу до логин.пхп.
Па хајде да погледамо логин.пхп.
Овде доле, имамо једну ХТМЛ форму са једним улазом.
Обрасца акција атрибут је $ _СЕРВЕР ['ПХП_СЕЛФ'],
и то једноставно значи да желимо да образац се подноси тренутној датотеци,
који, у овом случају, је логин.пхп.
Па хајде да се вратимо на врх ове датотеке.
Уколико корисник поднео образац, а затим $ _ПОСТ ['име'] мора бити подешена.
За више информација о ХТМЛ форми и пост,
погледајте ПХП Веб развој видео.
У случају да је корисник урадио достави образац,
желели бисмо да напише вредност која су уписали у у седници.
Сада можемо преусмерити корисника на хелло.пхп.
Зато смо чувају улаз корисника на седници,
хелло.пхп ће моћи да приступе вредност која је подешена у логин.пхп.
Дакле, хајде да проверите ово у веб бровсер.
Прво, ми ћемо пронађите хттп://лоцалхост/хелло.пхп.
Ми се овде види да нисмо пријављени у још,
па хајде да кликнете на линк за пријављивање, који ће нас преусмери на логин.пхп.
Ок, ја ћу укуцајте у моје име, које ће бити смештена у седници.
Сјајно! Сада можемо видети мој улаз из логин.пхп на хелло.пхп преко седници.
Дакле, шта је са пријављивањем корисника напоље?
Па, како да се пријавите на корисника, ми смо једноставно складишти вредности у име сесије.
Тако да се пријавите корисника напоље, ми само треба да уклоните тај кључ име
са седнице низа.
Па хајде да погледамо овај последњи фајл, логоут.пхп.
Још једном, ми ћемо морати да позовете сессион_старт ()
пре него што можемо да урадимо било шта у вези седницу.
Сада можемо једноставно назвати сессион_дестрои (),
који ће се побринути да се ослободе свих података у сесији
и преусмеравање корисника Назад на хелло.пхп.
Дакле, ако кликнем на лог оут линк,
можемо видети да је сервер је заборавио ко сам ја,
и ја сам више пријављени
Дакле, шта се овде дешава испод хаубе?
Да би добили понашање смо управо видели,
наш сервер треба да уради 2 ствари.
Прво, сервер мора да некако складишти податке у седници.
Различите ПХП фајлове који садрже сајт
се извршавају као засебне призивањима ПХП преводиоца
па локална променљива не може да се дели између њих.
Уместо тога, сервер мора да складишти своје податке сесије
у неком месту које више. пхп фајлове могу да приступе.
Друго, сервер мора да повезују податке седници само са мојим сесије.
Када сам се пријавите на Фацебоок,
вероватно постоје милиони других људи такође пријављени у Фацебоок истовремено.
Али сервер мора неки начин удруживања своје податке
са мојим тренутне сесије и податке туђем са другом заседању.
Срећом, аутори ПХП мисли о свему овоме за нас,
тако да не треба да се спроведу све ово сами.
Али, хајде да погледамо шта ради ПХП подразумевано.
Када сам посетите страницу која садржи ПХП сессион_старт за први пут,
ПХП ће генерисати велики насумичну вредност.
До сессион_дестрои се зове или ја не посетите било ПХП странице на том сајту за неко време-
да насумице и вероватно јединствен вредност ће бити повезан са мном.
На тај начин сервер има неки начин идентификују своју сесију прегледања
за разлику од неког другог.
Можемо да погледамо тренутне сесије ИД
помоћу ПХП функције, сессион_ид.
Овде смо једноставно оутпуттинг вредност нашег идентификатора сесије.
Дакле, ако ми поново пријавити на веб апп пример,
и сада идите на сессид.пхп,
ћемо видети овај дуг низ знакова,
и да је тренутна идентификатор за моју сесију,
а то је како је сервер праћење ко сам ја.
Ок, али ми смо само пола решили проблем.
Наравно, сервер сада има неки начин ме идентификовање,
али када сам посетите још једну страницу, сервер мора да поново тај исти идентификатор
радије него да генерише нову.
Запамтите, ако ја изјављујем локалну променљиву у фоо.пхп
а затим посетите бар.пхп,
бар.пхп нема начина да сазна шта се десило у фоо.пхп.
Дакле, имплементација седница стандардна ПХП захтева да прегледач подсети на серверу
који ИД сесије се користе.
Ово се спроводи у облику колачића.
Колачић-у поред тога што укусна ужина-
је једноставно мали текст фајл на вашем рачунару
да сервер може писати преко веб претраживача.
Дакле, након ПХП генерише свој јединствени ИД сесије преко сессион_старт,
то ће рећи веб бровсер за складиштење тај идентификатор у локалној текстуалне датотеке, или колачића.
Онда веб претраживач ће обухватити тај идентификатор у сваком захтеву
да чини на сервер.
Дакле стварно, веб сервер се не сећа ко сам ја.
Уместо тога, веб претраживач је једноставно сећајући се јединствени идентификатор
који је генерисан од стране ПХП и онда стално подсећајући на сервер
шта је идентификатор.
На тај начин, информације као мој корисничког имена се чувају на серверу не мојој веб претраживача.
Претраживач једноставно говори серверу где ПХП ускладиштена та информација
па ПХП можете да га преузмете.
Тако да поставља питање, где се ПХП заправо чување ове информације?
Подразумевано, ПХП ће чувати податке сесије
у фајлу унутар / тмп од, или "темп" фолдер.
Име тог фајла ће укључити ИД сесије тако ПХП се одредити
који фајл да читају и пишу од преко само ИД сесије.
У реду. Дакле, хајде да отворимо картицу Нетворк у Цхроме дебуггер
преко иконе француског кључа на врху десно.
Сада идемо да поново хелло.пхп.
Хајде да кликнете на ХТТП захтев за хелло.пхп
а затим кликните на заглавља.
Овде можемо видети да заглавље колачић садржи кључ зове тект,
или ПХП сесија ИД-са вредношћу која је тај исти дуг низ смо видели
када смо посетили сессид.пхп.
То је тачно како бровсер подсећајући на сервер оно ИД седница би требало да се користи.
То је то, укључујући у ХТТП заглављу.
У реду. Идемо назад на терминалу главу.
Да бисте дошли до / тмп, где се ПХП чување информација сесије по подразумеваној вредности.
Наравно довољно, унутар овог привремену фасциклу,
Овде је фајл који садржи исту тачан ИД сесије.
Ако отворимо овај фајл, можемо да видимо како се ПХП представља моју сесију на диску.
Овде стринг "Томи" се чувају за кључне 'име,'
који је управо оно што смо очекивали.
И то је преглед сесија у ПХП.
Оно што смо управо видели је само стандардна реализација сесија.
У ствари, многи сајтови промените ово подразумевано понашање
ефикасније складиштити ПХП сесије
у интересу побољшања перформанси.
Моје име је Томи, а то је ЦС50.
[ЦС50.ТВ]