Jinsi ya kusanidi vigezo vya kikao cha unganisho cha mbali cha seva ya terminal? Kipindi cha HTTP Inatuma ombi la mteja


Vipindi katika PHP au kama data kuhusu mtumiaji au mteja anayetembelea tovuti huhifadhiwa wakati wa kusonga kati ya kurasa za tovuti bila ugumu mwingi. Somo ni muhimu sana. Inafaa kwa kuunda 95% ya tovuti.

Ni nini kikao katika php

Vipindi hutumika kuhifadhi data ya muda (kwa mfano, ambayo mtumiaji ametembelea tovuti) wakati wa kuabiri kati ya kurasa za tovuti moja. Wakati wa kutumia vipindi, data huhifadhiwa kwenye faili za muda kwenye seva.
Mara nyingi, vikao (na vidakuzi, pia) hutumiwa wakati wa kuunda maduka ya mtandaoni, vikao, bodi za ujumbe, mitandao ya kijamii, blogu na rasilimali nyingine. Urahisi wa mfumo wa kikao ni kuhifadhi maelezo ya muda ya mtumiaji/mteja aliyeingia, data ambayo inaweza kufikiwa haraka kwa muda fulani. Kipindi kina tarehe ya asili ya kumalizika muda wake - hadi kivinjari kimefungwa. Ukifunga ukurasa pekee, basi unapofungua tovuti, data kuhusu mtumiaji/mteja bado itapatikana.

Mantiki ya kikao

Kipindi (au kikao) ni aina ya hifadhi ya data ya muda. Ninakuonya mara moja kwamba kuokoa kiasi kidogo cha data ni thamani yake. Kwa mfano, kuingia na nenosiri la mtumiaji anayetembelea au nambari yake ya serial kwenye hifadhidata.

Mfano wa kazi
1. Mtumiaji huingia kuingia kwake na nenosiri na huingia kwenye tovuti
2. Data iliyo na kuingia na nenosiri huhifadhiwa katika kikao cha moja ya kurasa za tovuti:

Faili index.php

Kipindi_kuanza(); // kila faili ambayo unataka kutumia data ya kikao lazima iwe na amri ya "kipindi cha kuanza" mwanzoni mwa nambari

$login = "admin";
neno la siri = "pita";
$_SESSION["ingia"] = $ingia; // hifadhi kigezo chenye kuingia
$_SESSION["nenosiri"] = $nenosiri; // hifadhi kigezo kilicho na nenosiri

3. Unapoenda kwenye ukurasa mwingine wa tovuti, data hii pia itapatikana:

Faili mfano.php(au ukurasa mwingine wowote)

Mwangwi "Kuingia kwako ".$_SESSION["ingia"]; // itaonyesha "Kuingia kwako ni msimamizi", ingawa hatukurekodi data yoyote kwenye ukurasa huu!
Angalia, ni rahisi!

4. Ikiwa unataka kufuta data ya kikao, basi unachohitaji kufanya ni:

Faili mfano.php

Kipindi_kuanza(); // "anza kikao" tena

Haijawekwa($_SESSION["ingia"]); // hivi ndivyo utofauti huo haukusajiliwa au "kuharibiwa"
mwangwi "Kuingia kwako ".$_SESSION["ingia"]; // itaonyesha "Kuingia kwako". Kwa kuwa tuliiharibu kwenye mstari wa mwisho, hakuna data

Session_destroy(); // kuharibu kikao. Data yote, ikiwa ni pamoja na $_SESSION["nenosiri"] haipo tena. Wakati wa kuwaomba, hitilafu itaonyeshwa
Kwa ujumla, uhamisho huo ni sawa na njia ya POST, lakini huna tena kuandika nambari nyingi zisizohitajika, na data zote zinazohamishwa kutoka ukurasa hadi ukurasa zimehifadhiwa kwenye faili za muda kwenye seva. Narudia, vikao vinapaswa kuwa na kiasi kidogo cha data, kwa hiyo zinafaa kwa kuhifadhi kuingia / nenosiri, gari la ununuzi na kiasi kingine kidogo.

Kupitisha thamani au mkusanyiko kwa kutumia kipindi cha PHP

Unaweza kuandika sio tu kamba, lakini pia safu ya data kwenye kikao. Usiiongezee tu kwa kiasi cha safu, kwani yote haya yataathiri kasi na nafasi iliyochukuliwa kwenye seva.

Tunatumia tena ukurasa fulani wa kuanza index.php

Kipindi_kuanza();

$r = safu("moja", "mbili", "tatu");

$_SESSION["arr"] = $r;

Kwa ukurasa ambapo kila kitu kitaonyeshwa
Tulihifadhi data kwenye kikao na kufuata kiungo kwenye ukurasa mwingine, ambapo tutaonyesha data zote.

Faili lengwa, ukurasa test.php ambapo tunafungua safu

Kipindi_kuanza();
print_r($_SESSION["arr"]);
// itachapisha
/*
Safu
=> moja
=> mbili
=> tatu
*/
?>
Unaweza kutaka kufafanua somo kwenye . Kwa ujumla, kila kitu kinapaswa kuwa wazi.

Kazi zingine za kufanya kazi na vikao

session_batilisha usajili(kamba)- kikao kinasahau thamani ya variable maalum ya kimataifa;
session_destroy()- kikao kinaharibiwa (kwa mfano, ikiwa mtumiaji aliondoka kwenye mfumo kwa kubofya kifungo cha kuondoka);
session_set_cookie_params(int lifetime [, string path [, string domain]])- kwa kutumia chaguo hili la kukokotoa unaweza kuweka muda ambao kipindi kitaishi kwa kuweka unix_timestamp ambayo huamua wakati wa kifo cha kikao.

Orodha ya vipengele vya kufanya kazi na vikao katika php
session_cache_expire - inarudisha kumalizika kwa kache ya sasa
session_cache_limiter - Inapata na/au kuweka kikomo cha kache cha sasa
session_commit ni lakabu la session_write_close()
session_decode - huamua data ya kikao kutoka kwa mfuatano
session_destroy - huharibu data zote zilizosajiliwa kwa kipindi
session_encode - husimba kwa njia fiche data ya kipindi cha sasa kama mfuatano
session_get_cookie_params - hupata vigezo vya kuki za kikao
session_id - hupata na/au kuweka kitambulisho cha kikao cha sasa
session_is_registered - huamua kama kigezo kimesajiliwa katika kipindi
session_module_name - hupata na/au kuweka moduli ya sasa ya kipindi
session_name - hupata na/au huweka jina la kipindi cha sasa
session_regenerate_id - hurekebisha kitambulisho cha kipindi cha sasa na kipya kilichotolewa
session_register - husajili kigezo kimoja au zaidi kwa kipindi cha sasa
session_save_path - hupata na/au kuweka njia ya kuhifadhi kipindi cha sasa
session_set_cookie_params - huweka vigezo vya kuki za kikao
session_set_save_handler - huweka vipengele vya uhifadhi wa kipindi cha mtumiaji
session_start - huanzisha data ya kipindi
session_unregister - unregisters variable kutoka kikao cha sasa
session_unset - hutoa vigezo vyote vya kikao
session_write_close - huandika data ya kikao na mwisho wa kipindi

Mifano ya kazi ya kikao

Kipimo cha kutazamwa kwa ukurasa wakati wa kipindi. Mfano wazi wa kazi. Hata hivyo, baada ya kufunga kivinjari, hesabu itaanza tena.

Kizuizi cha kutembelewa kwa ukurasa mmoja ndani ya kipindi kimoja

// Mfano rahisi wa kutumia vikao bila Vidakuzi.
session_name("mtihani");
session_start();
$_SESSION["hesabu"] = @$_SESSION["hesabu"] + 1;
?>

Kaunta


Umefungua ukurasa huu katika kipindi chako cha sasa cha kivinjari
nyakati.
Funga kivinjari chako ili kuweka upya kaunta hii.
Bofya hapa kusasisha ukurasa!
Kwa kila mpito kaunta itaongezeka kwa 1)

Asante kwa umakini wako! Bahati nzuri katika juhudi zako!

    Maandishi/html 10/19/2017 7:51:00 Vekta BCO 0

    Kuna wateja 13-15 ambao wameketi kwenye seva ya terminal ya WS2012. Terminal kwenye mashine ya mtandaoni inazunguka. Kwenye mashine tofauti ya DNS, AD na DHCP.

    Swali la 1: jinsi ya kusanidi kikomo cha muda wa kukatwa wakati wa kipindi kisichotumika?

    Katika Usanidi wa Kompyuta wa gpedit.msc -> Vipengee vya Windows -> Huduma za Eneo-kazi la Mbali -> Mpangishi wa Kipindi cha Eneo-kazi la Mbali -> Vipindi vya Kupunguza Muda. Vigezo vyote hapo havijabainishwa. Na wakati huo huo, kwa muda usio na kazi karibu na dakika 20-30. hutupa kila mtu nje.

    Nilitafuta habari nyingi kwenye RUNet, lakini sikuweza kuipata popote kwa WS2012, inapatikana kwa WS2003 pekee.

    Swali la 2: ninawezaje kuhakikisha kwamba baada ya kukata kikao, programu zote zinazofunguliwa kwa mtumiaji hazifungi?

    Wale. Kwa mfano, mtumiaji anapaswa kufukuzwa baada ya dakika 20, wakati kipindi chake chote kinauawa na anapoingia tena, programu zake zote zilizo wazi na docks zimefungwa. Kwa kweli, wakati kuna jibu la swali la 1, nitaweka wakati, lakini bado ningependa kwa mtumiaji asifungue kila kitu tena baada ya kila kuharibika kwa mimba ... Ninaelewa kuwa hii inahusiana na maisha ya kikao, lakini bado, kuna hali ambayo kikao hufa, lakini hali yake imehifadhiwa? Na ikiwa ndio, basi jinsi ya kuisanidi?

    Swali la 3: Je, inawezekana kupunguza haki za kuzima seva katika WS2012?

    Vinginevyo, wakati watumiaji wanaanza kuanza, jopo limefungwa na kuna kitufe cha "nguvu", i.e. mtumiaji yeyote anaweza kuzima seva ya wastaafu kwa makosa na kuacha kazi zote.

    Msimamizi

    Maandishi/html 10/19/2017 11:30:36 Avksentev Sergey 1

    1 Kwa hivyo katika sifa za mkusanyiko kuna kichupo cha "Kikao". Huko unaweza kuona unachohitaji kusanidi.. Au sikuelewa?

    2 Inategemea jinsi mtumiaji anavyofunga kipindi.. Ikiwa unalemaza na kusanidi kutofunga sensor iliyozimwa, basi programu wazi zitabaki .. LAKINI inaonekana kwangu kuwa hili sio wazo nzuri kabisa ... washa tena vituo vizito wakati wote wa usiku ili tu takataka hii yote iliyobaki wazi ifungwe.

    3 Ikiwa watumiaji wako si wasimamizi, basi.. kitufe hiki kwa chaguomsingi huzima na kuondoka tu..

  • Maandishi/html 10/23/2017 10:51:31 Ivan na KO 0

    >>Ulisanidi vipi seva ya wastaafu? Ikiwa una jukumu la RDS lililosanidiwa, na hadi kipindi kimefungwa kabisa (pamoja na programu zote za watumiaji katika kipindi hiki).

    >>Ikiwa una jukumu la RDS lililosanidiwa

    Sijui pa kuangalia?

    >>katika usanidi wa mkusanyiko kuna maisha ya kikao hadi kukatwa

    Sijui pa kuangalia?

    >>Je, una watumiaji kwenye seva ambao ni wasimamizi?

    Ndiyo, wasimamizi.

    >>Kwa chaguo-msingi, watumiaji wa kawaida hawawezi kuzima seva. Lakini unaweza kuficha kitufe hiki kabisa kwenye sera.

  • Maandishi/html 10/23/2017 11:00:12 Ivan na KO 0

    >>Kwa hivyo katika sifa za mkusanyiko kuna kichupo cha “Kipindi.” Huko unaweza kuona unachohitaji kusanidi.. Au sikuelewa?

    Labda umeelewa kwa usahihi, lakini sijui jinsi ya kufanya hivyo, ndiyo sababu ninaandika hapa ... kwa sababu fulani katika RuNet siwezi kupata maelekezo ya kuanzisha seva ya terminal, kwa majukumu na vikao.

    Uliandika katika mali ya mkusanyiko - iko wapi?

    >>Kuangalia jinsi mtumiaji anavyofunga kipindi.. Ukitenganisha na kusanidi kutofunga kipindi kilichozimwa, basi programu zilizofunguliwa zitabaki.. LAKINI inaonekana kwangu kuwa hili si wazo zuri hata kidogo... washa tena vituo vizito wakati wote wa usiku, ili tu takataka hii yote iliyobaki wazi ilifungwa.

    Ningeongeza tu maisha ya kikao, kwa wanaoanza ... naelewa vizuri unachozungumza, vikao vilivyosimamishwa sio maana. Laiti ningejua ni wapi hasa mambo haya yote yamesanidiwa...?

    Sina uzoefu wa kusanidi seva ya wastaafu (hapo awali nilifanya kazi ndani yake kama mteja), ingawa nimekuwa kwenye muundo wa IT kwa muda mrefu, lakini sijawahi kufanya kazi hii. Na singeandika swali hapa ikiwa ningeweza kupata maagizo ya kina juu ya jinsi ya kufanya hivyo kwenye mtandao ...

  • Maandishi/html 10/23/2017 11:13:30 Vekta BCO 0

    >>Ulisanidi vipi seva ya wastaafu? Ikiwa umesanidi jukumu la RDS katika usanidi wa mkusanyiko, kuna kipindi cha maisha hadi wakati wa kukatwa, na hadi wakati ambapo kipindi kimefungwa kabisa (pamoja na programu zote za watumiaji katika kipindi hiki).

    Swali langu ninalolipenda lakini la ajabu sana kwangu ni je umeianzisha vipi? Nadhani inapaswa kuwa wazi kutoka kwa maswali kwamba sio mimi niliyeianzisha. Vinginevyo, ni vigumu sana kuelezea kile nilichoanzisha, na sasa sijui jinsi ya kubadilisha ... amnesia, nk.

    Kwa mara nyingine tena, si mimi niliyeianzisha. Na kwa sababu Sikufanya hivi, basi ujuzi katika mipangilio hii haupo wazi. Kwa hivyo ninauliza wataalamu: jinsi ya kufanya hivyo, tafadhali niambie?

    >>Ikiwa una jukumu la RDS lililosanidiwa

    Sijui pa kuangalia?

    >>katika usanidi wa mkusanyiko kuna maisha ya kikao hadi kukatwa

    Sijui pa kuangalia?

    >>Je, una watumiaji kwenye seva ambao ni wasimamizi?

    Ndiyo, wasimamizi.

    >>Kwa chaguo-msingi, watumiaji wa kawaida hawawezi kuzima seva. Lakini unaweza kuficha kitufe hiki kabisa kwenye sera.

    Jinsi ya kuondoa haki za msimamizi kutoka kwa watumiaji? Je, hii imesanidiwa katika AD au kwingineko kwenye seva ya wastaafu? Jinsi ya kutengeneza sera ya kuficha kitufe cha nguvu?

    Asante mapema kwa uelewa wako na ninatarajia majibu yako ...

    Una zana inayoendelea kwenye seva yako inayoitwa " Meneja wa Seva"majukumu/vipengele huongezwa/huondolewa na kusanidiwa hapo. Angalia utendakazi wa zana hii. Upande wa kushoto kuna mipangilio ya baadhi ya majukumu (imesakinishwa). Ikiwa kuna kipengee cha RDS hapo, nenda nacho, kisha kwenye mkusanyiko. Google jinsi ya kusanidi seva ya mwisho kwenye WS 2012 r2. Unaweza kutafuta kama hii: Google -> "Seva ya terminal 2012 r2 mwongozo wa hatua kwa hatua".

    Kwenye seva (na sio tu kwenye seva) pia kuna chombo cha mega kinachoitwa Usimamizi wa Kompyuta(sio kuchanganyikiwa na Kidhibiti cha Seva) unaweza kuipata kwa kubofya kulia kwenye Start.

    Katika Usimamizi wa Kompyuta, nenda kwa watumiaji wa Mitaa na vikundi, kisha kwa vikundi, kisha kwa wasimamizi, na uone ni nani aliyepo na kwa nini. Unatupa nje kila mtu ambaye hahitaji haki hizi. na uwashe tena seva (hakikisha kuwa haujachukua haki zako, vinginevyo kutakuwa na jitihada ya kuzirejesha baadaye).

    Jinsi ya kuficha kitufe cha Google -> "Ficha kitufe cha kuzima GPO"

    Maoni yaliyotolewa na mimi sio msimamo rasmi wa Microsoft

    Msimamizi

    Maandishi/html 10/25/2017 7:51:20 Ivan na KO 0

    >>Ilikuwa vigumu kukisia kuwa hujui jinsi ya kudhibiti seva, kwani kama sheria, wale wanaokuja hapa angalau Google swali lao kwanza.

    Niliuliza swali zaidi ya mara moja, niliandika hapo juu. Ni mimi pekee niliyetumia Google kwenye rasilimali za lugha ya Kirusi... Kwa kweli hakuna makala yoyote ya maana hapo. Mimi mwenyewe niliona kuwa kuna vyanzo vya Kiingereza, lakini ujuzi wangu wa kiufundi wa Kiingereza hautoshi kwa 100% kuelewa kwa usahihi makala kubwa kuhusu kuanzisha mfumo kutoka mwanzo, ambayo sijawahi kufanya kabla.

    >>Unaweza kutafuta kama hii: Google -> "Seva ya terminal 2012 r2 mwongozo wa hatua kwa hatua. Google -> "Ficha kitufe cha kuzima GPO

    Ninajua jinsi ya kutumia Google, lakini sihitaji mafunzo ya kutumia injini ya utafutaji. Kwa nini sikuangalia katika vyanzo vya lugha ya Kiingereza - niliandika hapo juu ... Iwapo watakuambia kuwa hajui jinsi ya kusanidi seva ya mwisho, hii haimaanishi kuwa mtu huyo hajui jinsi ya Google. . Lakini hukukosa fursa, kama vile 99% ya wataalamu wa IT, kuanza na kumuadibisha na kumfundisha mtu Google. Kwangu mimi, hili limekuwa na ni tatizo katika kuelewa watu wenye miundombinu ya IT. Maonyesho mazuri yana thamani zaidi kuliko pesa. Na hakuna mtaalam wa IT anayekosa hii, kama inavyoonyesha mazoezi, hata wakati wa kuwasiliana na wenzake, kwa kusema.

    Swali liliulizwa - jinsi ya kuanzisha seva ya terminal? Na imefafanuliwa kwa undani kile kinachohitaji kusanidiwa na wapi ... na unaniandikia kuhusu maswali ya Google. Nilimuuliza mtu kuhusu hisabati, na alianza kuhusu hali ya hewa ... ndivyo inavyogeuka. Badala ya kila kitu ulichoandika hapo juu, unaweza kutoa jibu fupi kwa Kirusi, kipindi. Ndio, utaniambia kuwa kuvinjari swali linalohitaji suluhu ni mada zinazohusiana zaidi. Ndio, na hii ni kweli, lakini ikiwa umesoma ujumbe wa kwanza kwa uangalifu, basi neno hili halingehitajika.

    >>Una zana kubwa inayoendelea kwenye seva yako inayoitwa "Meneja wa Seva".

    Hapa mtu anaweza kusoma sauti ya maadili, tayari zaidi kujipima dhidi ya mahali maarufu, mbele ya mtu. Ni kama Prof. bondia atamwonyesha anayeanza jinsi ya kufanya knockout, kwenye uso wake na bila maandalizi ... njia ya ajabu sana, kumsaidia mtu na kujibu maswali.

    Fomu yako iko katika Kirusi, swali lilikuwa kwa Kirusi, na ungependa kupokea jibu kwa Kirusi.

    Bila maadili - kwa nini hukutumia Google? Na kuna kitufe cha tarumbeta kama Google, nk.

    Inaleta tija zaidi kufanya kazi kwa mtindo wa kujibu maswali.

    Swali: Jinsi ya kuanzisha hii na hiyo? Jibu: nenda huko na ufanye hivi na hivi.

  • Maandishi/html 10.25.2017 8:25:04 Vekta BCO 0

    Washa " swali - jinsi ya kuanzisha seva ya terminal"Unaweza kujibu kwa makala ya kurasa 10-15 - hii sio muundo wa jukwaa. Nilikupa maswali maalum katika injini ya utafutaji ambayo itakuongoza kwenye matokeo yaliyohakikishiwa. Pia kuna habari nyingi juu ya rasilimali za lugha ya Kirusi. kwa mfano kwenye tovuti za Habré na zinazofanana, ikiwa huipati, basi angalia bado unageuka kuwa mbaya.

    Ili kutoa jibu wazi, unahitaji kupata swali wazi. nilikuuliza sio kuhubiri swali katika ujumbe wa kwanza, ambalo nilipata jibu kwa mtindo wa " Mbona unaniuliza ujinga, imeandikwa wazi kuwa sijui kinachoendelea".

    Maoni yaliyotolewa na mimi sio msimamo rasmi wa Microsoft

Vikao katika PHP ni utaratibu wa kuhifadhi habari kuhusu kompyuta ya mteja kwenye upande wa seva. Kwa kweli, vipindi katika PHP sio mada ngumu kama hii, lakini ili kuielewa unahitaji kujua jinsi vidakuzi hufanya kazi katika PHP. Kwa hivyo, ikiwa hujui jinsi vidakuzi hufanya kazi katika PHP, basi soma makala husika kwanza, na kisha urudi hapa.

Kipindi cha neno hutafsiriwa kutoka kwa Kiingereza kama kikao, kwa hivyo maana yenyewe ya vikao katika PHP inakuwa wazi zaidi, lakini waandaaji wa programu wamepitisha neno "vikao", na tutatumia katika nakala hii.

Vikao katika PHP vinafanana sana na utaratibu wa kuki, ufunguo sawa => jozi za thamani, pekee zimehifadhiwa kwenye upande wa seva.

session_start() kazi

Tunahitaji kuanza kikao, kwa hili kuna kazi ya session_start(). Chaguo hili la kukokotoa huanza kipindi, au kipindi, chochote unachotaka kukiita.

Inashauriwa kupiga simu session_start() kazi mwanzoni mwa ukurasa, lakini katika mifano yangu sifanyi hivi.

$_SESSION safu

Vikao ni vikundi vya vigeu ambavyo huhifadhiwa kwenye seva lakini hurejelea mgeni mmoja wa kipekee. Tena, hii ndio jambo kuu: vipindi huhifadhiwa kwenye seva.

Ili kuhakikisha kwamba kila mgeni anaingiliana na data yake kutoka kwa kikao chake, kuki hutumiwa, amri ya kuunda ambayo PHP inajipa yenyewe, huna haja ya kuwa na wasiwasi kuhusu hilo. Kidakuzi hiki kinafaa kwa seva pekee na hakiwezi kutumika kupata data ya mtumiaji.

Kwenye seva, data ya kipindi huhifadhiwa katika faili ya maandishi na inapatikana katika programu ya PHP katika safu $_SESSION. Ili kuhifadhi kibadilishaji katika kipindi, unahitaji kukikabidhi thamani katika safu hii.

Wacha tuanze kutumia mifano. Kila kitu ni rahisi sana.

Vipindi katika PHP maana."; ?>

Sasa hebu tujaribu kupata thamani kutoka kwa safu $_SESSION katika mfano mwingine.

Vipindi katika PHP

Tafadhali kumbuka kuwa ikiwa katika mfano wa pili tutaondoa kitendakazi session_start() basi hatutakuwa na ufikiaji wa data katika safu $_SESSION.

session_id() kazi

Kipindi kinapoundwa, unaweza kupata kitambulishi cha kipekee cha kipindi kiotomatiki kwa kutumia kitendakazi session_id(). Chaguo hili la kukokotoa hukuruhusu kuweka na kupata thamani ya kitambulisho cha kipindi.

Vipindi katika PHP

Unaweza kuangalia katika upau wa vidhibiti wa kivinjari chako (katika Chrome, bonyeza Ctrl + Shift + I, kisha Rasilimali, na utapata kidakuzi hapo), kikoa hiki kimeweka kidakuzi cha kivinjari chako chenye jina PHPSESSID na takriban zifuatazo. thamani: "7g5df9rkd1hhvr33lq1k6c72p7".

Ni kwa thamani ya PHPSESSID ambapo seva itabainisha kivinjari chako na kufanya kazi na seti inayolingana ya viambajengo ambavyo vitapatikana kwa hati kupitia safu $_SESSION, kama ilivyoandikwa hapo awali.

session_name() kazi

Wakati session_id() chaguo za kukokotoa hukuruhusu kupata thamani ya kitambulisho cha kikao, kitendakazi cha session_name() hukuruhusu kupata jina la kipindi.

Vipindi katika PHP

Kwa mara nyingine tena kuhusu session_start() kazi

Sasa tunajua zaidi juu ya jinsi vikao hufanya kazi katika PHP na tunahitaji kurudi kwa session_start() kazi mara nyingine tena. Chaguo hili la kukokotoa huanzisha utaratibu wa kipindi kwa mtumiaji wa sasa. Hii inafanyikaje hasa:

  • Ikiwa mtumiaji alizindua tovuti kwa mara ya kwanza, basi session_start() huweka kidakuzi kwenye mteja na kuunda hifadhi ya muda kwenye seva inayohusishwa na kitambulisho cha mtumiaji.
  • Hubainisha duka linalohusishwa na kitambulisho cha sasa kilichopitishwa.
  • Ikiwa kuna data kwenye hifadhi kwenye seva, itawekwa katika safu $_SESSION.
  • Ikiwa register_globals kutoka kwa faili ya php.ini imewashwa, basi vipengele vyote vya safu $_SESSION vinageuzwa kuwa vigeu vya kimataifa.

Mfano wa matumizi ya kikao

Sasa tutaangalia mfano ambao utaturuhusu kufanya majaribio madogo na vikao.

Vipindi katika PHP

Kaunta

Umefungua ukurasa katika kipindi cha sasamara moja.

Fungua mfano katika ">kichupo hiki.

Kazi yote ya kipindi inategemea $_SESSION safu, hii inaonekana wazi katika mfano huu.

Ukifunga dirisha la kivinjari, kipindi kitaisha na kaunta yetu itawekwa upya hadi sifuri. Tabia hii ya vipindi katika PHP inaweza kubadilishwa; tutarudi kwa toleo hili baadaye kidogo katika kifungu.

Kumaliza kikao

Ili kumaliza kikao tunahitaji:

  1. Futa safu $_SESSION.
  2. Futa hifadhi ya muda kwenye seva.
  3. Futa vidakuzi vya kipindi.

Unaweza kufuta safu $_SESSION kwa kutumia kitendakazi session_unset().

Kitendaji cha session_destroy() hufuta hifadhi ya muda kwenye seva. Kwa njia, yeye hafanyi kitu kingine chochote.

Unahitaji kufuta kidakuzi cha kipindi kwa kutumia setcookie() kazi, ambayo tulijifunza katika somo la kufanya kazi na vidakuzi katika PHP.

Mfano wa kumaliza kikao:

Kumaliza kikao

Kikao kimeisha.

Sasa unaweza kufanya jaribio: endesha mfano na kihesabu kwenye dirisha moja, ongeza kihesabu, na kisha uendeshe mfano kwa kufuta kipindi na usasishe ukurasa na kihesabu tena.

Unaweza kufuta faili ya kuki kama hii:

setcookie(jina_la_kipindi(), "", muda() - 60*60*24*32, "/")

Kwa mara nyingine tena kuhusu session_name() na session_id() kazi

Kazi za session_name() na session_id() hazitumiwi sana katika mazoezi, lakini ninaandika kuzihusu kwa sababu kifungu kinahitaji kufichua utaratibu hasa wa jinsi vikao hufanya kazi katika PHP.

Unaweza kutumia chaguo hizi za kukokotoa kufafanua majina na vitambulisho vyako vya kipindi, lakini hili halipendekezwi. Ikiwa ulitaka kuziweka, basi andika kazi hizi kwa hoja kabla ya session_start() kazi, kama katika mfano hapa chini:

Vipindi katika PHP

Kwa kutumia mfano huu, watumiaji wote watapewa kitambulisho sawa cha kipindi.

Wacha tuangalie kwa karibu hapa: ikiwa utaendesha mfano kutoka kwa sehemu kuhusu session_name() kazi (hapa kuna kiunga) katika vivinjari tofauti (kwa mfano, Chrome na Internet Explorer), basi kila kivinjari kitakuwa na kitambulisho chake cha kipekee cha kikao. . Vivinjari huhifadhi vidakuzi kila kimoja kwenye folda yao, kwa hivyo kitendaji cha session_start() kitaruhusu kila kivinjari kuunda kitambulisho chake cha kipekee na, ipasavyo, hifadhi ya kipekee itaundwa kwa kila kivinjari kwenye seva. Kwa hiyo, mfano wa kukabiliana (hii) utafanya kazi kwa kujitegemea katika kila kivinjari.

Ikiwa utaweka kitambulisho cha kikao sawa kwa watumiaji wote, basi watafanya kazi na hifadhi sawa kwenye seva. Hapa kuna mfano wa kaunta ambayo itahesabu kutembelewa kutoka kwa vivinjari tofauti:

100) ( session_unset(); session_destroy(); ) ?> Vipindi katika PHP

Kaunta namba 2

Ilifungua ukurasa katika vivinjari tofautimara moja.

Fungua mfano katika ">kichupo hiki.

Ukiendesha mfano huu, sio ukweli kwamba utaona moja hapo. Wageni wengine wanaweza kuwa tayari wamebadilisha maadili kwenye duka la kikao kwenye seva. Sijui wakati seva inafuta hifadhi katika kesi hii, hivyo ikiwa counter inazidi 100, nitamaliza kipindi.

Kuweka muda wa kusubiri

Kwa chaguo-msingi, kikao "kuishi" hadi mgeni afunge dirisha la kivinjari. Hii ni kutokana na ukweli kwamba session_start() kazi huweka kidakuzi kama hicho kwa mteja.

Muda wa kipindi unaweza kubadilishwa kwa kutumia kitendakazi cha session_set_cookie_params(), hii hapa ni syntax yake.

session_set_cookie_params (int lifetime [, string path [, string domain [, bool secure]]])

Katika mazoezi, ni ya kutosha kutumia tu parameter ya kwanza (maisha), hapa unaandika muda kwa sekunde, ambayo huamua muda gani seva inapaswa kukumbuka hali ya kikao baada ya kufunga kivinjari.

Athari ya kitendakazi cha session_set_cookie_params() inatumika tu kwa kipindi ambacho hati inaendeshwa.

Hapa kuna mfano wa kutumia kipengele hiki:

Vipindi katika PHP

Kaunta namba 3

Thamani ya kukabiliana:.

Fungua kaunta katika ">kichupo hiki.

Funga kidhibiti na funga kivinjari, baada ya sekunde 30 fungua mfano huu tena. Kipindi chako kitahifadhiwa.

Seva ya wavuti haidumii muunganisho wa kudumu na mteja, na kila ombi huchakatwa kama jipya, bila muunganisho wowote na zile zilizopita.
Hiyo ni, huwezi kufuatilia maombi kutoka kwa mgeni huyo huyo au kumhifadhi vigezo kati ya maoni ya kurasa za kibinafsi. Ilikuwa ni kutatua matatizo haya mawili ambayo vikao vilivumbuliwa.
Kweli, vikao, kwa kifupi, ni utaratibu unaokuwezesha kutambua kivinjari kipekee na kuunda faili kwa kivinjari hiki kwenye seva ambayo vigezo vya kikao huhifadhiwa.

Sitaelezea kwa undani hitaji la utaratibu kama huo. Hizi ni kesi za vitabu vya kiada kama vile kikokoteni cha ununuzi kwenye duka la kielektroniki, uidhinishaji, na vile vile shida sio ndogo, kama vile kulinda sehemu ingiliani za tovuti kutoka kwa barua taka.

Kimsingi, ni rahisi sana kutengeneza analog yako ya vikao, sio kazi kama ile iliyojengwa ndani ya PHP, lakini sawa kwa asili. Kwenye vidakuzi na hifadhidata.
Wakati wa kuomba hati, tunaangalia ili kuona ikiwa kidakuzi kilicho na jina maalum kilipokelewa. Ikiwa hakuna kidakuzi, basi kiweke na uandike mstari mpya na data ya mtumiaji kwenye hifadhidata. Ikiwa kuna kuki, basi tunasoma data kutoka kwa hifadhidata. Kwa ombi lingine tunafuta rekodi za zamani kutoka kwa hifadhidata na sasa tuna utaratibu wa kikao tayari. Sio ngumu hata kidogo. Lakini kuna nuances kadhaa ambayo inafanya iwe vyema kutumia utaratibu wa kikao uliojengwa.

Ikiwa ya kwanza tu imewezeshwa, basi mwanzoni mwa kipindi (kila wakati session_start() inaitwa) kuki imewekwa kwa mteja. Kivinjari hurejesha kidakuzi hiki kwa usahihi kwa kila ombi linalofuata na PHP ina kitambulisho cha kipindi. Matatizo huanza ikiwa kivinjari hakirudi vidakuzi. Katika kesi hii, bila kupokea kuki na kitambulisho, PHP itaanza kikao kipya kila wakati na utaratibu hautafanya kazi.

Ikiwa ya pili tu imewezeshwa, basi kidakuzi hakijawekwa. Na hii ndiyo kinachotokea, kwa ajili ya ambayo, kwa kweli, inafaa kutumia utaratibu wa kikao kilichojengwa. Baada ya hati kufanya kazi yake na ukurasa kuundwa kabisa, PHP huchanganua ukurasa mzima na kuongeza kitambulisho cha kikao kwa kila kiungo na kwa kila fomu. Inaonekana kitu kama hiki:
Kielezo inageuka kuwa
Kielezo
na uwanja uliofichwa huongezwa kwa fomu

Na kivinjari, unapobofya kiungo chochote, au unapobofya kifungo katika fomu, itatuma katika ombi la kutofautiana tunalohitaji - kitambulisho cha kikao!
Kwa sababu za wazi, kitambulisho kinaongezwa tu kwa viungo vya jamaa.

Kinadharia, katika vipindi vyetu vya kujitengenezea nyumbani kwenye vidakuzi na hifadhidata, tunaweza kugawa uhamishaji wa kitambulisho kwa viungo vyote - na kisha vipindi vyetu wenyewe vitafanya kazi bila kujali vidakuzi. Lakini unakubali - inapendeza zaidi wakati mtu mwingine anafanya kazi hii? ;-)

Kwa chaguo-msingi, chaguo zote mbili zimewezeshwa katika matoleo ya hivi karibuni ya PHP. PHP inashughulikiaje hii? Cook daima huonyeshwa. Na viungo hukamilishwa kiotomatiki tu ikiwa PHP haikugundua kidakuzi kilicho na kitambulisho cha kipindi. Mtumiaji anapotembelea tovuti kwa mara ya kwanza wakati wa kipindi hiki, kidakuzi huwekwa na viungo kukamilishwa. Kwa ombi linalofuata, ikiwa vidakuzi vinatumika, PHP huona kidakuzi na kuacha kujaza viungo. Ikiwa vidakuzi havifanyi kazi, basi PHP inaendelea kuongeza kitambulisho vizuri kwenye viungo, na kipindi hakijapotea.
Watumiaji walio na vidakuzi vilivyowezeshwa wataona kiungo kirefu chenye kitambulisho mara moja pekee.

Phew. Uhamisho wa kitambulisho umekamilika.
Sasa kilichobaki ni kuifunga faili ya data kwa upande wa seva.
PHP itatufanyia hivi. Inatosha kuandika tu
session_start();
$_SESSION["test"]="Hujambo ulimwengu!";

Na PHP itaandika utofauti wa jaribio kwa faili inayohusishwa na kipindi hiki.
Kuna dokezo muhimu sana hapa.
Safu ya $_SESSION ni maalum.
Kwa kweli, ina vigeuzo ambavyo tunataka kufanya kupatikana katika hati mbalimbali.
Ili kuweka kigezo katika kipindi, kikabidhi tu kwa $_SESSION kipengee cha safu.
Ili kupata thamani yake, fikia tu kipengele sawa. Mfano utakuwa hapa chini.

PHP pia hushughulikia ukusanyaji wa takataka - kuondoa faili zilizopitwa na wakati. Pamoja na usimbuaji data na rundo la vitu vingine muhimu. Kutokana na huduma hii, kufanya kazi na vikao ni rahisi sana.
Hapa kwa kweli tunakuja kwa mfano wa jinsi vikao hufanya kazi.
Mfano mdogo sana:
session_start();

mwangwi "Ulisasisha ukurasa huu ".$_SESSION["counter"]++." mara.";
mwangwi"
sasisha";
?>

Tunaangalia ikiwa tunayo kigezo cha kukanusha kwenye kikao; ikiwa sivyo, basi tunaiunda na thamani 0, na kisha kuonyesha thamani yake na kuiongeza kwa moja. Thamani iliyoongezeka itaandikwa kwa kikao, na wakati ujao script inaitwa, kutofautiana kutakuwa na thamani 1, na kadhalika.
Kila kitu ni rahisi sana.

Ili uweze kufikia vigezo vya kikao kwenye kurasa zozote za tovuti, unahitaji kuandika mstari MMOJA TU (!) mwanzoni kabisa mwa KILA faili ambamo tunahitaji vipindi:
session_start();
Na kisha ufikie vipengele vya safu $_SESSION. Kwa mfano, ukaguzi wa idhini utaonekana kama hii:
session_start();
ikiwa ($_SESSION["imeidhinishwa"]<>1) {
kichwa("Eneo: /auth.php");
Utgång;
}

Kuondoa vigeu kutoka kwa kipindi.
Ikiwa unayo register_globals=off , basi andika tu
unset($_SESSION["var"]);
Ikiwa sivyo, basi karibu Nahitaji kuandika naye
session_unregister("var");

Makosa ya kawaida ambayo PHP hutoa wakati wa kujaribu kufanya kazi na vikao ni yafuatayo:
Wawili wao
Onyo: Haiwezi kutuma kidakuzi cha kipindi - vichwa tayari vimetumwa
Onyo: Haiwezi kutuma kikomo cha akiba cha kipindi - vichwa tayari vimetumwa

kwa sababu hiyo hiyo, suluhisho limeelezewa katika uzi huu
Cha tatu,
Onyo: open(/tmp\sess_SID, O_RDWR) imeshindwa: Hakuna faili au saraka kama hiyo (2) katika full_script_path kwenye nambari ya mstari.(hapo awali alionekana kama Onyo: Imeshindwa kuandika data ya kipindi (faili). Tafadhali thibitisha kuwa mpangilio wa sasa wa session.save_path ni sahihi (/tmp)),
ikiwa imetafsiriwa kutoka kwa Kiingereza, inaelezea tatizo kwa undani: njia ya saraka iliyotajwa katika php.ini ambapo faili za kikao zimeandikwa haipatikani. Hitilafu hii ni rahisi kurekebisha. Sajili tu saraka ambayo ipo na inayoweza kuandikwa, kwa mfano,
session.save_path = c:\windows\temp
Na usisahau kuanzisha tena Apache baada ya hii.

Kama inavyotokea, akili ya mwanadamu haina kikomo, na kwa hivyo ninalazimika kuelezea:
ujumbe kuhusu hitilafu ya tatu (saraka haiwezi kupatikana) ILA LAZIMA itasababisha kuonekana kwa zile mbili za kwanza, kwani ujumbe wa makosa hutolewa kwa kivinjari na vichwa baada ya kutoweza kutumika. Kwa hivyo, usikimbilie kutafuta hitimisho la mapema, lakini andika njia sahihi kwanza!

Tatizo linalofuata la kawaida wakati wa kufanya kazi na vipindi ni urithi mzito wa register_globals. USIPE majina ya vibadilishi vya hati yanayolingana na fahirisi za safu $_SESSION!
Ukiwa na register_globals=kwenye maadili yatabadilishana na utachanganyikiwa.
Na kwa register_globals=off, hitilafu nyingine itaonekana: "Hati yako inaweza kutegemea athari ya kikao ambayo ilikuwepo hadi PHP 4.2.3.", ikiwa hati ina mabadiliko ya kikao ambayo hayana thamani, na kigezo cha kimataifa. kwa jina moja. Ili kuiondoa, lazima uanzishe vigeu kila wakati kabla ya kutumia (au angalau uangalie kama kuna) na usipe vigeu vya kimataifa majina ambayo yanaambatana na faharisi za safu $_SESSION.

Ikiwa haifanyi kazi, lakini hakuna ujumbe unaoonyeshwa, basi ongeza mistari miwili mwanzoni mwa hati inayohusika na kuonyesha makosa YOTE kwenye skrini - inawezekana kabisa kuwa kuna makosa, lakini hauyaoni. .
ini_set("makosa_ya_maonyesho",1);
kuripoti_kosa(E_ALL);

au tazama makosa katika error_log. Kwa ujumla, mada ya kuonyesha ujumbe wa makosa ni zaidi ya upeo wa makala hii, hivyo hakikisha tu kwamba unaweza kuwaona angalau. Unaweza kusoma zaidi kuhusu kutafuta makosa katika sehemu hii.

Ikiwa una uhakika kuwa hakuna makosa, lakini mfano uliotolewa haufanyi kazi hata hivyo, basi labda PHP hairuhusu kupitisha id kupitia URL, na vidakuzi kwa sababu fulani hazifanyi kazi.
Angalia ni nini kibaya na vidakuzi vyako.
Kwa ujumla, ikiwa vikao vyako havifanyi kazi, basi kwanza jaribu kupitisha kitambulisho cha kikao kwa mikono, ambayo ni, tengeneza kiunga na upe kitambulisho kwake:
session_start();
ikiwa (!isset($_SESSION["counter"])) $_SESSION["counter"]=0;
mwangwi "Ulisasisha ukurasa huu ".$_SESSION["counter"]++." mara.

sasisha";
?>

Hata hivyo, unapaswa kuhakikisha kuwa maagizo ya session.use_only_cookies hayajawezeshwa, ambayo huzuia PHP kukubali kitambulisho cha kipindi ikiwa kilipitishwa kupitia URL.

Ikiwa mfano huu haufanyi kazi, basi shida ni ndogo chapa(nusu ya "matatizo" na vipindi hutoka kwa jina tofauti lililoandikwa vibaya), au katika toleo la zamani sana la PHP: msaada wa vipindi ulionekana katika toleo la 4.0, na safu $_SESSION - katika 4.1 (Kabla ya hapo, $HTTP_SESSION_VARS ilitumiwa )
Ikiwa inafanya kazi, basi shida iko kwenye vidakuzi. Fuatilia ni aina gani ya kuki ambayo seva huweka kwenye kivinjari, na ikiwa kivinjari huirejesha. Ni muhimu sana kutafuta kwa kuangalia ubadilishanaji wa vichwa vya HTTP kati ya kivinjari na seva.
Ufafanuzi wa jinsi vidakuzi hufanya kazi ni zaidi ya upeo wa maandishi haya ambayo tayari ni marefu sana, lakini angalau hakikisha kuwa seva inatuma kidakuzi chenye kitambulisho, na kivinjari kiirejeshe. Na wakati huo huo vitambulisho vinaambatana na kila mmoja =)
Kuweka kuki inapaswa kuonekana kama
Set-Cookie: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6;
au vipi
Set-Cookie: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6; njia=/
(ikiwa unaomba hati sio kutoka kwa saraka ya mizizi)
Jibu la seva linapaswa kuonekana kama
Kuki: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6
au
Kidakuzi: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6; b=b
ikiwa kivinjari kinarudisha vidakuzi vingine isipokuwa kitambulisho cha kipindi.

Ikiwa kivinjari hakirudishi vidakuzi, angalia ikiwa vidakuzi hufanya kazi kabisa.
Hakikisha kuwa kikoa unachofikia kina jina la kawaida ( lenye angalau nukta moja na halina vibambo haramu kama vile mistari chini) na ufute akiba ya kivinjari chako - hizi ni sababu kuu mbili kwa nini vidakuzi vinaweza kufanya kazi.

Ikiwa mfano kutoka hapa unafanya kazi, lakini msimbo wako mwenyewe haufanyi, basi tatizo ni wazi si katika vikao, lakini katika algorithm. Tafuta mahali ulipopoteza utofauti, hamisha mfano kutoka hapa hatua kwa hatua, na utatue hati yako.

Tatizo jingine linaweza kutokea ikiwa unatumia uelekezaji upya wa kichwa au urambazaji wa JavaScript.
Ukweli ni kwamba PHP huongeza kitambulisho cha kikao kiotomatiki kwa viungo kama
, lakini haifanyi hivi kwa vichwa, JavaScript, vitambulisho vya meta.
Kwa hivyo, unahitaji kuongeza kitambulisho kwa mikono, kwa mfano, kama hii:
kichwa("Mahali: /script.php?".session_name()."=".session_id());

Pia, tatizo la nadra sana, na haijulikani kabisa linatoka wapi, ni kwamba mpangilio wa session.save_handler una thamani tofauti na faili. Ikiwa hii sio hivyo, rekebisha.

Usalama
Usalama wa kikao ni mada pana. Kwa hiyo, nitazingatia mambo makuu machache.
Kitabu cha maandishi zaidi sio kupitisha kitambulisho kupitia upau wa anwani. Hii imeandikwa hata katika php.ini, lakini hii inapunguza utendaji wa vikao. Ukiamua kufuata ushauri huu, basi pamoja na session.use_trans_sid = 0, usisahau session.use_only_cookies = 1
Inashauriwa kumfunga kikao kwa anwani ya IP: kwa njia hii, ikiwa kitambulisho kinaibiwa, villain bado hawezi kuitumia mara nyingi.
Inashauriwa kutumia maagizo ya session.save_path, ambayo inakuwezesha kuweka saraka yako mwenyewe ya kuhifadhi faili za kikao. Hii ni salama zaidi kuliko kuzihifadhi kwenye saraka chaguo-msingi ya seva iliyoshirikiwa.

Taarifa za ziada:

  • Kando na vidakuzi, utaratibu wa kipindi pia hutuma vichwa vinavyokataza uakibishaji wa ukurasa (kikomo sawa cha akiba). Kwa html hii ni sahihi na ni muhimu. Lakini unapojaribu kutuma faili kwa kutumia hati inayokagua idhini, Internet Explorer inakataa kuipakua. Ni kwa sababu ya jina hili. Wito
    session_cache_limiter("binafsi");
    lazima kutatua tatizo kabla ya kuanza kikao.
  • Ingawa inaweza kuonekana kuwa ya kushangaza, huwezi kutumia faharasa za nambari katika safu $_SESSION - $_SESSION, $_SESSION["10"] - vipindi havitafanya kazi.
  • Mahali fulani kati ya matoleo ya 4.2 na 5.0 haikuwezekana kuweka session.use_trans_sid kwa kutumia ini_set() . Kuanzia 5.0 tayari inawezekana tena.
  • Kabla ya toleo la 4.3.3 la kidakuzi, PHP ilituma kidakuzi ikiwa tu hakukuwa na kitambulisho katika ombi wakati kipindi kilianza. Sasa kidakuzi kinatumwa kila wakati session_start() inaitwa

    Mfano wa idhini kwa kutumia vikao
    Wacha tuonyeshe haya yote hapo juu na mfano mdogo:
    Hebu tuunde faili ya auth.php:
    ikiwa (isset($_POST [ "auth_name" ]))
    {
    $sql = "CHAGUA *KUTOKA KWA watumiaji WAPI jina=?s";
    $ safu = $db -> getRow($sql, $_POST["auth_name"]);
    ikiwa ($row && password_verify ($_POST [ "auth_pass" ], $row [ "pass" ])) (
    $_SESSION [ "user_id" ] = $row [ "id" ];
    }
    kichwa("Mahali: http://" . $_SERVER [ "HTTP_HOST" ]. $_SERVER [ "REQUEST_URI" ]);
    Utgång;
    }

    ikiwa (isset($_GET [ "action" ]) NA $_GET [ "action" ]== "logout" ) (
    session_start();
    session_destroy();
    kichwa("Mahali: http://" . $_SERVER [ "HTTP_HOST" ]. "/" );
    Utgång;
    }

    ikiwa (!isset($_SESSION [ "user_id" ])) (
    ?>








    Utgång;
    }

    Sasa unachohitaji kufanya ni kuandika mstari katika hati zote zilizolindwa
    zinahitaji "auth.php";
    Mfano huu unachukulia kuwa kipindi tayari kimeanza na muunganisho kwenye hifadhidata umeundwa kwa kutumia Darasa kwa kazi salama na rahisi na MySQL. Pia huchukulia kuwa nenosiri limeharakishwa kwa kutumia kitendakazi kinachopendekezwa cha password_hash.
    Mfano wa faili iliyolindwa:

    session_start();
    ni pamoja na "safemysql.class.php" ;
    $db = safemysql mpya ([ "db" => "mtihani" ]);
    ni pamoja na "auth.php" ;
    ?>
    siri

    kuondoka

    OPS! Viungo Muhimu Sana:
    http://www.php.net/manual/ru/ref.session.php - habari za hivi punde na za hivi punde kuhusu usaidizi wa kikao katika PHP katika hati rasmi, pamoja na maoni mengi ya watumiaji. Inapendekezwa sana kusoma.
    http://phpclub.ru/manrus/f/ref.session.html - TAFSIRI iliyopitwa na wakati SANA ya sura hii kwa Kirusi, kutoka kwa nyaraka zilizotafsiriwa na Alexander Pyramidin.
    http://phpclub.ru/detail/article/sessions
    Makala yenye kichwa cha kusikitisha "Ukweli kuhusu Vipindi." Huacha hisia isiyoeleweka. Hapo mwanzo, mwandishi anazungumza kwa uwazi SANA juu ya utaratibu wa kikao, lakini njia anazotoa hadi mwisho wa kifungu hazieleweki kabisa.

    Nakala ya kitabu cha maandishi na Dmitry Borodin kutoka kwa wavuti
    http://php.spb.ru/ haipendekezwi sana.
    Jamani, imepitwa na wakati sana. Sio tu kwamba ina makosa ya kweli, lakini vikao katika PHP havijafanya kazi kwa muda mrefu.
    Shukrani nyingi kwa Dima kwa hilo, hii ilikuwa makala ya kwanza juu ya vikao katika Kirusi, nilijifunza kutoka kwake mwenyewe, lakini sasa ninahitaji kuituma kwa mapumziko yanayostahili.
    Kwa bahati mbaya, nakala zingine nyingi kwenye Mtandao ambazo hazijasasishwa kwa miaka pia zimepitwa na wakati.

  • Kikao ni nini?

    Katika teknolojia ya kompyuta, hasa katika mitandao, kipindi ni ubadilishanaji wa taarifa unaokaribia kila mara, unaojulikana pia kama muunganisho au mazungumzo kati ya vifaa viwili vinavyoingiliana au kati ya mtumiaji na kompyuta (tazama mada ya Utaratibu wa Utambulisho). Kikao kinaanzishwa kwa wakati fulani na kinakatishwa baada ya kipindi fulani. Wakati wa kipindi kilichoanzishwa, zaidi ya ujumbe mmoja hupitishwa kwa kila upande. Kwa kawaida, kikao ni dhabiti, yaani, angalau mmoja wa wahusika wanaoingiliana lazima ahifadhi habari kuhusu historia ya kikao ili kudumisha uwezo wa kubadilishana habari, kinyume na ubadilishanaji usio na uraia, kiini chake ambacho ni ubadilishanaji wa maombi huru. na majibu.

    Vipindi vya muunganisho vinaweza kuwa sehemu ya itifaki au huduma katika safu ya programu, safu ya kipindi, au safu ya usafiri ya muundo wa OSI.

    Router hutumia jedwali la kikao kuhifadhi habari za kikao. Jedwali huchukua baadhi ya rasilimali za kumbukumbu na CPU kwa vitendakazi kama vile kuhesabu vipindi. Ukubwa wa kikao katika meza ni fasta; ikiwa inafurika, kipanga njia hakiwezi kusambaza habari hata ikiwa kuna mkondo wa data ya pato.

    Hebu tujaribu kueleza madhumuni ya kipindi kwa kutumia mifano ifuatayo.

    1. Unapofungua tovuti, kwa mfano www.. Kila kitu kitatokea kwa dakika moja tu, hivyo huna haja ya kuwa na wasiwasi kuhusu kasi ya muunganisho wako wa Mtandao. Lakini kwa nini basi vikao vingi vinahitajika? Tovuti ina habari mbalimbali - picha nyingi, video. Ili kufungua ukurasa kwenye kivinjari, unahitaji kuzipakua kwenye folda ya muda kwenye kompyuta yako.

    2. Tunapopakua kupitia BT, inahitaji vipindi vingi. Wakati wa uanzishaji, takriban vikao 2000 vinahitajika, lakini idadi yao itapungua kwa upakiaji thabiti. Orodha ya kipindi hapa chini inaonyesha idadi ya vipindi vya sasa kwa kasi zinazoingia na zinazotoka za upakuaji kupitia BT.

    Hii pia hufanyika wakati wa kutumia programu zingine za P2P, kwani zinafanya kazi kwa njia sawa.

    Tafadhali kumbuka kuwa hakuna uhusiano wazi kati ya kasi na idadi ya vipindi. Ikiwa una idadi kubwa ya vipindi, kasi haitakuwa ya juu kila wakati, kama vile kuwa na kasi kubwa haimaanishi kuwa na idadi kubwa ya vipindi. Lakini, kimsingi, wakati kuna vikao vingi, kasi ni kubwa zaidi.

    Kwa nini uweke kikomo cha kikao?

    1) Hii inaepuka kushuka kwa kasi kwa mtandao kwani programu ya P2P ina idadi ndogo ya vipindi.

    2) Hii inakuwezesha kuepuka ngozi ya rasilimali za mtandao na virusi yoyote au aina nyingine ya mashambulizi ya mtandao ambayo yanahitaji idadi kubwa ya vipindi.

    Jinsi ya kuweka vikwazo vya kikao kwenye routerTP- KIUNGO ?

    Hatua ya 1

    Fungua kivinjari chako na uingie anwani ya IP ya mtandao ya router kwenye bar ya anwani; chaguo-msingi ni 192.168.1.1, kisha bonyeza Enter.

    Hatua ya 2

    Ingiza jina lako la mtumiaji na nenosiri ili kuingia kwenye kiolesura cha wavuti; Kwa chaguo-msingi, kuingia na nenosiri ni admin.

    Hatua ya 3

    Bofya Kikomo cha Kipindi -> Kikomo cha Kipindi kwenye upande wa kushoto wa ukurasa, washa kipengele cha Ukomo wa Kipindi, kisha ubofye kitufe cha Hifadhi ili kuhifadhi mipangilio.

    Hatua ya 4

    Bofya Ongeza Mpya ili kusanidi sheria ya kizuizi cha kikao, ingiza anwani ya IP ya mtandao ya kompyuta ambayo unataka kuweka kizuizi, na kuweka idadi ya juu ya vipindi (Max Session).

    Kumbuka

    Max Session ni kikomo cha mtu binafsi kwa kompyuta mahususi, hata kama umeweka safu ya anwani za mtandao.