[Powered by Google Translate] [PHP Session] [Tommy MacWilliam, Harvard University] [Ito ay CS50.] [CS50.TV] Mga Session sa PHP ay maaaring gamitin upang ipatupad ang pag-andar, tulad ng mga pag-login ng user, sa iyong web app. Session PHP-daan sa iyo upang iugnay impormasyon may buong session ng pagba-browse ng gumagamit sa halip na lamang ng isang solong pahina. Kaya nangangahulugan na bilang user na bumisita sa iba't-ibang mga pahina ng PHP na bumubuo ng iyong website, anumang impormasyon sa session ay nanatili pa rin. Kaya nangangahulugan na ang data na iyon na naka-imbak sa session sa pamamagitan ng isang pahina Maaari mamaya ma-access ng isa pang pahina. Ang pag-iimbak ng impormasyon sa isang session ay madali, at ginagawa namin ito sa pamamagitan ng pag-sign dolyar, salungguhit, kabisera session variable. Dollar lagdaan, salungguhit, mga session-lamang tulad ng dollar sign, salungguhit, GET at dollar sign, salungguhit, POST- ay isang nag-uugnay array na binubuo ng mga pangunahing mga pares ng halaga. Kaya maaari naming gamitin syntax-tulad ng dollar sign, salungguhit, session, bracket, quote, foo, quote, bracket, katumbas, quote, bar, quote- upang i-imbak ang halagang "bar" sa key "foo." Gayunpaman, bago namin isulat o basahin mula sa session array, kakailanganin naming tumawag sa isang espesyal na function na- session, salungguhit, simulan, () - at ito ay initialize ang session. Kaya ipaalam sa tumagal ng isang pagtingin sa isang halimbawa. Ang aming unang pahina, hello.php, ay gumagamit ng session sa output ilang data sa user. Tandaan, kailangan nating gamitin session_start bago namin ma-access ang anumang data ng session. Ngayon na aming ginagamit isset PHP upang matukoy kung umiiral na ang key sa $ _SESSION nag-uugnay array. Kung umiiral na key, nangangahulugan na ang gumagamit ay naka-log in, kaya ipapakita namin ang pangalan ng user. Kung na key ay hindi nakatakda, nangangahulugan na ang gumagamit ay hindi pa naka-log in, kaya ipapakita namin ang isang link sa login.php. Kaya ipaalam sa tumagal ng isang pagtingin sa login.php. Down dito, mayroon kaming isang solong form na may isang solong pag-input ng HTML. Katangian ng pagkilos Ang form ay $ _SERVER ['PHP_SELF'], at ito ay nangangahulugan lamang na gusto namin ang form na ito upang isumite sa kasalukuyang file, na kung saan, sa kasong ito, ay login.php. Kaya sabihin bumalik sa tuktok ng file na ito. Kung isinumite ang form ng user, pagkatapos ay $ _POST ['pangalan'] ay dapat na nakatakda. Para sa karagdagang impormasyon tungkol sa mga form ng HTML at mag-post, tingnan ang Web Development video PHP. Sa kaso na ginawa isumite ang form ng user, nais naming isulat ang halaga na kanilang nai-type sa papunta sa session. Ngayon ay maaari naming i-redirect ang gumagamit sa hello.php. Dahil naka-imbak namin ang pag-input ng user sa session, ay hello.php ma-access ang halaga na itinakda sa login.php. Kaya ni-check out na ito sa isang web browser ipaalam. Una, kailangan namin mag-navigate sa http://localhost/hello.php. Maaari naming makita dito na hindi pa namin nakapag-log in, kaya i-click ang link sa pag-login, na kung saan ay nagre-redirect sa amin upang ipaalam sa login.php. Okay, makikita-type sa ko ang aking pangalan, na pagkatapos ay naka-imbak sa session. Mahusay! Ngayon ay maaari naming makita ang aking input mula sa login.php sa hello.php sa pamamagitan ng session. Kaya, kung ano ang tungkol sa pag-log ang gumagamit out? Well, upang mag-log ang gumagamit sa, i-imbak namin sa isang halaga sa pangalan session. Kaya mag-log ang gumagamit out, kailangan lang namin upang alisin na ang pangalan key mula sa sesyon ng array. Kaya ipaalam sa tumagal ng isang pagtingin sa ito huling file, logout.php. Muli, kailangan namin upang tumawag session_start () bago namin maaaring gumawa ng anumang bagay na may kaugnayan session. Ngayon ay maaari namin lamang tumawag session_destroy (), na kung saan ay magdadala sa pag-aalaga ng inaalis ng lahat ng mga data sa session at pagkatapos ay i-redirect ang gumagamit pabalik sa hello.php. Kaya kung nag-click ako sa Log out na link, maaari naming makita na ang server ay nakalimutan kung sino ako, at ako ay hindi na naka-log in Kaya kung ano ang nangyayari sa dito sa ilalim ng hood? Upang makuha ang pag-uugali Nakita namin, Kailangang gawin 2 bagay na aming server. Una, kailangan ng server upang kahit papaano iimbak ang data sa session. Ang iba't ibang mga file na PHP na binubuo ng isang website ay pinaandar bilang hiwalay na mga invocation ng interpreter PHP kaya lokal na variable ay hindi maaaring ibahagi sa pagitan ng mga ito. Sa halip, kailangan ng server na mag-imbak ng aming data session sa ilang mga lugar ay makaka-access na maramihang. file php. Pangalawa, kailangang iugnay ang mga data ng session na may lamang ang aking session sa pagba-browse sa server. Kapag mag-login ko sa Facebook, may mga marahil milyon-milyong mga iba pang mga tao-log din sa Facebook sa parehong oras. Ngunit kailangan ng server ang ilang mga paraan ng pag-uugnay ng aking data sa aking kasalukuyang sesyon at data ng ibang tao sa isa pang session. Sa kabutihang-palad, ang mga may-akda ng PHP naisip tungkol sa lahat ng ito para sa amin, kaya hindi namin kailangan ipatupad ang anuman sa mga ito ang ating mga sarili. Ngunit ipaalam sa tumagal ng isang pagtingin sa kung ano ang ginagawa ng PHP sa pamamagitan ng default. Kapag binisita ko ang isang pahina na naglalaman ng PHP session_start sa unang pagkakataon, PHP ay bubuo ng isang malaking random na halaga. Hanggang sa session_destroy ay tinatawag na-o hindi ko bisitahin ang anumang mga pahinang PHP sa site na iyon para sa isang habang- na random at marahil natatanging halaga ay maiuugnay sa akin. Sa ganoong paraan ang server ay may ilang mga paraan ng pagkilala sa aking sesyon ng pagba-browse kumpara sa ibang tao. Maaari naming tingnan ang kasalukuyang session ID gamit ang function ng PHP, session_ID. Narito lang kami outputting ang halaga ng aming pantukoy ng session. Kaya kung muli naming mag-login sa halimbawa sa web app, at ngayon mag-navigate sa sessid.php, Makikita namin nakikita ang mahabang string ng mga character, at iyon ang kasalukuyang identifier para sa aking sesyon, at iyon ang kung paano ang server ay pinapanatiling track ng kung sino ako. Okay, ngunit kami lamang malutas sa kalahati ang problema. Oo naman, ang server ay mayroon na ngayong ilang mga paraan ng pagkilala sa akin, ngunit kung bibisitahin ko ang isa pang pahina, kailangan ng server upang muling gamitin ang parehong identifier sa halip na pagbuo ng bago. Tandaan, kung Ipinahahayag ko isang lokal na variable sa foo.php at pagkatapos ay bisitahin bar.php, bar.php ay walang paraan ng pag-alam kung ano ang nangyari sa foo.php. Kaya Nangangailangan ang default na php pagpapatupad session na ang browser ipaalala sa server kung saan session ID gamitin. Ito ay ipinatupad sa anyo ng isang cookie. Ang cookie-bukod pa sa pagiging isang masarap na snack- ay lamang ng isang maliit na teksto ng file sa iyong computer na isang server ang makakapagsulat sa pamamagitan ng web browser. Kaya pagkatapos ay bumubuo ng PHP aking mga natatanging session ID sa pamamagitan ng session_start, ito ay pagpunta sa sabihin ang web browser upang mag-imbak ng pantukoy na sa isang lokal na tekstong file, o isang cookie. Pagkatapos ay ang web browser ay magsasama identifier na sa bawat kahilingan na ito ay gumagawa sa server. Kaya talaga, ang web server ay hindi pag-alala kung sino ako. Sa halip, ang web browser ay nagre-alala sa natatanging identifier na ay binuo sa pamamagitan ng PHP at pagkatapos ay patuloy na nagpapaalala sa server ano identifier na. Sa ganoong paraan, ang impormasyon tulad ng aking mga user name ay nakaimbak sa mga server hindi ang aking mga web browser. Sinasabi lang ng browser ang mga server kung saan naka-imbak ang PHP na impormasyon kaya PHP ay maaaring mabawi ito. Kaya na begs ang tanong, kung saan aktwal na pag-iimbak ay PHP ang impormasyong ito? Sa pamamagitan ng default, mag-iimbak ang PHP iyong data ng session sa isang file sa loob ng / tmp, o ang folder na 'Temp'. Ang pangalan ng file na iyon ay kasama na ang session ID upang maaari matukoy PHP aling file na basahin at isulat mula sa sa pamamagitan lamang ang session ID. Ayos lang. Kaya ni Bubuksan ang tab na Network sa debugger ng Chrome ipaalam sa pamamagitan ng icon na wrench sa kanang itaas. Ngayon magtungo sa hello.php muli ipaalam. Mag-click sa kahilingan ng HTTP upang hello.php Hayaan at pagkatapos ay mag-click sa header. Dito maaari naming makita na ang header ng cookie ay naglalaman ng isang key na tinatawag PHPSESSID, o session ID PHP-may isang halaga na hindi na parehong mahaba ang string Nakita namin kapag binisita namin sessid.php. Ito ay kung paano mismo ay nagpapaalala ng browser ang server kung ano ang session ID dapat gamitin. Ay kabilang Nag nito sa isang HTTP header. Ayos lang. Ni magtungo ang pabalik sa terminal Hayaan. Ni mag-navigate sa / tmp, kung saan PHP ay ang pag-iimbak ang impormasyon ng session sa pamamagitan ng default Hayaan. Sapat Oo naman, sa loob ng pansamantalang folder, narito ang isang file na naglalaman ng parehong eksaktong mga session ID. Kung buksan up namin ang file na ito, makikita namin kung paano ay kumakatawan sa PHP aking session sa disk. Narito ang string "Tommy" ay naka-imbak para sa key 'pangalan,' na kung saan ay eksakto kung ano kami umaasa. At iyon ang isang pangkalahatang-ideya ng mga session sa PHP. Ano Nakita namin lamang ay lamang ang default na pagpapatupad ng mga sesyon. Sa katunayan, maraming mga website baguhin ang default na pag-uugali mag-imbak ng mga session PHP nang mas mahusay sa interes ng mga pagpapabuti ng pagganap. Ang pangalan ko ay Tommy, at ito ay CS50. [CS50.TV]