[Powered by Google Translate] [PHP Posėdžiai]
[Tommy MacWilliam, Harvardo universitetas]
[Tai CS50.] [CS50.TV]
Sesijos PHP gali būti naudojama įgyvendinti funkcionalumą,
kaip įėjimai, jūsų interneto app.
PHP sesijų leidžia susieti informaciją
su naudotojo visą naršymo sesijos
o ne vien tik į vieną puslapį.
Taigi, tai reiškia, kad, kaip vartotojas apsilanko įvairių PHP puslapius, kurie sudaro jūsų svetainę,
bet koks sesijos informacija išliks.
Taigi, tai reiškia, kad saugomi sesijos vieno puslapio duomenys
vėliau gali būti prieinama kitą puslapį.
Saugoti informaciją sesija yra labai paprasta,
ir mes padaryti per dolerio ženklas, pabrėžti, kapitalo sesijos kintamasis.
Doleris ženklas, pabrėžti, seanso kaip dolerio ženklas, pabrėžti, GAUTI
ir dolerio ženklas, pabrėžti, PO
yra masyvą, sudarytas iš pagrindinių vertės poromis.
Taigi, mes galime naudoti sintaksės panašus dolerio ženklas, pabrėžti, sesijos
laikiklis, citata, foo citata, laikiklis, lygios, citata, baras, citata-
saugoti vertės "kartelę" į rakto "foo".
Tačiau, kol mes galime skaityti iš sesijos masyvo arba rašyti,
mes turime skambinti specialią funkciją-
sesija, pabrėžti, pradėti (), -
ir tai bus inicijuoti seansą.
Taigi galime pažvelgti pavyzdžiui išvaizdą.
Mūsų pirmasis puslapis, hello.php, naudoja sesijos produkcijos kai kuriuos duomenis vartotojui.
Atminkite, kad mes turime naudoti session_start kol mes galime prieiti prie bet kurios sesijos duomenis.
Dabar mes naudojame PHP isset nustatyti, ar raktas egzistuoja
į $ _SESSION masyvą.
Jei tas raktas yra, tai reiškia, kad vartotojas prisijungęs,
todėl rodysime vartotojo vardą.
Jei tai raktas nėra nustatytas, tai reiškia, kad vartotojas dar neprisijungė,
todėl rodysime nuorodą į login.php.
Taigi, galime pažvelgti į login.php išvaizdą.
Žemyn čia, mes turime vieną HTML formą su viena įėjimo.
Formą veiksmai atributas yra $ _SERVER ['PHP_SELF'],
ir tai tiesiog reiškia, kad mes norime, forma turi būti pateikta per dabartinę failą,
, kuris šiuo atveju yra login.php.
Taigi, grįžkime prie šio failo viršuje.
Jei naudotojas pateikė formą, tada $ _POST ['vardas'] turi būti nustatytas.
Daugiau informacijos apie HTML formas ir pareigas,
patikrinkite PHP Web Development vaizdo.
Tuo atveju, kai vartotojas padarė pateikti formą,
mes norėtume rašyti vertę, kad jie įvedėte į sesiją.
Dabar mes galime nukreipti vartotoją į hello.php.
Kadangi mes saugomi vartotojo indėlį į sesijos
hello.php galės naudotis vertę, kuri buvo nustatyta per login.php.
Taigi galime tai patikrinti naršyklėje.
Pirma, mes pereiti į http://localhost/hello.php.
Mes matome, kad čia mes dar neprisijungė,
tad spustelėkite prisijungimo nuorodą, kuri bus nukreipti mums login.php.
Gerai, aš įvesti savo vardą, kuris bus saugomas sesijos.
Puiku! Dabar mes galime matyti mano pirkimo iš login.php apie hello.php per sesiją.
Taigi, ką apie prisijungti vartotojui iš?
Na, norint prisijungti vartotojui, mes tiesiog laikyti reikšmę į sesijos pavadinimu.
Taigi, norint prisijungti vartotojui iš, mes tiesiog reikia pašalinti tokiu pavadinimu klavišą
nuo sesijos masyvo.
Taigi, galime pažvelgti į šio paskutinio failo išvaizdą, logout.php.
Dar kartą, mes turime skambinti session_start ()
kol mes galime padaryti nieko sesiją susijusi.
Dabar mes galime tiesiog paskambinkite session_destroy ()
kurios rūpinsis atsikratyti visų sesijos duomenų
ir tada nukreipti vartotoją į hello.php.
Taigi, jei aš spustelėkite Atsijungti nuorodą
matome, kad serveris pamiršta, kas aš esu,
ir aš nebe prisijungęs
Taigi, kas čia vyksta po gaubtu?
Siekiant gauti tokį elgesį mes tiesiog pamačiau,
mūsų serveris reikia padaryti 2 dalykus.
Pirma, serveris turi kažkaip saugoti į sesijos duomenis.
Skirtingos PHP failus, kurie sudaro svetainę
vykdomi kaip atskiri kreipinius į PHP vertėjo
todėl vietos kintamasis negali būti dalijamasi tarp jų.
Vietoj to, kad serveris turi saugoti mūsų panaudos duomenis
kai vieta, kad daug. php failai gali prieiti.
Antra, serveris turi susieti panaudos duomenis tik mano naršymo seansą.
Kai aš prisijungti prie "Facebook",
Tikriausiai yra milijonai kitų žmonių, taip pat prisijungęs prie "Facebook" tuo pačiu metu.
Bet serverį reikia šiek tiek susieti savo duomenis kaip
mano dabartinės sesijos ir kažkieno duomenimis su kitoje sesijoje.
Laimei, PHP autoriai galvojo apie visa tai mums,
todėl nereikia įdiegti bet tai patys.
Tačiau galime pažvelgti, kas PHP veikia pagal nutylėjimą išvaizdą.
Kai grįžtu PHP puslapį, kuriame session_start pirmą kartą,
PHP sukels didelį atsitiktinių vertę.
Iki session_destroy vadinama ar aš ne aplankyti bet PHP toje vietoje tam tikrą laiką,
kad atsitiktinai ir tikriausiai unikalus vertė bus susijęs su manimi.
Tokiu būdu serveris turi galimybę nustatyti savo naršymo seansą būdas
, o ne kažkieno.
Galime pažvelgti į dabartinės sesijos ID išvaizdą
naudojant PHP funkciją, session_id.
Čia mes tiesiog išvedė mūsų sesijos identifikatorių vertę.
Taigi, jei mes vėl prisijungti prie pvz. interneto app,
o dabar pereiti į sessid.php,
matysime šį ilgą eilutę simbolių,
ir kad dabartinė identifikatorius mano sesijos
ir tai, kaip serveris yra sekti, kas aš esu.
Gerai, bet mes tik išspręsta pusė problemos.
Žinoma, serveris dabar turi galimybę nustatyti man kelią,
bet kai aš aplankyti kitą puslapį, serverį, reikia pakartotinai tą patį identifikatorių
o ne sukurti naują.
Atminkite, kad jei aš pareiškiu, vietos kintamąjį foo.php
ir tada eikite bar.php,
bar.php neturi žinoti, kas atsitiko foo.php kelią.
Taigi, pagal nutylėjimą PHP sesijos įgyvendinimas reikalauja, kad naršyklė priminti serverį
kurios sesijos ID naudoti.
Tai įgyvendinta slapuko forma.
Slapukas yra ne tik skanus užkandis-
yra tiesiog mažas tekstinis failas jūsų kompiuteryje
kad serveris gali rašyti per naršyklę.
Taigi po PHP sukuria savo unikalų sesijos ID per session_start,
jis ketina pasakyti naršyklę saugoti tą identifikatorių vietos tekstinį failą, ar sausainis.
Tada naršyklė bus įtraukti tą identifikatorių kiekvieną prašymą
kad ji daro į serverį.
Taigi tikrai, žiniatinklio serveris yra ne prisiminti, kas aš esu.
Vietoj to, interneto naršyklė tiesiog prisiminti unikalus identifikatorius
, kuris buvo sukurtas naudojant PHP ir tada nuolat priminti serverį
kas, kad identifikatorius.
Tokiu būdu, informacija kaip mano vartotojo vardą, yra saugomi serveryje ne mano interneto naršyklėje.
Naršyklė tiesiog pasakoja serveryje, kur PHP saugomi, kad informacija
taip PHP gali gauti.
Taigi, kad kyla klausimas, kur yra PHP tikrųjų būtų saugoma šią informaciją?
Pagal nutylėjimą, PHP bus laikyti savo sesijos duomenis
į vidinį iš / tmp, arba "Temp" kataloge failą.
Šio failo vardas bus sesijos ID, kad PHP gali nustatyti
kuris failas skaityti ir rašyti nuo per tik sesijos ID.
Gerai. Taigi galime atverti tinklo skirtuką Chrome "debugger
per veržliarakčio piktogramą viršutiniame dešiniajame kampe.
Dabar tegul galva hello.php dar kartą.
Leiskite paspauskite ant HTTP užklausa į hello.php
ir tada spustelėkite antraštes.
Čia mes matome, kad slapukas antraštėje yra raktas vadinamas PHPSESSID,
arba PHP sesijos ID, kurio reikšmė yra ta pati ilgą eilutę mes matėme
kai lankėmės sessid.php.
Tai yra būtent tai, kaip naršyklė primenanti serverį ir sesijos ID turi būti naudojamas.
Tai įskaitant jį į HTTP antraštę.
Gerai. Leiskite grįžkite į terminalą.
Leiskite pereiti į / tmp, kur PHP saugoti informaciją panaudos pagal nutylėjimą.
Be abejo, viduje šį laikinąjį aplanką,
čia failas, kuriame pats tiksliai sesijos ID.
Jei mes atverti šį failą, mes galime pamatyti, kaip PHP, atstovaujanti savo session diską.
Čia eilutė "Tommy" yra laikomas pagrindine "pavadinimas"
kuri yra būtent tai, ko mes tikėjomės.
Ir tai sesijų PHP apžvalga.
Ką mes tiesiog pamačiau, buvo tik numatytasis įgyvendinimas sesijų.
Tiesą sakant, daugelis svetainių, pakeisti šią numatytąją elgseną
efektyviau saugoti PHP sesijas
siekiant pagerinti našumą interesus.
Mano vardas Tomas, o tai CS50.
[CS50.TV]