[Powered by Google Translate] [PHP Sessions]
[Tommy MacWilliam, Harvard University]
[To je CS50.] [CS50.TV]
Sessions v PHP možno použiť na implementáciu funkcií,
ako je prihlásenie užívateľa, vo Vašom webovom aplikácie.
PHP sessions vám umožní priradiť informácie
s celou relácii užívateľa
skôr než len jednu stránku.
Takže to znamená, že ako používateľ navštívi rôzne stránky s PHP, ktoré tvoria vaše webové stránky,
všetky informácie v relácii bude pretrvávať.
To znamená, že dáta uložené v relácii o jednu stranu
môže byť neskôr pristupovať inú stránku.
Uloženie informácií v relácii je ľahké,
a my tak urobiť prostredníctvom znak dolára, podčiarkovník, kapitál SESSION premenné.
Znak dolára, podčiarkovník, SESSION, rovnako ako znak dolára, podčiarkovník, GET
a znak dolára, podčiarkovník, POST-
je asociatívne pole sa skladá z kľúča a hodnoty.
Takže môžeme použiť syntax, ako znak dolára, podčiarkovník, SESSION,
držiak, citácie, foo, citácie, držiak, rovná, citácie, bar, citácie-
uložiť hodnotu "bar" na kľúč "foo".
Avšak predtým, než môžeme písať alebo čítať z poľa zasadnutí,
budeme musieť zavolať špeciálnu funkciu-
sedenie, podčiarkovník, štart () -
a to bude inicializovať reláciu.
Takže poďme sa pozrieť na príklad.
Naša prvá strana, hello.php, používa relácie výstupu niektoré údaje pre užívateľa.
Pamätajte si, že budeme musieť použiť session_start, než budeme môcť prístup k dátam relácie.
Teraz sme pomocou PHP isset určiť, či existuje kľúč
v $ _SESSION asociatívneho poľa.
Existuje-li, že kľúč, to znamená, že má používateľ prihlásený,
takže budeme zobrazí meno užívateľa.
Ak nie je nastavená, že kľúč, to znamená, že užívateľ nie je prihlásený ešte,
takže budeme zobrazí odkaz na login.php.
Takže poďme sa pozrieť na login.php.
Tu dole, máme jeden HTML formulár s jedným vstupom.
Formulár je akčná atribút je $ _SERVER ['PHP_SELF'],
a to jednoducho znamená, že chceme, aby forma majú byť predložené do aktuálneho súboru,
, Ktoré, v tomto prípade, je login.php.
Takže sa vráťme na začiatok tohto súboru.
Ak užívateľ predložil vyplnený formulár, potom $ _POST ['name'] musí byť nastavený.
Pre viac informácií o HTML formulárov a miesto,
pozrite sa na PHP Web Development videa.
V prípade, že užívateľ urobil odoslaní formulára,
by sme chceli zapísať hodnotu, že zadali v do relácie.
Teraz môžeme presmerovať užívateľa na hello.php.
Vzhľadom k tomu, že sme uložené vstup užívateľa do relácie,
hello.php bude mať prístup k hodnote, ktorá bola nastavená v login.php.
Takže poďme sa pozrieť na to vo webovom prehliadači.
Po prvé, budeme navigovať na http://localhost/hello.php.
Vidíme tu, že sme neprihlásený ešte,
tak sa poďme kliknite na odkaz pre prihlásenie, ktorá nás bude presmerovať na login.php.
Dobre, budem písať svoje meno, ktoré potom budú uložené v relácii.
Skvelé! Teraz môžeme vidieť môj vstup z login.php na hello.php prostredníctvom relácie.
Takže, čo odhlásenia užívateľa z?
No, aby sa prihlásenie užívateľa v, jednoducho skladovať hodnotu do názvu relácie.
Takže pre prihlásenie užívateľa sa, my jednoducho potrebujeme odstrániť, že názov kľúče
z poľa relácie.
Takže poďme sa pozrieť na tento posledného súboru, logout.php.
Opäť budeme musieť volať session_start ()
predtým, než môžeme robiť čokoľvek relácie súvisiace.
Teraz môžeme jednoducho volať session_destroy (),
ktorý sa bude starať, ako sa zbaviť všetkých dát na zasadnutí
a potom presmeruje užívateľa späť do hello.php.
Takže keď som kliknite na odkaz Odhlásiť,
môžeme vidieť, že server zabudol, kto som,
a ja som už prihlásení
Takže to, čo sa tu deje pod kapotou?
S cieľom získať správanie sme práve videli,
Náš server je potrebné urobiť dve veci.
Po prvé, server musí nejakým spôsobom ukladať dáta v relácii.
Rôzne PHP súbory, ktoré tvoria webové stránky
sú vyhotovené ako samostatné vyvolanie PHP interpretru
takže lokálna premenná nemôže byť zdieľaná medzi nimi.
Namiesto toho, server musí ukladať naše dáta relácie
na nejakom mieste, ktoré viac. php súbory môžu pristupovať.
Po druhé, potrebuje server spájať dáta relácie s jedinou mojou relácii.
Keď som sa prihlásiť na Facebook,
tam sú asi milióny ďalších ľudí tiež prihlásený do Facebooku naraz.
Ale server potrebuje nejaký spôsob, združujúca svoje údaje
s mojou aktuálnej relácie a údaje niekto iný s inou relácii.
Našťastie autori PHP myslel o tom všetkom to pre nás,
takže sa nie je potrebné vykonávať nič z toho sami.
Ale poďme sa pozrieť na to, čo robí PHP v predvolenom nastavení.
Keď som navštíviť stránku PHP obsahujúce session_start prvýkrát,
PHP bude generovať veľké náhodné hodnoty.
Do session_destroy sa nazýva alebo nemám navštíviť nejaké stránky s PHP na tomto mieste na chvíľu,
že náhodné a pravdepodobne jedinečná hodnota bude spojená so mnou.
Tak server má nejaký spôsob, ako identifikovať svoju reláciu prehľadávania
na rozdiel od niekoho iného.
Môžeme sa pozrieť na aktuálne ID relácie
pomocou funkcie PHP, session_id.
Tu sme proste na výstupe hodnotu našej identifikátor relácie.
Takže ak sa znova prihlásiť na príklade webové aplikácie,
a teraz prejdite na sessid.php,
uvidíme, tento dlhý reťazec znakov,
a to je aktuálny identifikátor pre moju zasadnutie,
a to, ako je server sledovanie, kto som.
Dobre, ale my sme len vyriešiť polovicu problému.
Iste, server má teraz nejaký spôsob, ako ma identifikáciu,
ale keď som sa navštíviť inú stránku, server potrebuje znovu ten rovnaký identifikátor
skôr než vytvárať nové.
Pamätajte si, že keď som deklarovať lokálne premenné v foo.php
a potom navštívte bar.php,
bar.php nemá žiadny spôsob, ako zistiť, čo sa stalo v foo.php.
Takže implementácia sedenie predvolené php vyžaduje, aby prehliadač pripomenul server
čo ID relácie použiť.
To je realizované v podobe cookie.
Cookie-okrem toho, že chutné občerstvenie
je jednoducho malý textový súbor v počítači
že server môže písať prostredníctvom webového prehliadača.
Takže potom, čo PHP generuje svoj unikátny ID relácie pomocou session_start,
to bude rozprávať webový prehliadač pre uloženie, že identifikátor v miestnom textovom súbore alebo súboru cookie.
Potom webový prehliadač bude obsahovať tento identifikátor každej žiadosti
že je na server.
Takže naozaj, webový server nie je spomenul, kto som.
Namiesto toho, webový prehliadač je jednoducho pamätať jedinečný identifikátor
, Ktorý bol vytvorený pomocou PHP a neustále pripomínať server
čo to je identifikátor.
Tak, informácie, rovnako ako moje užívateľské meno je uložený na serveri, nie môj webovom prehliadači.
Prehliadač jednoducho hovorí serveri, kde PHP uložené informácie
takže PHP môže načítať.
Tak to vyvoláva otázku, kde je PHP vlastne ukladanie týchto informácií?
V predvolenom nastavení PHP bude ukladať vaše dáta relácie
v súbore vo vnútri z / tmp alebo zložky "temp".
Názov tohto súboru bude obsahovať ID relácie, takže PHP môže určiť,
ktorý súbor pre čítanie a zápis z iba pomocou ID relácie.
Dobrá. Takže poďme otvoriť na kartu Sieť v Chrome debuggeru
cez ikonu kľúča v pravom hornom rohu.
Teraz poďme hlavu znovu hello.php.
Poďme kliknite na požiadavke HTTP hello.php
a potom kliknite na hlavičku.
Tu môžeme vidieť, že záhlavie cookie obsahuje kľúč s názvom PHPSESSID,
alebo PHP ID relácie, s hodnotou, ktorá je, že rovnaký dlhý reťazec videli sme
keď sme navštívili sessid.php.
To je presne tak, ako prehliadač pripomenul server, čo ID relácie by mali byť použité.
Je to vrátane to v hlavičke HTTP.
Dobrá. Poďme späť k terminálu.
Poďme prejdite do adresára / tmp, kde PHP je ukladanie informácií o relácii v predvolenom nastavení.
Naozaj, v tejto dočasnej zložky,
Tu je súbor, ktorý obsahuje presne rovnaký ID relácie.
Ak by sme otvoriť tento súbor, môžeme vidieť, ako PHP reprezentuje svoju reláciu na disku.
Tu reťazec "Tommy" je uložená na kľúče "meno"
čo je presne to, čo sme očakávali.
A to je prehľad sedenie v PHP.
To, čo sme práve videli len Predvolené implementácie sedenie.
V skutočnosti, mnoho internetových stránok zmeniť toto predvolené správanie
efektívnejšie ukladať PHP zasadnutie
v záujme zlepšenia výkonu.
Volám sa Tommy, a to je CS50.
[CS50.TV]