PHP Session Tutorial

PHP Session Tutorial
Når et nettsted på flere sider er designet, er det ikke mulig å lagre statens informasjon om sidene uten å bruke økt. Når brukeren flytter fra en side til en annen, er det viktig å holde informasjon fra forrige side for forskjellige typer nettsteder. Men den statsløse protokollen HTTP klarer ikke å gjøre denne oppgaven. En av måtene å løse dette problemet er å bruke PHP -økthåndteringsfunksjonen. Den brukes til å oppbevare all informasjon fra hver besøkende, for eksempel: når brukeren har begynt å besøke nettstedet, hvilke sider som har blitt besøkt av brukeren, hvilke aktiviteter som er gjort av brukeren på hver side, og når brukeren har stengt Nettsted osv. Økthåndtering er veldig viktig for det e-handelsbaserte nettstedet der brukeren må flytte til forskjellige sider for å kjøpe produkter. Mange PHP-øktdirektiver, innebygde funksjoner og variabler brukes av PHP-skriptet for å håndtere brukerens økt. Måten å håndtere en brukers økt ved å bruke PHP -konfigurasjonsdirektiver, sesjonsfunksjon og sesjonsvariabler er vist i denne opplæringen ved å bruke flere eksempler.

PHP -sesjonsdirektiver

Alle sesjonsrelaterte direktiver kan settes ved å bruke PHP.Inn jeg fil. Noen nyttige øktrelaterte PHP-direktiver er nevnt.

Øktdirektiv hensikt
økt.save_handler Verdien av direktivet kan være filer eller mm eller sqlite eller bruker. De mm brukes til å håndtere øktdata ved å bruke minne. De sqlite brukes til å håndtere data ved å bruke SQLite -database. De bruker brukes til å håndtere data ved å bruke den brukerdefinerte funksjonen.
Session_auto_start Verdien av dette direktivet vil være å starte økten automatisk; Ellers vil det være Av.
økt.Navn Det brukes til å angi øktnavnet og standard sesjonsnavn er phpsessid.
økt.save_path Den brukes til å angi banen der sesjonsinformasjonen vil bli lagret. Standardverdien for dette direktivet er filer.
økt.hash_funksjon Den brukes til å generere en hash -økt -ID. 0 brukes MD5 algoritme og 1 brukes til Sha algoritme.
økt.cache_expire Det brukes til å sette utløpstiden for økten.
økt.use_cookies Den brukes til å lagre økt -IDen ved å ansette informasjonskapselen. 1 brukes til å bruke informasjonskapsler og 0 er bemannet for ikke å bruke informasjonskapselen.
økt.use_only_cookies Den brukes til å bruke informasjonskapselen bare for lagring av økt -ID.
økt.cookie_secure Det brukes til å definere om cookien vil bruke den sikre forbindelsen eller ikke. Det er aktivert ved å bruke ON og deaktivert ved å bruke Av verdier.
økt.cookie_lifetime Det brukes til å sette levetiden til cookien.

Du kan besøke følgende lenke for å vite mer om sesjonsdirektivene.

https: // www.PHP.nett/manuell/en/ini.liste.PHP

PHP -øktfunksjoner

PHP har mange innebygde funksjoner for økthåndteringsoppgaver. Noen nyttige økthåndteringsfunksjoner er nevnt nedenfor.

Øktfunksjon hensikt
Session_Start () Det brukes til å starte en ny økt eller starte forrige økt på nytt.
øktnummer() Det brukes til å stille eller få eller begge sette og få økt -ID.
session_create_id () Den brukes til å lage en ny økt -ID.
Session_name () Det brukes til å sette eller få eller begge sette og få gjeldende øktnavn.
Session_status () Det brukes til å få informasjon om den nåværende statusen til økten.
Session_reset () Det brukes til å initialisere øktarrayen på nytt.
Session_unset () Det brukes til å ikke definert alle sesjonsvariabler.
Session_Destroy () Det brukes til å ødelegge alle registrerte øktdata.
Session_encode () Den brukes til å kode gjeldende øktdata.
Session_decode () Den brukes til å avkode de kodede gjeldende øktdataene.
Session_Commit () Det brukes til å skrive øktdata og lukke økten.
Session_abort () Det brukes til å fjerne endringene i øktarrayen og lukke økten.
Session_regenerate_id () Det brukes til å generere en ny økt for den eksisterende økten.
session_cache_limiter () Det brukes til å sette eller få hurtigbegrenseren til den aktuelle økten.
Session_cache_expire () Det brukes til å stille inn eller få hurtigbufferen til å utløpe tiden for den aktuelle økten.

Du kan besøke følgende lenke for å vite mer om de innebygde sesjonsfunksjonene til PHP: https: // www.PHP.nett/manual/no/ref.økt.PHP.

PHP -øktvariabel

PHP bruker et assosiativt utvalg som heter $ _Session For lagring av øktdata. Det er 'superglobal' variabel som kan nås hvor som helst i manuset. Verdiene initialiseres i denne variabelen etter å ha opprettet en økt, og denne variabelen blir usett etter å ha ødelagt økten.

Økthåndtering

Økthåndteringen kan gjøres av webserveren ved å bruke databasen eller filen. Økthåndteringen kan gjøres ved å bruke nettleseren til brukeren hvis nettleseren støtter informasjonskapslene. Men hvis nettleseren er deaktivert av brukeren, kan ikke denne måten brukes til økthåndtering. Så å bruke webserveren er den beste måten å håndtere økter på. Trinnene for økthåndtering er nevnt nedenfor.

  • Den besøkende sender forespørselen til webserveren om å besøke en side.
  • Webserveren oppretter en økt-ID for den besøkende, lagrer øktrelaterte data for besøkende, og sender siden som svaret for besøkende.
  • Webserveren lagrer sesjonsinformasjonen relatert til besøkende til en tekstfil på serveren for å spore besøkende økt på hver side besøkt av besøkende under økten.
  • Hvis nettleseren som brukes av besøkende støtter informasjonskapsler, vil økt -IDen bli lagret av phpsessid -informasjonskapselen for å spore besøkende økt på hver side som besøkes av besøkende under økten.

Opprett og skriv økt -IDen

PHP har to innebygde funksjoner for å opprette eller starte en tidligere økt på nytt, og de som er nevnt tidligere i denne opplæringen. Bruken Session_Start () Funksjon har blitt vist her som brukes til å generere en ny økt eller generere en tidligere økt på nytt. Den sjekker økten for den besøkende og oppretter en ny økt hvis besøkende besøker siden første gang. Lag en PHP-fil med følgende skript som oppretter en ny økt for besøkende og genererer en unik sesjons-ID som er skrevet ut av en annen innebygd funksjon som heter øktnummer().

// Start en ny økt
Session_Start ();
// Skriv ut økt -IDen
ekko "Ny generert økt -ID:
"".øktnummer(). """;
?>

Produksjon
Følgende utdata vises etter å ha utført skriptet ovenfor fra nettleseren. Den unike økt -IDen er skrevet ut her, og denne IDen vil forbli uendret hver gang siden er oppdatert. Hvis nettleseren er lukket og åpnet igjen for å utføre dette skriptet, vil en ny økt-ID bli skrevet ut.

Lagre og skriv inn øktdataene

Variabelen $ _Session er påkrevd å initialiseres etter å ha opprettet økt -ID for å lagre øktdataene. Opprett en PHP -fil med følgende skript som lagrer verdien av "Navn" -tasten til $ _Session [] -variabelen etter å ha startet en ny økt. De Isset () Funksjonen har blitt brukt i skriptet for å sjekke $ _Session ['Name'] -variabelen er satt eller usett. Hvis verdien ikke er set for denne variabelen, vil det bli satt en verdi for denne variabelen. Hvis verdien er satt for denne variabelen, vil verdien av denne variabelen bli skrevet ut med formateringen.

// Start en ny økt
Session_Start ();
hvis(!Isset ($ _ Session ['Name']))

ekko "

";
ekko "

Ny økt er startet for brukeren.

";
// Lagre øktdataene
$ _Session ["name"] = "Fahmida Yesmin";

ellers

ekko "

";
// Les øktdataene
ekko '

Velkommen tilbake, ' . $ _Session ["Navn"] . '.

';

?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor første gang. I følge utdataene har en ny økt -ID blitt generert for besøkende fordi brukeren besøker siden for første gang. Variabelen $ _Session ['Name'] er initialisert med en strengverdi og en melding er skrevet ut for den nye økten.

Følgende utdata vises hvis brukeren besøker siden neste gang. Verdien av $ _Session ['Name'] -variabelen er skrevet ut her. Følgende melding vises hver gang til økten er ødelagt eller øktdataene blir fjernet eller nettleseren blir åpnet igjen.

Lag en økt etter å ha godkjent brukeren

Normalt opprettes økten for den registrerte brukeren av nettstedet etter å ha godkjent brukeren basert på gyldige data for å forhindre uautorisert tilgang til brukeren for sensitive data. Økthåndteringen er veldig viktig for e-handelsnettstedet for å spore brukerens aktivitet. Dataene relatert til brukerens autentisering lagres i databaseserveren som MySQL, SQLite, SQL Server, PostgreSQL, etc. Brukerinformasjonen for godkjenningen er lagret i tekst her for enkelhet. Lag en tekstfil som heter Brukere.tekst Med følgende innhold og filen inneholder navn, e -post, brukernavn og passord for tre brukere. Hvert felt er atskilt med et komma (,) i filen. Autentiseringen vil bli bekreftet ved å bruke brukernavnet eller e -posten og passordet.

Brukere.tekst

Navn, e -post, brukernavn, passord
Nipa Chowdhury, [email protected], NIPA35, POP890
Mehrab Hossain, [email protected], Hossainbd, 674523
Abbas uddin, [email protected], abbas90, hello765

Lag en HTML -fil som heter innloggingsskjema.html Med følgende skript som viser et påloggingsskjema med to tekstfelt og en innsendingsknapp. Brukernavnet eller e -posten vil bli tatt i det første tekstfeltet, og passordet vil bli tatt i det andre tekstfeltet. Når sendeknappen trykker på, blir siden omdirigert til Session3.PHP som vil bli opprettet senere.

innloggingsskjema.html



Økthåndtering ved hjelp av PHP




Logg Inn

brukernavn eller e-post:


passord:







Lag en PHP -fil med følgende skript som autentiser påloggingsinformasjonen basert på dataene til Brukere.tekst fil og initialiserer øktdataene etter å ha godkjent brukeren. De $ pålogging Variabel har blitt brukt til å spore om den innsendte påloggingsinformasjonen er gyldig eller ugyldig og den opprinnelige verdien av denne variabelen er falsk. Den første ISSET () -funksjonen vil bli brukt til å sjekke om $ _Session ['Name'] -variabelen er satt eller usett. Hvis denne variabelen er uset, vil den andre ISSET () -funksjonen bli brukt til å sjekke verdien av $ _Post ['UserMail'] variabel. Hvis verdiene til denne variabelen er angitt, vil de innsendte skjemaverdiene lagres i to variabler. Hvis verdiene til disse variablene er ikke-tomme, er det Brukere.tekst Filen vil bli åpnet for lesing for å sjekke det innsendte skjemaverdiene med verdiene på e -posten eller brukernavnet og passordet til enhver bruker av tekstfilen. De eksplodere() Funksjon har blitt brukt til å dele opp hver linje i filen basert på komma (,) og lagre de delte verdiene i fire variabler. De listverk() Funksjonen har blitt brukt for å fjerne ekstra plass fra begge sider av variabelen. Hvis det blir funnet noen matchende oppføring, vil variabelen $ _Session ['Name'] bli initialisert med navnet på den matchende brukeren som ble hentet fra filen og en suksessmelding, "Du er logget inn vellykket.”Vil bli skrevet ut. Hvis ingen matchende oppføring blir funnet, vil påloggingsskjemaet vises igjen. Hvis siden blir revidert etter å ha opprettet økten, vil en velkomstmelding bli skrevet ut med verdien av $ _Session ['Navn'].

Session3.PHP

// definere variabelen for å sjekke gyldig pålogging
$ LOGIN = FALSE;
// Start en økt
Session_Start ();
// sjekk om økten er generert eller ikke
hvis(!Isset ($ _ Session ['Name']))

// sjekk e -posten eller brukernavnet er angitt eller ikke
if (Isset ($ _ Post ['UserMail']))

// lagre brukernavnet eller e -post og passord etter trimming
$ bruker = trim ($ _ Post ['userEmail']);
$ passord = trim ($ _ post ['passord']);
// sjekk om de innsendte verdiene er tomme eller ikke
if ($ bruker != "" && $ passord != "")

// Les innholdet til brukerne.txt -fil
$ userfile = fil ("Brukere.tekst");
// Les fillinjen for linje
Foreach ($ userfile som $ data)

// Les dataene til filen i fire variabler etter splitting basert på komma (,)
liste ($ navn, $ e -post, $ brukernavn, $ pwd) = eksplodere (",", $ data);
// trim e -post, brukernavn og passordverdier
$ e -post = trim ($ e -post);
$ brukernavn = trim ($ brukernavn);
$ pwd = trim ($ pwd);
// Autentisere brukeren basert på brukernavn eller e -post og passord
if (($ brukernavn == $ bruker || $ e -post == $ bruker) && ($ pwd == $ passord))

// Lagre sesjonsdata for den gyldige brukeren
$ _Session ['name'] = $ name;
ekko "

Du er logget inn vellykket.

";
$ LOGIN = TRUE;
gå i stykker;




// Vis påloggingsskjemaet
if ($ login == usann) inkluderer "påloggingsform.html ";

ellers

// Skriv ut velkomstmeldingen for den returnerende autentiserte brukeren
ekko "

Velkommen tilbake, ". $ _Session ['Navn'].""

";

?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor første gang. Brukeren må skrive inn gyldig brukernavn eller e -post og passord for autentiseringen.

E -postadressen og passordet er oppgitt i følgende påloggingsskjema. Disse verdiene vil bli matchet med e -postadressen og passordet til hver bruker av filen.

Følgende utdata vises hvis brukeren trykker på sendeknappen etter å ha gitt den gyldige e -postadressen og passordet. Den samme utdata vil vises hvis brukeren gir et gyldig brukernavn i stedet for e -postadressen for autentiseringen. Innloggingsskjemaet vises igjen hvis et ugyldig brukernavn eller e -post eller passord leveres av brukeren.

Hvis brukeren laster på nytt samme side igjen etter å ha logget inn på nytt, vises følgende utdata. Verdien av $ _Session ['Name'] -variabelen er skrevet ut her med velkomstmeldingen. Denne utgangen vil forbli uendret til økten går ut for brukeren eller nettleseren er gjenåpnet på nytt.

Endre øktdataene

Øktdataene kan endres etter initialisering av sesjonsvariabelen. Lag en PHP -fil med følgende skript for å kjenne måten å endre sesjonsvariabelen etter å ha initialisert variabelen $ _Session. ISSET () -funksjonen har blitt brukt i skriptet for å sjekke om $ _Session ['Besøk'] -variabelen er satt eller usett. Hvis variabelen på $ _Session ['Besøk'] ikke er angitt, vil denne variabelen bli initialisert til 1. Hvis siden oppdateres eller lastes på nytt igjen, vil verdien av denne variabelen bli økt med 1 for hver oppdatering. Gjeldende verdien av denne variabelen vil bli skrevet ut hver gang siden lastes inn.

// Start økten
Session_Start ();
// Sjekk om øktvariabelen er satt eller usett
hvis (!Isset ($ _ Session ['Besøk']))
// Initialiser øktvariabelen
$ _Session ['besøk'] = 1;
ellers
// Øk øktvariabelen med 1
$ _Session ['besøk'] += 1;
// Skriv ut gjeldende verdien av øktvariabelen
ekko "

Siden besøkes for ". $ _Session ['Besøk']. "Tider

";
?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor for første gang. Verdien av $ _Session ['Besøk'] er 1 her fordi når siden er lastet for første gang, initialiseres denne variabelen til 1.

Følgende utdata vises hvis siden er lastet inn 3 ganger. Verdien av $ _Session ['Besøk'] har blitt økt med 1 hver gang siden laster inn på nytt.

Slett øktdataene

Øktdataene kan slettes ved å bruke Unset () funksjon eller Session_unset () Funksjon av PHP. Lag en PHP -fil med følgende skript som bruker Unset () Funksjon for å slette sesjonsdataene. Variabelen $ _Session ['Brukernavn'] er blitt initialisert med en strengverdi etter å ha startet økten. Deretter har verdien av denne variabelen blitt skrevet ut før og etter utførelse.

// Start økten
Session_Start ();
// Angi øktvariabelen
$ _Session ['brukernavn'] = 'fahmidabd';
ekko "sesjonsdata etter sett:
";
// Skriv ut øktvariabelen etter sett
ekko "Brukernavn:". $ _Session ['Brukernavn'].""
";
// UNSET øktvariabelen
unset ($ _ økt ['brukernavn']);
Ekko "sesjonsdata etter usett:
";
// Skriv ut øktvariabelen etter usett
ekko "Brukernavn:". $ _Session ['brukernavn'];
?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor. Verdien av $ _Session ['brukernavn'] er skrevet ut før du utfører Unset () Funksjon og $ _Session ['brukernavn'] variabel ble tom etter utførelse Unset () funksjon.

Ødelegge økten

Øktinformasjonen kan fjernes ved å fjerne verdiene til $ _Session -variabelen som er vist i forrige eksempel. PHP har en innebygd funksjon som heter Session_Destroy () For å slette all sesjonsrelatert informasjon fullstendig. Lag en PHP -fil med følgende skript som viser bruken av Session_Destroy () funksjon. Et skjema med en innsendingsknapp har blitt brukt i skriptet for å ødelegge økten. Etter å ha startet en økt, har ISSET () -funksjonen blitt brukt til å sjekke “Ødelegge økt”Knappen trykkes og økt-IDen er ikke-tom. Den nåværende økten vil bli ødelagt ved å ringe Session_Destroy () funksjon hvis økt -IDen eksisterer hvis "Ødelegge økt”Knappen trykkes av brukeren. Hvis siden besøkes for første gang og "Ødelegge økt”-Knappen trykkes ikke, så blir øktinformasjonen lagret i $ _Session ['Name'] variabel. Hvis siden besøkes igjen etter lagring av sesjonsinformasjonen, men "Ødelegge økt”Knappen er ikke trykket på, så velkomstmeldingen blir skrevet ut.

// Start en ny økt
Session_Start ();
if (isset ($ _ post ['destroy']) && session_id () != "")

// ødelegge økt
Session_Destroy ();

ellers

hvis(!Isset ($ _ Session ['Name']))

ekko "

";
ekko "

Ny økt er startet for brukeren.

";
// Lagre øktdataene
$ _Session ["name"] = "Fahmida Yesmin";

ellers

ekko "

";
// Les øktdataene
ekko '

Velkommen tilbake, ' . $ _Session ["Navn"] . '.

';







?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor for første gang. Hvis brukeren klikker på "Ødelegge økt”-Knappen så blir økten ødelagt fullstendig og en blank side vises.

Eksempel 5: Koding og avkoding av sesjonsdata

Øktdataene kan kodes for å generere en strengverdi ved å serialisere dataene og de kodede øktdataene kan konverteres til matrisen ved å deserialisere dataene. Lag en PHP -fil med følgende skript som koder for øktdataene ved å bruke Session_encode () Funksjon og avkoder de kodede øktdataene ved å bruke Session_decode () funksjon. I følge følgende skript vil $ _Session [“Name”] og $ _Session [“E -post”] -variablene bli initialisert med to verdier etter å ha startet økten. Verdiene til disse variablene er blitt kodet ved å bruke Session_encode () funksjon og trykt senere. De Session_unset () Funksjonen har blitt brukt til å avsette variabelen $ _Session. Deretter er de kodede strengdataene blitt konvertert til matrisen ved å bruke Session_decode () funksjon.

// Start en ny økt
Session_Start ();
ekko "

Ny økt genereres.

";
// Lagre øktdataene
$ _Session ["name"] = "Fahmida Yesmin";
$ _Session ["E -post"] = "[email protected] ";
ekko "De kodede sesjonsdataene er:
";
// kode øktdataene
$ kodeddata = session_encode ();
ekko "Kodede øktdata:". $ kodeddata.""

";
// Ikke sett øktdataene
session_unset ();
// avkode øktdataene
session_decode ($ kodeddata);
ekko "sesjonsdata etter avkoding:";
// Les øktdataene
ekko '

Velkommen, ' . $ _Session ["Navn"] . '.

';
?>

Produksjon
Følgende utgang vises etter å ha utført skriptet ovenfor. Etter koding er de serialiserte øktdataene skrevet ut i utdataene. I følge utgang. Deretter er den kodede strengen blitt dekodet, og verdien av $ _Session [“Name”] -variabelen er skrevet ut.

Konklusjon

Økthåndteringen er en veldig viktig funksjon ved enhver nettbasert applikasjon. PHP har mange økthåndteringsdirektiver og innebygde sesjonsfunksjoner for å håndtere øktrelaterte oppgaver. Noen bruksområder av ofte brukte øktfunksjoner er vist i denne opplæringen ved å bruke PHP -skript. Oppgaven til noen sesjonsfunksjoner kan gjøres ved å bruke de aktuelle sesjonsdirektivene. For eksempel, hvis Session_auto_start Direktivet er satt til så starter den økten automatisk uten å bruke Session_Start () funksjon. Å bruke en databasetabell er en effektiv måte å lagre øktdataene som ikke er dekket i denne opplæringen. Men formålet med økten for webapplikasjonen og måten å implementere sesjonshåndteringsfunksjonen ved hjelp av PHP -skript er vist i denne opplæringen for å hjelpe nye PHP -brukere med å legge til denne funksjonen i applikasjonen deres.