1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [PHP Sessions] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam, Harvardin yliopisto] 3 00:00:04,000 --> 00:00:07,000 [Tämä on CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,920 Sessions PHP voidaan toteuttaa toiminnallisuus, 5 00:00:10,920 --> 00:00:13,440 kuten käyttäjien sisään, Web App. 6 00:00:13,440 --> 00:00:16,920 PHP istuntoja avulla voit liittää tietoja 7 00:00:16,920 --> 00:00:19,680 kanssa käyttäjän koko selainistunnosta 8 00:00:19,680 --> 00:00:22,290 eikä vain yhden sivun. 9 00:00:22,290 --> 00:00:27,330 Niin se tarkoittaa, kun käyttäjä vierailee eri PHP-sivuja, jotka muodostavat sivuston, 10 00:00:27,330 --> 00:00:30,630 tietoja istuntoon jatkuu. 11 00:00:30,630 --> 00:00:34,770 Niin se tarkoittaa, että tallennettu data-istunnon yhden sivun 12 00:00:34,770 --> 00:00:37,580 voidaan myöhemmin käsiksi toisen sivun. 13 00:00:37,580 --> 00:00:40,080 Informaation tallentamiseksi istunto on helppoa, 14 00:00:40,080 --> 00:00:48,790 ja teemme niin kautta dollarin merkki, alaviiva, pääoman istunnon muuttuja. 15 00:00:48,790 --> 00:00:52,620 Dollarin merkki, alaviiva, istunto aivan kuten dollarin merkki, alaviiva, GET 16 00:00:52,620 --> 00:00:54,710 ja dollarin merkki, alaviiva, POST- 17 00:00:54,710 --> 00:00:58,690 on tällainen taulukko koostuu keskeisten arvo-pareja. 18 00:00:58,690 --> 00:01:07,980 Joten voimme käyttää syntaksin kuten dollarin merkki, alaviiva, Session 19 00:01:07,980 --> 00:01:16,000 kiinnike, lainaus, foo, lainaus, kiinnike, vastaa, lainaus, baari, lainaus- 20 00:01:16,000 --> 00:01:20,440 Tallenna arvo "bar" avain "foo". 21 00:01:20,440 --> 00:01:24,030 Kuitenkin ennen kuin voimme kirjoittaa tai lukea istunnon array, 22 00:01:24,030 --> 00:01:26,770 meidän täytyy soittaa erityinen toiminto- 23 00:01:26,770 --> 00:01:34,690 istunto, alaviiva, aloita, () - 24 00:01:34,690 --> 00:01:37,060 ja tämä alustaa session. 25 00:01:37,060 --> 00:01:39,850 Joten katsotaanpa katsomaan esimerkki. 26 00:01:39,850 --> 00:01:46,570 Ensimmäinen sivu, hello.php, käyttää istunnon lähtö joitakin tietoja käyttäjälle. 27 00:01:46,570 --> 00:01:53,920 Muista, meidän täytyy käyttää session_start ennen kuin voimme käyttää mitä tahansa istunnon tiedot. 28 00:01:53,920 --> 00:01:59,010 Nyt käytämme PHP: n isset onko avain on olemassa 29 00:01:59,010 --> 00:02:03,230 in $ _SESSION assosiatiivinen array. 30 00:02:03,230 --> 00:02:07,250 Jos tämä avain on olemassa, se tarkoittaa, että käyttäjä on kirjautunut sisään, 31 00:02:07,250 --> 00:02:10,410 joten näytämme käyttäjän nimi. 32 00:02:10,410 --> 00:02:14,110 Jos tämä ei ole määritetty, se tarkoittaa, että käyttäjä ei ole vielä kirjautunut sisään, 33 00:02:14,110 --> 00:02:17,880 joten näytämme linkin login.php. 34 00:02:17,880 --> 00:02:21,380 Joten katsotaanpa katsomaan login.php. 35 00:02:21,380 --> 00:02:26,260 Tänne, meillä on yksi HTML-lomakkeen, jossa on yksi panos. 36 00:02:26,260 --> 00:02:32,720 Lomakkeen toiminta määrite on $ _SERVER ['PHP_SELF'], 37 00:02:32,720 --> 00:02:37,440 ja tämä tarkoittaa yksinkertaisesti sitä, että haluamme lomake toimitetaan nykyisen tiedoston, 38 00:02:37,440 --> 00:02:41,040 joka tässä tapauksessa on login.php. 39 00:02:41,040 --> 00:02:43,010 Joten mennään takaisin alkuun tämän tiedoston. 40 00:02:43,010 --> 00:02:50,100 Jos käyttäjä lähettänyt lomakkeen, sitten $ _POST ['nimi'] on asetettava. 41 00:02:50,100 --> 00:02:53,750 Lisätietoja HTML-lomakkeiden ja postitse 42 00:02:53,750 --> 00:02:56,510 tutustu PHP Web Development video. 43 00:02:56,510 --> 00:02:59,330 Siinä tapauksessa, että käyttäjä ei lähetä lomake, 44 00:02:59,330 --> 00:03:03,970 haluaisimme kirjoittaa arvon, että ne kirjoitetaan osaksi istuntoon. 45 00:03:03,970 --> 00:03:08,540 Nyt voimme ohjaa käyttäjän hello.php. 46 00:03:08,540 --> 00:03:11,800 Koska olemme tallennettu käyttäjän panosta istuntoon, 47 00:03:11,800 --> 00:03:18,240 hello.php voi käyttää arvoa, joka asetettiin login.php. 48 00:03:18,240 --> 00:03:21,010 Joten tarkistaa tämän selaimen. 49 00:03:21,010 --> 00:03:27,520 Ensinnäkin hyvin navigoida http://localhost/hello.php. 50 00:03:27,520 --> 00:03:30,220 Näemme tässä, että emme ole vielä kirjautunut sisään, 51 00:03:30,220 --> 00:03:35,040 joten katsotaanpa klikkaa login-linkkiä, joka ohjaa meitä login.php. 52 00:03:35,040 --> 00:03:41,760 Okei, minä kirjoita nimeäni, joka sitten tallennetaan istuntoon. 53 00:03:41,760 --> 00:03:48,950 Hienoa! Nyt voimme nähdä minun panosta login.php on hello.php kautta istuntoon. 54 00:03:48,950 --> 00:03:52,270 Entä käyttäjä kirjataan ulos? 55 00:03:52,270 --> 00:03:58,510 No, jotta kirjautua käyttäjälle, me yksinkertaisesti tallennettu arvo otetaan istunnon nimi. 56 00:03:58,510 --> 00:04:03,040 Joten kirjautua käyttäjän ulos, vaan meidän pitää poistaa, että niminäppäimen 57 00:04:03,040 --> 00:04:05,040 alkaen istunto array. 58 00:04:05,040 --> 00:04:09,130 Joten katsomaan tätä viimeistä tiedostoa, logout.php. 59 00:04:09,130 --> 00:04:12,080 Jälleen kerran, meidän täytyy soittaa session_start () 60 00:04:12,080 --> 00:04:15,260 ennen kuin voimme tehdä mitään istuntoon liittyvää. 61 00:04:15,260 --> 00:04:19,240 Nyt voimme yksinkertaisesti soittaa session_destroy (), 62 00:04:19,240 --> 00:04:22,460 joka hoitaa päästä eroon kaikista istunnon tietojen 63 00:04:22,460 --> 00:04:26,790 ja sitten ohjaa käyttäjän takaisin hello.php. 64 00:04:26,790 --> 00:04:30,700 Joten jos klikkaan Kirjaudu ulos-linkkiä, 65 00:04:30,700 --> 00:04:34,690 voimme nähdä, että palvelin on unohtanut kuka olen, 66 00:04:34,690 --> 00:04:36,970 ja olen enää kirjautunut sisään 67 00:04:36,970 --> 00:04:39,910 Joten mitä täällä tapahtuu alla huppu? 68 00:04:39,910 --> 00:04:42,250 Jotta saat käyttäytymistä me vain näki, 69 00:04:42,250 --> 00:04:44,760 meidän palvelin tarvitsee tehdä 2 asioita. 70 00:04:44,760 --> 00:04:48,980 Ensinnäkin palvelimen on jotenkin tallentaa tiedot istunnossa. 71 00:04:48,980 --> 00:04:51,910 Eri PHP-tiedostoja, jotka sisältävät sivusto 72 00:04:51,910 --> 00:04:56,500 toteutetaan erillisinä invocations of PHP tulkin 73 00:04:56,500 --> 00:05:00,550 joten paikallinen muuttuja ei voi jakaa keskenään. 74 00:05:00,550 --> 00:05:04,030 Sen sijaan, palvelin tarvitsee tallentaa myös istunnon tiedot 75 00:05:04,030 --> 00:05:08,440 jossain paikassa, että useita. php-tiedostoja voi käyttää. 76 00:05:08,440 --> 00:05:13,940 Toiseksi palvelin tarvitsee liittää istunnon tiedot vain minun selausistunnon. 77 00:05:13,940 --> 00:05:15,940 Kun kirjaudun sisään Facebookiin, 78 00:05:15,940 --> 00:05:20,460 on luultavasti miljoonat muut ihmiset myös kirjautunut Facebook samaan aikaan. 79 00:05:20,460 --> 00:05:24,200 Mutta palvelin tarvitsee tapa assosioida tietoni 80 00:05:24,200 --> 00:05:28,340 minun nykyisen istunnon ja jonkun toisen tietoja toiseen istuntoon. 81 00:05:28,340 --> 00:05:32,380 Onneksi laatijat PHP ajatellut kaiken tämän meille, 82 00:05:32,380 --> 00:05:35,170 joten meidän ei tarvitse toteuttaa tämän itse. 83 00:05:35,170 --> 00:05:39,540 Mutta katsotaanpa katsomaan mitä PHP tekee oletuksena. 84 00:05:39,540 --> 00:05:44,070 Kun vierailen PHP sisältävä sivu session_start ensimmäistä kertaa, 85 00:05:44,070 --> 00:05:47,930 PHP tulee suuri satunnaisen arvon. 86 00:05:47,930 --> 00:05:53,970 Kunnes session_destroy kutsutaan-tai en käydä mitään PHP-sivuston sivuilla jonkin aikaa- 87 00:05:53,970 --> 00:05:59,050 että satunnainen ja lienee ainutlaatuinen arvo liitetään minua. 88 00:05:59,050 --> 00:06:02,780 Näin palvelin on jotenkin tunnistaa minun selainistunnosta 89 00:06:02,780 --> 00:06:05,710 toisin kuin jonkun toisen. 90 00:06:05,710 --> 00:06:08,780 Voimme katsomaan nykyisen istunnon ID 91 00:06:08,780 --> 00:06:12,380 käyttäen PHP funktio, session_id. 92 00:06:12,380 --> 00:06:17,250 Täällä me yksinkertaisesti syöttöä arvoa meidän session tunnisteen. 93 00:06:17,250 --> 00:06:20,580 Joten jos me taas kirjautua esimerkiksi web app, 94 00:06:20,580 --> 00:06:25,530 ja nyt navigoida sessid.php, 95 00:06:25,530 --> 00:06:27,850 näemme tämän pitkän merkkijonon, 96 00:06:27,850 --> 00:06:31,180 ja se on nykyinen tunniste istuntoni, 97 00:06:31,180 --> 00:06:35,410 ja niin palvelin pitää kirjaa kuka olen. 98 00:06:35,410 --> 00:06:37,670 Okei, mutta olemme vain ratkaista puoli ongelmaa. 99 00:06:37,670 --> 00:06:40,910 Toki palvelin on nyt jotenkin tunnistaa minua, 100 00:06:40,910 --> 00:06:46,060 mutta kun käyn toiselle sivulle, palvelin tarvitsee uudelleen, että sama tunniste 101 00:06:46,060 --> 00:06:48,910 pikemminkin kuin tuottaa uusi. 102 00:06:48,910 --> 00:06:52,760 Muista, jos julistan paikallismuuttujan foo.php 103 00:06:52,760 --> 00:06:55,190 Käy sitten bar.php, 104 00:06:55,190 --> 00:07:00,980 bar.php ei ole mitään keinoa tietää, mitä tapahtui foo.php. 105 00:07:00,980 --> 00:07:07,450 Joten oletus PHP istunto täytäntöönpano edellyttää, että selain muistuttaa palvelimen 106 00:07:07,450 --> 00:07:09,740 joka istuntotunnus käyttää. 107 00:07:09,740 --> 00:07:12,710 Tämä toteutetaan muodossa evästeen. 108 00:07:12,710 --> 00:07:15,370 Cookie-sen lisäksi, että herkullinen välipala- 109 00:07:15,370 --> 00:07:18,630 on yksinkertaisesti pieni tekstitiedosto tietokoneen 110 00:07:18,630 --> 00:07:21,780 että palvelin voi kirjoittaa Web-selaimen kautta. 111 00:07:21,780 --> 00:07:27,300 Niin sen jälkeen PHP luo minun ainutlaatuinen istunnon tunnus kautta session_start, 112 00:07:27,300 --> 00:07:34,210 se tulee kertoa verkkoselain tallentaa että tunnisteen paikallisen tekstitiedosto, tai evästeen. 113 00:07:34,210 --> 00:07:38,490 Sitten web-selain sisältää että tunnisteen jokaiseen pyyntöön 114 00:07:38,490 --> 00:07:40,780 että se tekee palvelimelle. 115 00:07:40,780 --> 00:07:44,280 Siis todella, web-palvelin ei ole muistaa, kuka olen. 116 00:07:44,280 --> 00:07:48,780 Sen sijaan, web-selain on yksinkertaisesti muistaa yksilöllinen tunniste 117 00:07:48,780 --> 00:07:52,730 joka syntyy PHP ja sitten jatkuvasti muistuttaa palvelin 118 00:07:52,730 --> 00:07:55,120 mitä se tunniste on. 119 00:07:55,120 --> 00:08:00,760 Näin tietoja, kuten minun käyttäjätunnus on tallennettu palvelimelle ole minun selaimella. 120 00:08:00,760 --> 00:08:05,190 Selain yksinkertaisesti kertoo palvelin, jossa PHP tallennetut tiedot 121 00:08:05,190 --> 00:08:07,750 joten PHP noutaa sen. 122 00:08:07,750 --> 00:08:12,150 Joten herää kysymys, missä on PHP todella tallentaa tämän tiedon? 123 00:08:12,150 --> 00:08:14,910 Oletuksena PHP tallentaa istunnon tiedot 124 00:08:14,910 --> 00:08:19,540 tiedoston sisällä / tmp, tai "temp" kansioon. 125 00:08:19,540 --> 00:08:24,450 Nimi että tiedosto sisältää istunnon tunnus niin PHP voi määrittää 126 00:08:24,450 --> 00:08:28,620 mikä tiedosto lukea ja kirjoittaa päässä kautta ainoastaan ​​istunnon tunnus. 127 00:08:28,620 --> 00:08:32,280 Selvä. Joten avaa Network-välilehti Chromen debuggeri 128 00:08:32,280 --> 00:08:34,890 kautta jakoavainkuvaketta ylhäällä oikealla. 129 00:08:34,890 --> 00:08:38,409 Nyt suuntaamme hello.php uudelleen. 130 00:08:38,409 --> 00:08:42,270 Katsotaanpa klikkaa HTTP-pyynnön hello.php 131 00:08:42,270 --> 00:08:44,680 ja napsauta otsikot. 132 00:08:44,680 --> 00:08:50,390 Tässä näemme, että evästeen otsikko sisältää avain vieras PHPSESSID, 133 00:08:50,390 --> 00:08:55,980 tai PHP istunto ID-arvo, joka on saman pitkä jono näimme 134 00:08:55,980 --> 00:08:59,290 kun kävimme sessid.php. 135 00:08:59,290 --> 00:09:04,660 Tämä on täsmälleen, miten selain muistuttaa palvelin mitä istunnon tunnus tulisi käyttää. 136 00:09:04,660 --> 00:09:08,180 Se on myös sitä HTTP-otsikko. 137 00:09:08,180 --> 00:09:10,500 Selvä. Lähdetään takaisin terminaaliin. 138 00:09:10,500 --> 00:09:16,450 Katsotaanpa navigoida / tmp, jossa PHP on tallentaa istunnon tiedot oletuksena. 139 00:09:16,450 --> 00:09:19,160 Tosiaan, sisällä tämän väliaikaiseen kansioon, 140 00:09:19,160 --> 00:09:23,550 tässä on tiedosto, joka sisältää täsmälleen samoja istunnon tunnus. 141 00:09:23,550 --> 00:09:28,990 Jos me avata tätä tiedostoa, voimme nähdä, kuinka PHP edustaa istuntoni levyllä. 142 00:09:28,990 --> 00:09:32,870 Tässä merkkijono "Tommy" varastoidaan avaimen "nimi" 143 00:09:32,870 --> 00:09:35,750 joka on juuri odotimme. 144 00:09:35,750 --> 00:09:38,850 Ja se on katsaus istuntojen PHP. 145 00:09:38,850 --> 00:09:42,590 Mitä me vain näki oli vain oletus täytäntöönpanoa istuntoja. 146 00:09:42,590 --> 00:09:45,600 Itse asiassa monet sivustot muuttaa oletustoiminnasta 147 00:09:45,600 --> 00:09:48,280 tallentaa PHP istuntoja tehokkaammin 148 00:09:48,280 --> 00:09:50,390 edun suorituskyvyn parantamiseksi. 149 00:09:50,390 --> 00:09:52,800 Nimeni on Tommy, ja tämä on CS50. 150 00:09:52,800 --> 00:09:56,000 [CS50.TV]