[Powered by Google Translate] [PHP Седници] [Томи MacWilliam, Универзитетот Харвард] [Ова е CS50.] [CS50.TV] Сесии во PHP може да се користи за спроведување функционалност, како корисник најавувања, во вашиот веб апликација. PHP сесии ќе ви овозможи да се дружат информации со целата сесија на корисникот наместо едноставно да една страница. Па тоа значи дека како корисник посети различни PHP страници кои го сочинуваат вашиот веб-сајт, каква било информација во сесијата ќе продолжи. Па тоа значи дека податоците се чуваат во сесија од една страница подоцна може да се пристапи од страна на друга страница. Складирање на информации во една сесија е лесно, и тоа го правиме преку знакот за долар, долни црти, главниот град сесијата променлива. Знакот за долар, долни црти, сесија само како знакот за долар, долни црти, GET и знакот за долар, долни, пост- е асоцијативна низа се состои од клучните вредност парови. Значи можеме да го користиме синтакса како знакот за долар, долни, сесија, заградата, цитат, foo, цитат, држач еднаква, цитат, бар, понуда- за чување на "бар" вредност во клучот "foo". Сепак, пред да можат да пишуваат или читаат од седницата низа, ние ќе треба да се јавите посебна функција- сесија, долни, на проектот, () - и тоа ќе се иницијализира на сесија. Па ајде да погледнеме еден пример. Нашата прва страница, hello.php, користи на седницата да излез некои податоци за корисникот. Запомни, ние ќе треба да користите session_start пред да можеме да пристапите на некој сесија податоци. Сега ние сме со користење isset PHP е да се утврди дали постои клучните во $ _SESSION асоцијативна низа. Ако постои, кој клуч, тоа значи дека корисникот има најавени во, па ние ќе се прикаже името на корисникот. Ако тој клуч не е наместена, тоа значи дека корисникот не е логиран на уште, па ние ќе прикаже линк до login.php. Па ајде да ги разгледаме во login.php. Овде, имаме една HTML форма со еден влез. Акција атрибут форма е $ _SERVER ['PHP_SELF'], и ова едноставно значи дека ние сакаме форма да се достави до тековната датотека, што, во овој случај, е login.php. Па ајде да се вратиме на врвот на оваа датотека. Ако корисникот поднесе форма, а потоа _POST $ ['именувате'] мора да се постави. За повеќе информации за HTML форми и пост, проверете на PHP Веб развој видео. Во случај дека корисникот не ги достават форма, ние би сакале да се напише во вредноста што ја внеле во во сесија. Сега ние може да се пренасочи на корисникот да hello.php. Затоа што ние сме се чуваат влез на корисникот во сесија, hello.php ќе бидат во можност да пристапите до вредноста која беше поставена во login.php. Па ајде провери ова во веб прелистувач. Прво, ние ќе стигнете до http://localhost/hello.php. Можеме да видиме дека овде не сме логирани во уште, па ајде кликнете на најавите линкот, кој ќе ни се пренасочува кон login.php. Океј, јас ќе тип во Мое име, кои потоа ќе бидат складирани во сесија. Одлично! Сега може да се види мојот влез од login.php на hello.php преку сесија. Значи, она што за да влезете на корисникот надвор? Па, со цел да се најавите на корисникот во, ние едноставно се чуваат вредност во име на сесија. Така да се логирате на корисникот надвор, ние едноставно треба да ја отстрани таа главното име од седницата низа. Па ајде да ги разгледаме во оваа последна датотека, logout.php. Уште еднаш, ние ќе треба да се јавите session_start () пред да можеме да правиме ништо сесија поврзани. Сега ние едноставно може да се јавите session_destroy (), кој ќе се грижи за да се ослободиме од сите податоци во сесија а потоа се пренасочува корисникот назад кон hello.php. Значи, ако јас кликнете на Одјавување линк, можеме да видиме дека серверот го заборави кој сум јас, и јас сум веќе најавени Значи она што се случува тука под хаубата? Со цел да се добие однесувањето ние само видов, нашите сервери треба да направите 2 работи. Прво, на серверот треба некако да ги чувате на податоците во сесија. Различни PHP датотеки кои се состојат од веб-сајт се извршуваат како посебни повикувања на толкувачот PHP па локална променлива не може да се дели меѓу нив. Наместо тоа, серверот треба да ја запази нашите сесија податоци во некое место кое повеќе. php датотеки може да се пристапи. Второ, на серверот треба да се дружат на седницата на податоци со само моја сесија. Кога ќе се најавите на Фејсбук, постојат веројатно милиони други луѓе, исто така, најавени на Фејсбук во исто време. Но на серверот треба на некој начин на асоцирањето моите податоци со мојата тековна сесија и податоци на некој друг со друга сесија. За среќа, авторите на PHP размислувале за сето ова за нас, па ние не треба да се спроведе која било од ова самите. Но, ајде да ги разгледаме во она што PHP го прави од стандардните. Кога ќе ја посетите страницата PHP содржи session_start за прв пат, PHP ќе генерираат голем случаен вредност. Додека session_destroy се нарекува или јас не ја посетите било PHP страници на тој сајт за некое време- дека случаен избор и веројатно уникатна вредност ќе биде поврзан со мене. На тој начин на серверот има некој начин на идентификување на мојата сесија што е спротивно на некој друг. Ние можеме да ги разгледаме во тековната сесија ИД користење на функцијата PHP, session_ID. Тука ние сме едноставно Ставање на вредноста на нашата сесија идентификатор. Значи, ако ние повторно се најавите на пример веб стан, и сега да стигнете до sessid.php, ќе видиме оваа долга низа на карактери, и тоа е сегашната идентификатор за мојата сесија, и тоа како на серверот е следење на она што сум. Океј, но ние сме само реши половина од проблемот. Секако, на сервер сега има некој начин за мене идентификување, но кога ќе го посетам друга страница, серверот треба да повторна употреба дека истиот идентификатор наместо генерирање на нов. Запомни, ако Изјавувам локална променлива во foo.php а потоа посета bar.php, bar.php нема начин да се знае што се случило во foo.php. Па стандардно PHP сесија имплементација бара дека прелистувачот потсетам на серверот кој сесија ИД за употреба. Ова се спроведува во форма на колаче. Колаче во Покрај тоа што е вкусна закуска- е едноставно мала текстуална датотека на вашиот компјутер дека серверот може да напише на преку веб прелистувачот. Па после PHP генерира мојата единствена сесија ИД преку session_start, тоа се случува да се каже на веб пребарувачот за да ја запази дека идентификатор во еден локален текст фајл, или колаче. А потоа на веб прелистувачот ќе вклучуваат дека идентификатор во секое барање дека тоа го прави за да на серверот. Значи, навистина, на веб серверот не е сеќавајќи кој сум јас. Наместо тоа, веб прелистувач е едноставно сеќавајќи се на уникатен идентификатор дека е генерирана од страна на PHP, а потоа постојано потсетувајќи на серверот она што идентификатор е. На тој начин, информации, како моето корисничко име се чува на серверот не мојот веб прелистувач. Прелистувачот едноставно кажува на серверот каде што PHP чуваат тие информации па PHP може да го добие. Така што се поставува прашањето, каде е PHP всушност чување оваа информација? По дифолт, PHP ќе ги чувате вашите сесија податоци во датотека во внатрешноста на / tmp, или "temp" папка. Името на оваа датотека ќе бидат вклучени на седницата проект, па PHP може да се утврди која датотека да читаат и пишуваат од преку само седницата проект. Во ред е. Па ајде отвори јазичето мрежа во дебагерот Хром преку иконата клуч на горниот десен агол. Сега, ајде да се упатат кон hello.php повторно. Ајде да кликнете на HTTP барање за hello.php и потоа кликнете на заглавија. Тука можеме да видиме дека колачето насловот содржи клучни наречен PHPSESSID, или PHP сесија ИД-со вредност која е таа иста долга низа видовме кога го посетивме sessid.php. Ова е точно како пребарувач потсетува на серверот што сесија проект треба да се користи. Тоа е тоа, вклучувајќи во HTTP заглавието. Во ред е. Ајде главата назад до терминалот. Ајде стигнете до / tmp, каде PHP е чување на сесија информации од стандардните. Секако, во внатрешноста на оваа привремена папка, тука е датотека која ги содржи истите точната сесија проект. Ако ние се отвори оваа датотека, можеме да видиме како PHP е претставувајќи мојата сесија на дискот. Тука стрингот "Томи" се чуваат за клучните името " кој е токму она што се очекува. И тоа е преглед на сесии во PHP. Она што ние само видов беше само стандардно имплементација на сесии. Всушност, многу веб-сајтови се промени овој стандардното однесување за да ја запази PHP сесии поефикасно во интерес на подобрување на перформансите. Моето име е Томи, и ова е CS50. [CS50.TV]