Sessions in php - számítástechnika, programozás
A programozásra szánt különféle konferenciákban először mindig olyan érdeklődést kérek, mint a "webes programozás" és a "szkriptek". Az ilyen fórumokon a PHP-vel kapcsolatos kérdések meglehetősen egyszerűek, és csak a PHP közös megértését igénylik, de a leggyakrabban feltett kérdéseim a következők: "Mi a PHP munkamenetek és mi / hogyan lehet őket enni?". Szeretném tisztázni ezt a kérdést egyszer és mindenkorra.
A PHP-t kezdettől fogva mindenki elfogadta, de amint elég nagy projekteket kezdtek létrehozni ezen a nyelven, a fejlesztők új problémával szembesültek: a PHP-nek hiányoztak a globális változók fogalma! Ez azt jelenti, hogy egy bizonyos szkript végrehajtásra került, elküldte a generált oldalt az ügyfélnek, és a szkript által használt összes erőforrást megsemmisítették. Megpróbálom illusztrálni: tegyük fel, hogy van egy oldal két oldala, az index.php és a dothings.php. Ezeknek az oldalaknak a forrása így néz ki:
$ a = "hozzárendeltem index.php-hez";
Ha végrehajtod ezt a két szkriptet, akkor az első oldalon látod a "Azért lett hozzárendelve index.php" felirat, és a második oldal üres lesz.
Nem fogok bejutni a munkamódszerek mechanizmusának technológiai kérdéseire, csak leírni, hogyan kell a PHP-ben dolgozni.
Hogyan kell dolgozni a munkamenetekkel?
Ha megpróbálja a példákat a cikkből (vagy a szkriptekből) bármelyik kereskedelmi tárhelyen, akkor semmi probléma ne legyen a munkamenetekkel való együttműködés során. Ha Ön maga állítja be a szervert (legyen ez valódi kiszolgáló vagy emulátor), hiba léphet fel erről:
"Figyelmeztetés: open (/ var / state / php / sess_6f71d1dbb52fa88481e752af7f384db0, O_RDWR) sikertelen: Nincs ilyen fájl vagy könyvtár (2)".
Ez csak azt jelenti, hogy rosszul van beállítva a PHP. Megoldhatja ezt a problémát a helyes elérési út (a meglévő könyvtárba) írásával mentheti a munkameneteket a php.ini fájlba és indítsa újra a kiszolgálót.
Minden olyan szkriptet, amely a munkamenetekből származó változókat (adatokat) használja, tartalmaznia kell a következő sort:
Ez a parancs megmondja a kiszolgálónak, hogy ez az oldal minden olyan változót igényel, amely ehhez a felhasználóhoz (böngészőhöz) társul. A szerver ezeket a változókat (fájlokból vagy adatbázisokból) veszi át, és ezeket elérhetővé teszi. Nagyon fontos, hogy megnyissunk egy munkamenetet, mielőtt bármilyen adatot elküldenénk a felhasználónak; a gyakorlatban ez azt jelenti, hogy a session_start () függvényt az oldal elején kell hívni, például:
A munkamenet megkezdése után megadhat globális változókat. Ez elemi: hívjuk session_register ('var_name'); és a $ var_name elérhető az összes olyan oldalon, amely a munkamenetet használja. Például kiírjuk a cikk elején megadott programot:
// állítsa be a változó értékét
$ a = "hozzárendeltem index.php-hez";
// regisztráljon változót egy nyitott munkamenetben
// fontos: a változó nevek átkerülnek a session_register () függvénybe
Amikor ezeket a fájlokat futtatja (logikai sorrendben), az első parancsfájl (index.php) a következő eredményt adja vissza:
Minden rendben van. Session betöltve! Menjünk és nézzük meg, mi van ott:
És a második (dothings.php) ez:
Hozzászoktam a index.php-hez
A $ a változó mostantól elérhető a webhely összes olyan oldalán, amelyek elkezdték a munkamenetet.
Egyéb hasznos funkciók a munkamenetekhez:
session_unregister (string) - session <забывает> az adott globális változó értéke;
session_destroy () - a munkamenet megsemmisül (például ha a felhasználó a gombra kattintva elhagyta a rendszert <выход>);
session_set_cookie_params (int élettartam [, string path [, string domain]]) - ezzel a funkcióval beállíthatja, hogy mennyi ideig tart <жить> session az unix_timestamp meghatározásával határozza meg az időt <смерти> ülésén. Alapértelmezés szerint a munkamenet <живёт> Amíg az ügyfél bezárja a böngészőablakot.
Most forduljunk a munkamenet mechanizmusának gyakorlati alkalmazásához. Nézzünk egy pár meglehetősen egyszerű és ugyanakkor hasznos példát.