internetul Windows. Android

Sesiune de conectare. Cum se stabilește limita sesiunilor de conectare pe routerul TP-LINK? Logica sesiunii


Sesiunile în PHP sau ca date despre utilizator care au venit pe site sau cumpărător sunt salvate atunci când se deplasează între paginile site-ului fără multă dificultate. Lecția este foarte importantă. Relevante pentru a crea 95% din site-uri.

Ce este o sesiune în PHP

Sesiunile sunt utilizate pentru stocarea informațiilor de date temporare (de exemplu, că utilizatorul a intrat în site) atunci când se deplasează între paginile unui site. Când utilizați sesiuni, datele sunt stocate în fișiere temporare de pe server.
Cel mai adesea de sesiuni (și cookie-uri, de asemenea) folosiți atunci când creați magazine online, forumuri, buletine, retele sociale, bloguri și alte resurse. Comoditatea sistemului de sesiune este stocarea informațiilor temporare ale utilizatorului / cumpărătorului, datele despre care se află în acces rapid Timp definit. Sesiunea are o perioadă de valabilitate naturală - până când browserul este închis. Dacă închideți numai pagina, atunci când deschideți site-ul, datele utilizatorului / client vor fi disponibile în continuare.

Logica sesiunii

Sesiunea (sau sesiunea) este un fel de stocare temporară a datelor. Vă avertizează imediat, merită o mică cantitate de date. De exemplu, conectați-vă și parola utilizatorului de setare sau numărul său de serie din baza de date.

Exemplu de lucru
1. Utilizatorul intră în login și parola și vine pe site
2. Datele cu autentificare și parola sunt salvate în sesiunea uneia dintre paginile site-ului:

Fişier index.php.

Sesiune_start (); // Fiecare fișier în care doriți să utilizați aceste sesiuni ar trebui de la începutul codului să conțină comanda "Start sesiune"

$ login \u003d "admin";
$ parola \u003d "pass";
$ _Session ["login"] \u003d $ login; // salvați variabila care conține autentificare
$ _Session ["parola"] \u003d $ parola; // Salvați parola care conține variabila

3. Când mergeți la o altă pagină a site-ului, aceste date vor fi de asemenea disponibile:

Fişier example.php. (sau orice altă pagină)

Echo "Conectarea dvs.". $ _ Sesiune ["Login"]; // va ieși "adminul dvs. de login", deși pe această pagină nu am scris date!
Vedeți, totul este simplu!

4. Dacă doriți să ștergeți datele sesiunii, atunci suficient:

Fişier example.php.

Sesiune_start (); // Rulați din nou sesiunea

Desfaceți ($ _ sesiune ["LOGIN"]); // a subliniat astfel variabila sau "distrusă"
Echo "Conectarea dvs.". $ _ Sesiune ["Login"]; // va ieși "loginul dvs.". De când l-am distrus în ultima linie, atunci nu există date

Sesiune_destroy (); // Distruge sesiunea. Toate datele, inclusiv $ _session ["parola"] nu mai sunt. Când se interoghează, va afișa o eroare
În general, o astfel de transmisie arată ca metoda postală.Dar numai tu nu mai trebuie să scrieți o mulțime de coduri excesive, dar toate datele transmise din pagină la pagină sunt stocate în fișiere temporare de pe server. Repet sesiunile trebuie să conțină cantități mici de date, deci sunt adecvate pentru depozitarea autentificării / parolei, coșului cumpărătorului și altor volume mici.

Transferați valori sau matrice utilizând sesiunea PHP

În sesiune, puteți înregistra nu numai șirul, ci și o serie de date. Doar nu exagerați cu volumul matricei, deoarece toate acestea vor afecta spațiul de repaus și ocupat pe server.

Folosim din nou pagină de start index.php.

Sesiune_start ();

$ r \u003d matrice ("unul", "două", "trei");

$ _Session ["arr"] \u003d $ r;

Pe pagina unde va fi afișat totul
Salvați datele în sesiuni și treceți prin link-ul către o altă pagină, unde vor fi înregistrate toate datele.

Destinatarul fișierului, pagina test.php. Unde deschidem o matrice

Sesiune_start ();
Print_r ($ _ sesiune ["arr"]);
// Elimina
/*
Array.
\u003d\u003e Unul.
\u003d\u003e Două.
\u003d\u003e Trei.
*/
?>
Poate doriți să reîmprospătați lecția în memorie. În general, totul ar trebui să fie clar.

Alte caracteristici pentru lucrul cu sesiuni

sesiune_unregister (șir) - sesiunea uită valoarea unei variabile globale date;
session_destroy () - sesiunea este distrusă (de exemplu, dacă utilizatorul a părăsit sistemul apăsând butonul de ieșire);
sESSION_SET_COOKIE_PARAMS (INT Lifetime [, Calea de șir [, Domeniul de șir]]) - Cu această caracteristică, puteți instala cât timp va trăi sesiunea, setarea UNIX_TIMETAMP care determină timpul de deces al sesiunii.

Lista de caracteristici pentru lucrul cu sesiuni (sesiune) în PHP
session_cache_expire - returnează sfârșitul acțiunii curente cache
Session_cache_limire - devine și / sau sets Cashel Caschet Limitator
Sesiune_commit - alias session_write_close ()
SESSION_DECODE - Decodează datele sesiunii de la linie
session_destroy - distruge toate datele înregistrate pentru sesiune
session_encode - criptează datele sesiunii curente ca șir
session_get_cookie_params - sesiune de setări de gătit
session_id - obține și / sau stabilește ID-ul actual al sesiunii
sesiune_is_registe - determină dacă variabila este înregistrată în sesiune
session_module_name - obține și / sau stabilește modulul de sesiune curent
sesiune_name - obține și / sau stabilește numele sesiunii curente
SESSION_REGENERATE_ID - Modifică identificatorul actual al sesiunii generate recent
Sesiune_register - înregistrează una sau mai multe variabile pentru sesiunea curentă.
session_save_path - devine și / sau stabilește calea de salvare a sesiunii curente
SESSION_SET_COOKIE_PARAMS - Setează parametrii sesiunii Cook
Sesiune_set_save_handler - stabilește caracteristicile de stocare ale sesiunii la nivel de utilizator
Sesiune_start - inițializează datele sesiunii
Sesiune_unregister - relistează o variabilă din sesiunea curentă
Session_unset - eliberează toate sesiunea de variabile
SESSION_WRITE_CLOSE - scrie datele sesiunii și sesiunea de sfârșit

Exemple de sesiuni

Vizualizarea contorului în timpul sesiunii. Exemplu Vite. Cu toate acestea, după închiderea browserului, numărătoarea inversă va începe din nou.

Unele vizite la pagină au contor ca parte a unei sesiuni

// Un exemplu simplu de utilizare a sesiunilor fără cookie-uri.
sesiune_name ("test");
sesiune_start ();
$ _Session ["număr"] \u003d @ $ _ sesiune ["număr"] + 1;
?>

Tejghea


În sesiunea de lucru curentă cu browserul, ați deschis această pagină.
Odata).
Închideți browserul pentru a reseta acest contor.
Faceți clic aici pentru a actualiza pagina!
La fiecare tranziție, contorul va crește cu 1)

Multumesc pentru atentie! Mult noroc în eforturi!

Sesiunile în PHP sunt un mecanism de salvare pe partea de informații despre computerul calculatorului clientului. De fapt, sesiunea din PHP nu este un subiect atât de dificil, ci pentru înțelegerea ei trebuie să cunoașteți principiul cookie-urilor de lucru în PHP. Deci, dacă nu știți cum funcționează Cookie în PHP, ați citit mai întâi articolul corespunzător și apoi reveniți aici.

Sesiunea de cuvinte din engleză este tradusă ca o sesiune, astfel încât simțul sesiunilor în PHP devine mai ușor de înțeles, dar termenul "sesiune" și o vom folosi în acest articol.

Sesiunile din PHP sunt foarte asemănătoare cu modul cookie, aceleași perechi sunt cheia \u003d\u003e valoarea, numai ele sunt stocate pe partea serverului.

Sesiune_start ()

Sesiunea trebuie să începem, pentru aceasta există o funcție de sesiune_start (). Această caracteristică începe o sesiune sau o sesiune pe care o puteți numi.

Funcția sesiune_start () este de dorit să se apeleze la începutul paginii, dar în exemplele mele nu fac asta.

Array $ _session.

Sesiunile sunt grupuri de variabile stocate pe server, dar aparțin unui vizitator unic. Repet, acesta este punctul cheie: sesiunile sunt stocate pe server.

Pentru a asigura interacțiunea fiecărui vizitator cu datele sale din sesiunea sa se utilizează fișier cookie., crearea căreia îi dă PHP, nu trebuie să fii îngrijorat de asta. Acest cookie contează numai pentru server și nu poate fi utilizat pentru a obține datele utilizatorului.

Pe server, datele sesiunii sunt stocate într-un fișier text și sunt disponibile în pHP Program Într-o matrice $ _session. Pentru a păstra variabila în sesiune, trebuie să atribuiți o valoare în această matrice.

Să începem în cele din urmă să folosim exemple. Totul este foarte simplu.

Sesiuni în PHP. valoare. ";?\u003e

Acum, să încercăm să obținem o valoare dintr-o matrice $ _session într-un alt exemplu.

Sesiuni în PHP.

Notă, dacă în al doilea exemplu, ștergem funcția sesiune_start (), atunci nu vom avea acces la datele de matrice $ _session.

SESIUNE ID ()

După crearea sesiunii, accesați automat identificatorul unic de sesiune utilizând funcția sesiune_id (). Această caracteristică vă permite să specificați și să primiți valoarea identificatorului sesiunii.

Sesiuni în PHP.

Puteți să vă uitați în bara de instrumente pentru dezvoltatorii dvs. de browser (în Chrome pentru a face acest lucru, apăsați Ctrl + Shift + I, apoi Resurse și veți găsi un cookie), acest domeniu pune browserul cookie cu numele PhSeside și aproximativ o astfel de valoare: "7G5DF9KD1HHVR33LQ1K6C72P7".

Este în funcție de valoarea FPSessidă care va defini browserul dvs. și va lucra cu setul corespunzător de variabile care vor fi disponibile pentru script prin matricea $ _session, așa cum sa scris deja mai devreme.

SESION_NAME () FUNCȚIA

Dacă funcțiile Session_ID () vă permite să obțineți valoarea identificatorului sesiunii, funcția sesiune_name () vă permite să aflați numele sesiunii.

Sesiuni în PHP.

Încă o dată despre funcția sesiune_start ()

Acum știm mai multe despre prozanismul sesiunilor din PHP și trebuie să reveniți din nou la funcția sesiune_start (). Această caracteristică inițializează mecanismul de sesiune pentru utilizator curent. Cum se întâmplă exact acest lucru:

  • Dacă utilizatorul a lansat site-ul pentru prima dată, session_start () setează cookie de la client și creează o depozitare temporară pe serverul asociat cu ID-ul de utilizator.
  • Specifică depozitul asociat identificatorului curent transmis.
  • Dacă există date în depozit pe server, ele sunt plasate într-o matrice $ _session.
  • În cazul în care înregistrarea_globale din fișierul php.ini este pornit, atunci toate elementele matricei de $ _session sunt transformate în variabile globale.

Un exemplu de utilizare a sesiunii

Acum vom examina un exemplu care să permită experimente minore cu sesiuni.

Sesiuni în PHP.

Tejghea

În sesiunea curentă ați deschis pagina timp.

Deschideți un exemplu în "\u003e Această filă.

Toate lucrările sesiunilor se bazează pe o matrice $ _session, este clar văzută în acest exemplu.

Dacă închideți fereastra browserului, sesiunea se va opri, contorul nostru va fi resetat. Acest comportament al sesiunilor în PHP poate fi schimbat, vom reveni la această problemă puțin mai departe în articol.

Finalizarea sesiunii

Pentru a finaliza sesiunea, avem nevoie de:

  1. Ștergeți matricea $ _sesion.
  2. Ștergeți spațiul de stocare temporar pe server.
  3. Ștergeți cookie-ul sesiunii.

Șterge Massive $Session poate utiliza funcția sesiune_unset ().

Caracteristica SESSION_DESTROY () Șterge spațiul temporar pe server. Apropo, nu face nimic mai mult.

Trebuie să ștergeți un cookie de sesiune utilizând funcția Setcookie (), pe care am studiat într-un studio cu cookie în PHP.

Exemplu de finalizare a sesiunii:

Finalizarea sesiunii

Sesiunea este finalizată.

Acum puteți efectua un experiment: Rulați un exemplu cu un metru într-o fereastră, înfășurați contorul și apoi executați un exemplu cu ștergerea sesiunii și reînnoiți pagina cu contorul.

Scoateți fișierul cookie-urilor se poate face astfel:

setcookie (session_name (), "", timp () - 60 * 60 * 24 * 32, "/")

Încă o dată despre funcțiile Session_name () și Session_ID ()

Funcțiile Session_name () și Session_id () sunt rare în practică, dar scriu despre ele, deoarece articolul trebuie să fie dezvăluit prin mecanismul de funcționare a sesiunilor în PHP.

Folosind aceste funcții, puteți specifica propriile dvs. nume și identificatori de sesiuni, dar nu este recomandat să faceți acest lucru. Dacă ați vrut să le stabiliți, apoi scrieți aceste funcții cu argumente înainte de funcția sesiune_start (), ca în exemplul de mai jos:

Sesiuni în PHP.

Când utilizați acest exemplu, toți utilizatorii vor primi același identificator de sesiune.

Vom opri mai multe detalii dacă începeți un exemplu din partea secțiunii despre funcția sesiune_name () (aici este linkul) în diferite browsere (de exemplu, în Chrome și Internet Explorer), atunci în fiecare browser va avea o sesiune proprie, unică Identificator. Browserele stochează cookie-urile fiecare în dosarul lor, astfel încât funcția sesiune_start () va oferi fiecărui browser pentru a crea propriul identificator unic și, în consecință, pentru fiecare browser va fi creat un spațiu de stocare unic pe server. Prin urmare, un exemplu cu un contor (acest browser va funcționa independent unul de celălalt.

Dacă specificați același identificator de sesiune pentru toți utilizatorii, acestea vor funcționa cu un singur depozit pe server. Iată un exemplu de contor care va lua în considerare vizitele din diferite browsere:

100) (sesiune_unset (); session_destroy ();)?\u003e Sesiuni în PHP.

Counter numărul 2.

A deschis pagina în diferite browsere timp.

Deschideți un exemplu în "\u003e Această filă.

Dacă executați acest exemplu, nu este un fapt că veți vedea o unitate acolo. Alți vizitatori ar putea schimba deja valorile din spațiul de stocare a sesiunii de pe server. În acest caz, serverul șterge depozitul - nu știu, astfel încât atunci când contorul este depășit, valoarea de 100 va finaliza sesiunea.

Setarea timpului de așteptare

În mod implicit, sesiunea "trăiește" până când vizitatorul închide fereastra browserului. Acest lucru se datorează faptului că funcția sesiune_start () se află cu clientul, un astfel de cookie.

Durata de viață a sesiunii poate fi modificată utilizând funcția sesiune_set_cookie_params (), aici este sintaxa sa.

sESSION_SET_COOKIE_PARAMS (INT Lifetime [, Calea de șir [, Domeniul de șir [, Bool Secure]])))

În practică, este suficient să utilizați doar primul parametru (durata de viață), scrieți ora în câteva secunde, care determină cât de multe server trebuie să-și amintească starea sesiunii după închiderea browserului.

Funcția sesiune_set_cookie_params () se aplică numai pentru perioada de script.

Iată un exemplu de utilizare a acestei caracteristici:

Sesiuni în PHP.

Counter numărul 3.

Contravaloare:.

Contor deschis în "\u003e Această filă.

Înșurubați contorul și închideți browserul, după 30 de Sukund din nou, deschideți acest exemplu. Sesiunea dvs. va continua.

Serverul Web nu acceptă o conexiune permanentă cu clientul, iar fiecare solicitare este procesată ca nouă, fără nicio legătură cu cea precedentă.
Adică, este imposibil să urmăriți cererile din același vizitator și nici să salvați variabile între previzualizarea paginilor individuale. Aici, pentru a rezolva aceste două sarcini, au fost inventate sesiuni.
De fapt, sesiunea, dacă într-o nucă de port - acesta este un mecanism care vă permite să identificați fără echivoc browserul și să creați un fișier pentru acest browser de pe serverul în care sunt stocate variabilele sesiunii.

Nu voi picta în detaliu într-un astfel de mecanism. Acestea sunt un astfel de caz de călător, ca un coș de cumpărături în magazinul E-Store, autorizație, precum și nu problemele destul de triviale, cum ar fi protecția părților interactive ale site-ului de la spam.

În principiu, este destul de ușor să vă faceți propriul dvs. analog de sesiuni, nu la fel de funcțional ca în PHP, dar similar în esență. Pe cookie-uri și baze de date.
Când a determinat scenariul, vedem dacă bucătarul a venit cu un anumit nume. Dacă nu există cookie-uri, atunci puneți-l și scrieți o nouă linie în baza de date cu datele utilizatorului. Dacă există un bucătar, citim datele din baza de date. Îndepărtăm înregistrările vechi de la bază de la bază și aici suntem pregătiți pentru mecanismul sesiunii. Este complet ușor. Dar există câteva nuanțe care preferă utilizarea mecanismului încorporat al sesiunilor.

Dacă numai primul este activat, atunci când sesiunea este pornită (de fiecare dată când sesiunea sesiune_start ()), Cook este instalat de client. Browserul în mod corespunzător la fiecare solicitare Acest lucru returnare și PHP are un identificator de sesiune. Problemele încep dacă browserul Cook nu se întoarce. În acest caz, fără a primi cookie-uri cu un identificator, PHP va începe o nouă sesiune tot timpul, iar mecanismul nu va funcționa.

Dacă numai al doilea este inclus, atunci bucătarul nu este expus. Și se întâmplă, pentru ce, în cea mai mare parte, merită să utilizați mecanismul de sesiune încorporat. După ce scenariul funcționează și pagina este pe deplin formată, PHP vizualizează totul și adaugă la fiecare legătură și la fiecare formular pentru a transmite identificatorul sesiunii. Se pare așa:
Index. se transformă în
Index.
și formularele adaugă un câmp ascuns

Și browserul Când faceți clic pe orice legătură sau când faceți clic pe butonul din formular, trimiteți-ne o variabilă în interogare - identificatorul sesiunii!
Din motive evidente, identificatorul se adaugă numai la legăturile relative.

Teoretic, în sesiunile noastre de casă pe cookie-uri și baza de date cu dvs., puteți atribui tuturor referințelor la ID - și apoi sesiunile noastre vor funcționa independent de bucătar. Dar, vedeți - mai plăcut când altcineva face acest lucru? ;-)

În mod implicit, ambele opțiuni sunt activate în cele mai recente versiuni PHP. Cum vine PHP în acest caz? Cook este întotdeauna expus. Și link-urile de legătură numai dacă RNR nu a găsit un bucătar cu un identificator de sesiune. Când utilizatorul în timp scurt pentru această sesiune vine pe site, acesta este făcut de Cook, iar legăturile sunt completate. Data viitoare când solicitați, dacă sunt acceptate cookie-urile, PHP vede gătitul și încetează să completeze legăturile. Dacă cookie-urile nu funcționează, atunci PHP continuă să adauge corespunzător ID-ul la link-uri, iar sesiunea nu este pierdută.
Utilizatorii care au cookie-uri vor vedea o lungă legătură de la ID o singură dată.

Fuh. Cu transferul identificatorului terminat.
Acum rămâne să legați un fișier cu date pe partea serverului.
PHP o va face pentru noi. Doar scrie destul
sesiune_start ();
$ _Session ["test"] \u003d "Bună ziua World!";

Și PHP va scrie într-un fișier asociat acestei sesiuni, variabila de testare.
Iată o observație foarte importantă.
Un matrice $ _session este special.
În aceasta, de fapt, există variabile pe care le facem pentru a face accesibile în diferite scripturi.
Pentru a pune o variabilă în sesiune, este suficient să-i atribuiți un element de matrice $ _session.
Pentru a obține valoarea - este suficient să se aplice la același element. Un exemplu va fi ușor mai mic.

Decizia de gunoi - Ștergerea fișierelor PHP depășite se ocupă de asemenea. Ca și în cazul codificării datelor și a unei grăunte de orice alte lucruri necesare. Ca urmare a acestei preocupări, lucrați cu sesiuni se dovedește a fi foarte simplu.
Deci, de fapt, am ajuns la exemplul lucrării sesiunilor.
Exemplul este foarte mic:
sesiune_start ();

eCHO "Ați actualizat această pagină." $ _ Sesiune ["Counter"] ++. "O dată".
echo "
actualizați ";
?>

Verificăm dacă avem o variabilă contra sesiunii, dacă nu, atunci o creăm cu o valoare de 0 și apoi derivăm valoarea și creșteți unitatea. Valoarea mărită este înregistrată în sesiune, iar data viitoare când sunați scriptul, variabila va fi 1 și așa mai departe.
Totul este foarte simplu.

Pentru a avea acces la o sesiune variabilă pe orice pagină a site-ului, trebuie să scrieți doar o singură locație la începutul fiecărui fișier în care avem nevoie de sesiuni:
sesiune_start ();
Și accesați în continuare elementele matricei de $ _session. De exemplu, verificarea autorizației va arăta așa ceva:
sesiune_start ();
dacă ($ _session ["autorizat"]<>1) {
antet ("locație: /auth.php");
ieșire;
}

Eliminați variabilele din sesiune.
Dacă aveți Înregistrare_Globals \u003d Off, atunci puteți scrie
debut (sesiune de $ _ ["var"]);
Dacă nu, atunci din apropiere Este necesar să scrieți cu el
sesiune_unregister ("var");

Cele mai frecvente greșeli care dau PRP atunci când încearcă să lucreze cu sesiuni sunt:
Doi dintre ei,
AVERTISMENT: Nu se poate întâmpla sesiuni - anteturi deja trimise
AVERTISMENT: Nu se poate afișa cache-ul sesiunii de sesiune - anteturi deja trimise

cauzate de același motiv, soluția este descrisă în acest FAK
Al treilea
AVERTISMENT: OPEN (/ TMP \\ SESS_SID, O_RDWR) a eșuat: Nu există un astfel de fișier sau director (2) în Full_Script_Path pe numărul de linie (mai devreme arăta Avertisment: Nu a reușit să scrie date de sesiune (fișiere). Verificați dacă setarea actuală a sesiunii.save_path este corectă (/ tmp)),
Dacă îl traduceți din limba engleză, explică în detaliu problema: Calea specificată în PHP.ini nu este disponibilă în directorul în care sunt scrise fișierele de sesiune. Această eroare stabilește cel mai simplu mod. Doar înregistrați directorul care există și este disponibil pentru înregistrare, de exemplu,
sesiune.save_path \u003d C: \\ Windows \\ Temp
Și nu uitați să reporniți Apache după aceea.

După cum se dovedește, inteligența omului nu are limite și, prin urmare, trebuie să clarific:
Un al treilea mesaj de eroare (este imposibil de găsit un director) va duce în mod inevitabil la apariția primelor două, deoarece mesajul de eroare este ieșirea în browser și după ce este imposibil să utilizați anteturi. Prin urmare, nu vă grăbiți să căutați o concluzie prematură și să scrieți mai întâi calea cea bună!

Următoarea problemă de prevalență atunci când lucrați cu sesiuni este un registru vechi de lobețe_globale. Nu oferiți variabilelor de script numele care se potrivesc cu indexurile matricei de $ _session!
Când register_globals \u003d ON, valorile se vor suprascrie reciproc și vă confundați.
Și când se va arăta o altă eroare: "Scriptul dvs. se bazează, eventual, pe un efect secundar de sesiune care a existat până la 4.2.3.", În cazul în care există o sesiune variabilă în scenariu și variabila globală cu același nume. Pentru a scăpa de ea, trebuie să inițializați întotdeauna variabilele înainte de utilizare (sau cel puțin verificați existența) și să nu oferiți nume variabile globale care să corespundă indexurilor matricei de $ _session.

Dacă nu funcționează, dar nu sunt afișate mesaje, apoi adăugați două linii la începutul scriptului care sunt responsabile pentru ieșirea tuturor erorilor de pe ecran - este foarte posibil ca exista erori, dar tu doar nu să le vezi.
iNI_SET ("display_errors", 1);
error_reporting (e_all);

Sau a se vedea erorile din Error_log. În general, subiectul afișării mesajelor de eroare este dincolo de domeniul de aplicare al acestui articol, deci asigurați-vă că cel puțin le puteți vedea. Purtă ușor de căutarea erorilor poate fi găsită în această secțiune.

Dacă sunteți sigur că nu există erori, dar exemplul de mai sus nu funcționează oricum, atunci este posibil ca PHP să nu fie inclus în PCL trece prin UL, și cookie-urile dintr-un anumit motiv nu funcționează.
Vedeți ce aveți cu cookie-urile.
În general, dacă "nu lucrați" sesiuni, încercați mai întâi să transferați identificatorul sesiunii cu mâinile dvs., adică faceți o legătură și un atribut la identificatorul IT:
sesiune_start ();
dacă (! Isset (sesiune de $ _ ["Counter"])) $ _session ["Counter"] \u003d 0;
echo "Ați actualizat această pagină." $ _ Sesiune ["Counter"] ++. "O dată.

actualizați ";
?>

Ar trebui să se verifice că directiva sesiune.use_Only_cookies nu este activată, ceea ce interzice PHP să accepte identificatorul sesiunii dacă a fost transmis prin intermediul URL-ului

Dacă acest exemplu nu câștigă, atunci problema este fie în banal typos. (Half "Probleme" cu sesiuni provine dintr-un nume variabil incorect scris), fie într-o versiune prea veche a PHP: suportul sesiunii a apărut în versiunea 4.0, iar matricea $ _session - în 4.1 (înainte de a fi folosit $ http_session_vars).
Dacă funcționează, atunci problema este în cookie-uri. Urmărirea - Ce buchet este pus de server în browser, indiferent dacă browserul îl returnează. Căutarea este foarte utilă, privindu-se prin vizionarea schimbului de anteturi HTTP între browser și server.
Explicația principiului lucrării bucătarului depășește domeniul de aplicare al acestui text și atât de mare, dar cel puțin asigurați-vă că serverul gătitului cu identificatorul trimite și browserul revine. Și, în același timp, identificatorii coincid între ele \u003d)
Instalarea cookie-urilor ar trebui să arate
Set-Cookie: FPSESSID \u003d PRLGDFBVLG5FBSBSHCHCH6HJ0CQ6;
sau cum
Set-Cookie: FPSESSID \u003d PRLGDFBVLG5FBSBSHCHCH6HJ0CQ6; calea \u003d /
(Dacă solicitați un script nu din catalogul de rădăcini)
Răspunsul serverului ar trebui să arate
Cookie: PhSessid \u003d PRLGDFBVLG5FBSBSHCHCH6HJ0CQ6
sau
Cookie: PPSESSID \u003d PRLGDFBVLG5FBSBSHCHCH6HJ0CQ6; B \u003d B.
Dacă browserul returnează alte cookie-uri, cu excepția identificatorului sesiunii.

Dacă browserul de buchet nu se întoarce - verificați dacă cookie-urile funcționează deloc.
Asigurați-vă că domeniul la care faceți apel este să aveți un nume normal (în care există cel puțin un punct și nu conține caractere interzise, \u200b\u200bcum ar fi sublinierea) și curățarea cache-ului browserului - acestea sunt două motive principale pentru ca cookie-urile să nu funcționeze .

Dacă un exemplu funcționează de aici și codul propriu nu este, atunci problema nu este evident în sesiuni, ci în algoritm. Căutați unde ați pierdut variabila, peste pașii îndurați un exemplu de aici, depanați scriptul.

O altă problemă poate apărea dacă utilizați redirecționarea prin antet sau navigație utilizând JavaScript.
Faptul este că RNR adaugă automat identificatorul sesiunii numai la referințele speciilor
Dar nu o face pentru header-uri, javascript, meta tag-uri.
Prin urmare, trebuie să adăugați identificatorul cu mâinile, de exemplu, după cum urmează:
antet ("Locație: /Script.php?" SESIP_NAME (). "\u003d". SESID_ID ());

De asemenea, foarte rare și complet incomprehensibilă, de unde emergența, problema este că setarea sesiune.save_handler are o altă valoare decât fișierele. Dacă nu este așa - corect.

Siguranță
Sesiuni de siguranță - Tema este extinsă. Prin urmare, mă voi opri la câteva puncte principale.
Cele mai găzduite nu este de a transmite identificatorul prin bara de adrese. Acest lucru este scris chiar și în PHP.ini, dar limitează funcționalitatea sesiunilor. Dacă decideți să urmați acest sfat, cu excepția sesiunii.use_trans_sid \u003d 0 Nu uitați de sesiune.use_only_cookies \u003d 1
Este recomandabil să legați sesiunea la adresa IP: în acest fel, dacă identificatorul este furat, ticălosul nu va putea să le folosească în majoritatea cazurilor.
Se recomandă utilizarea directivei sesiune.save_path, cu care să vă specificați propriul director pentru a salva fișierele de sesiune. Acest lucru este mai sigur decât atunci când sunt stocate în directorul general temporar al serverului implicit.

Informații suplimentare:

  • În plus față de bucătar, mecanismul sesiunii trimite, de asemenea, anteturile care interzic caching-ul paginilor (același limitator cache). Pentru HTML este corect și necesar. Dar când încercați să oferiți un script care verifică autorizarea, trimiteți fișierul, atunci Internet Explorer refuză să o descărcă. Din cauza acestui antet. Apel
    session_cache_limire ("privat");
    Înainte de începerea sesiunii ar trebui să rezolve problema.
  • Oricare ar fi ciudat, dar în matricea $ _sesion nu puteți utiliza indexuri numerice - $ _session, $ _session ["10"] - nu vor exista facilități.
  • Undeva între versiuni 4.2 și 5.0, a fost imposibil să instalați sesiune.use_trans_SID utilizând INI_SET (). Începând cu 5.0, puteți deja din nou.
  • Înainte de versiunea 4.3.3 Cook PHP a trimis o grămadă numai dacă nu a existat un identificator la sesiune la cerere. Acum, bucătarul este trimis de fiecare dată când sesiunea session_start ()

    Exemplu de autorizare Utilizarea sesiunilor
    Vom ilustra totul ales printr-un exemplu mic:
    Creați un fișier auth.php:
    dacă (Isset ($ _ Postare ["Auth_name"])))
    {
    $ Sql \u200b\u200b\u003d. "Selectați * de la utilizatori unde numele \u003d? S";
    $ rând \u003d $ db -\u003e betters ($ sql, $ _post ["auth_name"]);
    Dacă ($ rând && parola_verifle ($ _post ["auth_pass"], $ rând ["pass"])) (
    $ _Session ["user_id"] \u003d $ rând ["ID"];
    }
    header ("Locație: http: //". $ _Server ["http_host"]. $ _Server ["solicitare_uri"]);
    Ieșire;
    }

    dacă (Isset ($ _ obține ["acțiune"]) și $ _get ["acțiune"] \u003d\u003d "logout") (
    sesiune_start ();
    sesiune_destroy ();
    antet ("Locație: http: //". $ _Server ["http_host"]. "/");
    Ieșire;
    }

    dacă (! Isset (sesiune de $ _ ["user_id"]) (
    ?>








    ieșire;
    }

    Acum este suficient să scrieți în toate scripturile protejate
    necesită "auth.php";
    În acest exemplu, se presupune că sesiunea a început deja și conexiunea cu baza de date este creată utilizând o clasă pentru lucrări sigure și convenabile cu MySQL. De asemenea, se presupune că parola este hashizată utilizând funcția recomandată a parolei_hash.
    Exemplu de fișier protejat:

    sesiune_start ();
    includ "safemysql.class.php";
    $ db \u003d safermysql nou (["db" \u003d\u003e "test"]);
    include "auth.php";
    ?>
    secret.

    logout.

    Ops! Link-uri foarte utile:
    http://www.php.net/manual/ru/ref.session.php este cele mai recente și cele mai recente informații despre sprijinul sesiunilor în PHP în documentația oficială, plus numeroase comentarii ale utilizatorilor. Este foarte recomandat pentru citire.
    http://phpclub.ru/manrus/f/ref.session.html este o traducere foarte învechită a acestui capitol în limba rusă, din documentația în traducerea lui Alexander Pyramidin.
    http://phpclub.ru/detail/article/sessions.
    Articol cu \u200b\u200btitlul patetic "Adevărat pe sesiuni". Frunze de impresie duale. Inițial, autorul vorbește foarte accesibil despre mecanismul de sesiuni, dar metodele pe care le sugerează până la sfârșitul articolului sunt complet noroioase.

    Articolul Color Dmitry Borodin de pe site
    http://php.spb.ru/ este urgent nu este recomandat.
    Băieți, ea este teribil de depășită. Nu este suficient ca exista inexactități reale, deci cu sesiuni în PHP pentru o lungă perioadă de timp pur și simplu nu funcționează.
    Mulțumesc atât de mult pentru ea, a fost primul articol despre sesiuni în limba rusă, eu însumi am studiat-o, dar acum este necesar să o trimitem la o odihnă bine meritată.
    De asemenea, depășită, din păcate, și multe alte articole situate pe Internet și nu reînnoite de ani.

  • Sesiune (din Lat. - Sesio - Întâlnire, Engleză - Sesiune) - Aceasta este o perioadă de timp care acoperă utilizatorul de pe Internet din momentul deschiderii primelor și a ultimelor linkuri. Se calculează ca diferență de timp între cererile inițiale și cele finale. Cu toate acestea, ultima pagină poate fi vizualizată de utilizator în diferite momente, din care, prin urmare, măsurarea timpului între două cereri devine mai dificilă.

    Cum se sesiunea cu protocolul HTTP și Cookies

    Ceea ce o astfel de sesiune poate fi explicată prin împingerea din protocolul HTTP. Prin ea însăși, acest protocol nu are o modalitate de a păstra statul dintre două operațiuni. Acestea., Pur și simplu, puneți, deschizând o pagină și apoi, mergând de la el la altul, HTTP nu va putea stabili că ambele solicitări aparțin unui singur utilizator. Și aici, ajutorul unei metode speciale de urmărire vine la ajutorul sesiunilor (prin sesiunile noastre).
    De aici, răspunzând la întrebarea ce fel de sesiune, putem spune că acesta este un obiect logic auxiliar care promovează transmiterea datelor între solicitările HTTP secvențiale de la un utilizator.
    Cookie-uri, cum ar fi sesiunea, stocați informații despre utilizator în timpul deplasării pe pagini diferite și îmbunătățirea funcționării protocolului. Dar spre deosebire de al doilea, unde datele sunt stocate în fișiere temporare de pe server, le stochează pe computerul unui utilizator sub formă de fragmente mici.

    Pentru ce au nevoie de sesiuni

    Utilizarea sesiunilor devine indispensabilă atunci când lucrați cu astfel de site-uri ca forumuri, buletine și magazine online, deoarece în acest caz trebuie să salvați datele utilizatorului pentru mai multe pagini.

    Etapele sesiunii

    Toată sesiunea poate fi împărțită în trei etape:

    • sesiune de deschidere (când utilizatorul începe să lucreze cu un anumit site),
    • contabilizarea sesiunilor variabile (atunci când se deplasează în diferite pagini),
    • finalizarea sesiunii.

    Datorită faptului că aceste sesiuni sunt stocate pe un server terță parte, cel mai bine este să nu păstrați cantități mari de informații în ele, ci să utilizați cookie-uri.

      Text / HTML 10/19/2017 7:51:00 Vector BCO. 0

      Există 13-15 clienți care stau pe serverul terminal WS2012. Terminalul de pe virtuală se rotește. Pe un DNS separat, AD și DHCP Virtual.

      Întrebarea nr. 1: Cum se configurează termenul de închidere atunci când o sesiune inactivă?

      În configurația computerului Gpedit.Msc -\u003e Componente Windows -\u003e Servicii șterse de masă -\u003e Nodul de sesiune la distanță de la distanță -\u003e Restricționarea sesiunilor sesiunii. Toți parametrii nu sunt specificați. Și, în același timp, cu o simplă în zona de 20-30 de minute. Toate aruncă departe.

      În Renet, a existat o grămadă de influență, nu am găsit nicăieri pentru WS2012, există doar pentru WS2003

      Întrebarea nr. 2: Cum să faceți acest lucru, astfel încât după deconectarea sesiunii, totul este deschis de la utilizator - nu este închis?

      Acestea. De exemplu, un utilizator ar trebui să arunce după 20 de minute, în timp ce întreaga sa sesiune este ucisă și când reapare toate programele și docurile sale deschise - închise. De fapt, atunci când există un răspuns la întrebarea # 1, voi configura timpul, dar totuși aș dori să deschid niciodată utilizatorul să re-out, după fiecare avort spontan ... înțeleg că acest lucru este legat de viața sesiunii , dar totuși, dacă există un regim atunci când sesiunea pe moarte, dar starea ei este salvată? Și dacă - da, cum să o configurați?

      Întrebarea # 3: Este posibil să se limiteze drepturile de dezactivare a serverului în WS2012?

      Și când utilizatorii ridică panoul de lansare și există un buton "Power", adică. Orice utilizator poate înșela terminalul de server din greșeală și toate lucrările se ridică.

      Moderator.

      Text / HTML 10/19/2017 11:30:36 Avksetyev Serghei. 1

      1 Deci, în proprietățile colecției există o filă "sesiune" și vedeți ce aveți nevoie pentru a configura .. sau ce nu înțeleg?

      2 Privind modul în care utilizatorul închide sesiunea .. Dacă dezactivați și configurați să nu închideți Senasul cu dizabilități, voi rămâne programe deschise .. Dar ceva mi se pare că nu este o idee bună ... Am câștigat greu Terminale care se răstoarnă noaptea în mod constant la toate celelalte gunoi deschise închise.

      3 Dacă nu vi se permite utilizatorilor, atunci .. Acesta este doar butonul implicit numai pentru a dezactiva și a ieși ..

    • Text / HTML 10/23/2017 10:51:31 Ivan End Co. 0

      \u003e\u003e Cum ați configurat serverul terminal? Dacă sunteți configurat de rolul RDS și până când sesiunea este complet închisă (cu toate programele de utilizatori din această sesiune).

      \u003e\u003e dacă sunteți configurat rds rol

      Nu știu unde să văd?

      \u003e\u003e În configurația colecțiilor există durata de viață a sesiunii până la momentul închiderii

      Nu știu unde să văd?

      \u003e\u003e Aveți utilizatori pe serverul pe care administratorii?

      Da, admin.

      \u003e\u003e Implicit, utilizatorii obișnuiți nu pot dezactiva serverul. Dar puteți ascunde acest buton în politică.

    • Text / HTML 23.10.2017 11:00:12 Ivan End Co. 0

      \u003e\u003e Deci, în proprietățile colecției există o filă "sesiune" și vedeți ce aveți nevoie pentru a configura .. sau ce nu înțeleg?

      Poate că ați înțeles corect, doar că nu știu cum să o fac, pe faptul că scriu aici ... Din anumite motive, în Renet, nu găsesc o instrucțiune clară pentru configurarea serverului terminal, pe roluri și sesiuni .

      Ai scris în proprietățile colecției - unde este?

      \u003e\u003e În funcție de modul în care utilizatorul închide sesiunea .. Dacă dezactivați și configurați să nu închideți sesiunea dezactivată, voi rămâne programe deschise .. Dar ceva mi se pare că nu este o idee bună ... eu " M a câștigat terminale grele care se răstoarnă în timpul nopții în mod constant la toate acestea, toate celelalte gunoi deschise închise.

      Aș fi crescut pur și simplu viața sesiunii, pentru început ... înțeleg perfect, despre ce vorbești, care sesiunile fosile nu sunt o chestiune. Dar ar fi cunoscut exact unde este exact configurarea ...?

      Nu am nici o experiență în configurarea serverului terminal (a lucrat anterior în ea numai ca client), deși în structura IT de mult timp, dar nu a fost această sarcină de mult timp. Iar întrebarea nu ar fi aici pentru a scrie dacă aș putea găsi o instrucțiune detaliată în Internet ...

    • Text / HTML 10/23/2017 11:13:30 Vector BCO. 0

      \u003e\u003e Cum ați configurat serverul terminal? Dacă ați configurat rolul RDS în configurația colecțiilor, există o durată de viață a sesiunii până când acesta este oprit și până când sesiunea este complet închisă (cu toate programele utilizatorilor din această sesiune).

      Favorite, dar foarte ciudat, pentru mine, întrebarea este modul în care ați creat? După cum mă gândesc de la întrebări, ar trebui să fie clar că nu am înființat. În caz contrar, este foarte dificil să explici ceea ce am înființat și acum nu știu cum să schimb ... amnezie etc.

      Nu am fost configurat din nou. Și pentru că Nu am făcut-o, apoi abilitățile din aceste setări - evident lipsesc. Așa că pun o întrebare profesioniștilor: cum să o faceți, vă rog să-mi spuneți?

      \u003e\u003e dacă sunteți configurat rds rol

      Nu știu unde să văd?

      \u003e\u003e În configurația colecțiilor există durata de viață a sesiunii până la momentul închiderii

      Nu știu unde să văd?

      \u003e\u003e Aveți utilizatori pe serverul pe care administratorii?

      Da, admin.

      \u003e\u003e Implicit, utilizatorii obișnuiți nu pot dezactiva serverul. Dar puteți ascunde acest buton în politică.

      Cum să eliminați drepturile de administrator de la utilizatori? Este reglată în altă parte a serverului terminal? Cum să faceți o politică cu ascunderea butonului de alimentare?

      Vă mulțumim anticipat pentru înțelegere și așteptare pentru răspunsuri ...

      Aveți un instrument progresiv Mega pe server " Server manager."Se adaugă la roluri \\ pene și acolo sunt configurate. Citiți funcționalitatea acestui instrument. În stânga există setări pentru unele roluri (instalate). Dacă există un punct RDS - sunteți în el și apoi în ea Setările colecției. Google ca serverul terminal este configurat la WS 2012 R2. Puteți căuta, așa că Google -\u003e "Terminal Server 2012 R2 pas cu pas".

      Pe server (și nu numai pe server) există, de asemenea, un instrument mega numit Managementul calculatorului. (nu pentru a fi confundat cu managerul de server) Găsiți că poate fi ajustat cu butonul din dreapta pentru lansare.

      În managementul calculatorului, mergeți la utilizatorii și grupurile locale în grup, apoi în administratori și vedeți cine există și stați. Aruncați toți cei care nu au nevoie de aceste drepturi. Și reporniți serverul (asigurați-vă că nu ați selectat dreptul, Bo îl va primi înapoi).

      Cum să ascundeți Google -\u003e "Ascundeți butonul de închidere GPO"

      Opinia exprimată de mine nu este o poziție externă a Microsoft

      Moderator.

      Text / HTML 25.10.2017 7:51:20 Ivan End Co. 0

      \u003e\u003e Ghici ce nu știi cum să gestioneze serverul a fost dificil, deoarece de obicei vine aici cel puțin goose prima întrebare.

      Întrebarea este Google și nu o dată, a scris mai sus. Doar m-am dus la resursele vorbitoare de limbă rusă ... nu există articole inteligente. Despre sursele engleze au văzut că există, dar abilitățile tehnice de limba engleză nu sunt suficient de bune pentru a înțelege corect articolele mari despre setările de sistem de la zero, care anterior nu a făcut când.

      >>Puteți căuta așa că Google -\u003e "Terminal Server 2012 R2 Ghid pas cu pas.Google -\u003e "Ascundeți butonul de închidere GPO

      Google poate folosi modul de utilizare a motorului de căutare - nu am nevoie. De ce nu căutați surse vorbitoare de limbă engleză - a scris mai sus ... Dacă vi se spune că nu știu cum să configureze serverul terminal, nu înseamnă că omul nu știe cum să Google. Dar nu ați pierdut ocazia de 99% din aceasta, începeți cu moralul și învățăturile unei persoane Google. Cât despre mine a fost întotdeauna și este o problemă în înțelegerea oamenilor cu infrastructura IT. Pont bun este mai scump decât banii. Și nu un său Schnick nu ratează acest lucru, după cum arată practica, chiar și în comunicarea cu colegii, ca să spunem așa.

      A fost întrebată o întrebare - cum să ridicați un server terminal? Și a explicat în detaliu ce și unde aveți nevoie pentru a configura ... și scrieți cereri pentru Google. Am întrebat un om despre matematică și a început vremea ... așa că se dovedește. În loc de tot ce ați scris mai sus, ar fi posibil să răspundeți pe scurt rusă și la punct. Da, spuneți-mi ce googling-ul întrebării, soluția de care aveți nevoie, acestea sunt elemente mai conexe. Și acest lucru este așa, dar dacă citiți cu atenție primul post, atunci termenul dvs. nu ar fi nevoie.

      \u003e\u003e Aveți un instrument progresiv Mega pe serverul numit "Server Manager".

      Iată un ton moral, mai dorind să măsurați faimosul loc, în fața unei persoane. Este ca prof. Boxerul va arăta un novice cum să facă knockout, pe față și fără pregătire ... o metodă foarte ciudată, ajuta o persoană și să răspundă la întrebări.

      Forma ta aici în limba rusă, întrebarea a fost în limba rusă, iar răspunsul dorește să intre în limba rusă.

      Fără morală - și ceea ce nu ați făcut Google? Și există un astfel de buton Trump Google, etc.

      Este mult mai productiv să lucrați în stil: întrebarea este răspunsul.

      Întrebare: Cum de a crea asta? Răspuns: Veniți acolo și faceți ceva.

    • Text / HTML 25.10.2017 8:25:04 Vector BCO. 0

      Pe " Întrebare - Cum de a ridica serverul terminal"Puteți răspunde la 10-15 pagini cu articole - acesta nu este un format de forum. Ți-am dat cereri specifice motorului de căutare care vă va conduce la un rezultat garantat. În resursele limbii rusești, există și o mulțime de informații Pe resursele lingvistice rusești, de exemplu pe Habré și site-uri similare, dacă nu a fost găsit înseamnă să vă căutați să vă întoarceți rău.

      Pentru a da un răspuns clar, trebuie să obțineți o întrebare clară. te-am intrebat nu moralizeazăÎntrebarea în primul mesaj la care am primit un răspuns în stil " că mă întrebați prostia, este încă clar că eu xs ce se întâmplă".

      Opinia exprimată de mine nu este o poziție externă a Microsoft