PHP-session og PHP-cookies med eksempel

Hvad er Cookie?

En cookie er en lille fil med den maksimale størrelse på 4KB, som webserveren gemmer på klientcomputeren.

Når en cookie er blevet indstillet, returnerer alle sideanmodninger, der følger, cookienavnet og -værdien.

En cookie kan kun læses fra det domæne, den er udstedt fra. For eksempel et cookiesæt ved hjælp af domænet www.guru99.com kan ikke læses fra domænet career.guru99.com.

De fleste af webstederne på internettet viser elementer fra andre domæner, såsom annoncering. Domænerne, der betjener disse elementer, kan også indstille deres egne cookies. Disse er kendt som tredjepartscookies.

En cookie oprettet af en bruger kan kun være synlig for dem. Andre brugere kan ikke se dens værdi.

De fleste webbrowsere har muligheder for at deaktivere cookies, tredjepartscookies eller begge dele.

Hvis dette er tilfældet, svarer PHP ved at sende cookie-tokenet i URL'en.

Diagrammet nedenfor illustrerer, hvordan cookies fungerer.

Hvad er Cookie

Her,

1) En bruger anmoder om en side, der gemmer cookies

2) Serveren sætter cookien på brugerens computer

3) Andre sideanmodninger fra brugeren vil returnere cookienavnet og -værdien

Hvorfor og hvornår skal man bruge cookies?

  • Http er en statsløs protokol; cookies giver os mulighed for at spore applikationens tilstand ved hjælp af små filer, der er gemt på brugerens computer. Stien, hvor cookies gemmes, afhænger af browseren. Internet Explorer gemmer dem normalt i mappen Temporal Internet Files.
  • Personalisering af brugeroplevelsen – dette opnås af allowing brugere til at vælge deres præferencer. Den side, der anmodes om, der følger, er personlig baseret på de indstillede præferencer i cookies.
  • Sporing af sider besøgt af en bruger

Oprettelse af cookies

Lad os nu se på den grundlæggende syntaks, der bruges til at oprette en cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

HER,

  • Php "setcookie" er PHP funktion bruges til at lave cookien.
  • "cookie_name" er navnet på den cookie, som serveren vil bruge, når den henter dens værdi fra arrayvariablen $_COOKIE. Det er obligatorisk.
  • "cookie_value" er værdien af ​​cookien og dens obligatoriske
  • "[udløbstidspunkt]" er valgfrit; den kan bruges til at indstille udløbstiden for cookien, såsom 1 time. Tiden indstilles ved hjælp af PHP time() funktionerne plus eller minus et antal sekunder større end 0, dvs. time() + 3600 i 1 time.
  • "[cookie_path]" er valgfri; den kan bruges til at indstille cookie-stien på serveren. Den fremadrettede skråstreg "/" betyder, at cookien bliver gjort tilgængelig på hele domænet. Undermapper begrænser cookie-adgangen til underdomænet.
  • "[domæne]" er valgfrit, det kan bruges til at definere cookie-adgangshierarkiet, dvs www.cookiedomain.com betyder hele domænet mens www.sub.cookiedomain.com begrænser cookie-adgangen til www.sub.cookiedomain.com og dets underdomæner. Bemærk, at det er muligt at have et underdomæne til et underdomæne, så længe det samlede antal tegn ikke overstiger 253 tegn.
  • "[sikker]" er valgfri, standarden er falsk. Den bruges til at bestemme, om cookien sendes via https, hvis den er sat til sand eller http, hvis den er sat til falsk.
  • "[Httponly]" er valgfrit. Hvis det er sat til sand, er det kun klientside scripting sprog, dvs JavaScript ikke kan få adgang til dem.

Bemærk: php set cookie-funktionen skal udføres før HTML-åbningstagget.

Lad os nu se på et eksempel, der bruger cookies.

Vi vil oprette et grundlæggende program, der giver os mulighed for at gemme brugernavnet i en cookie, der udløber efter ti sekunder.

Koden nedenfor viser implementeringen af ​​ovenstående eksempel "cookies.php".

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

Output:

the cookie has been set for 60 seconds

Henter cookieværdien

Opret en anden fil med navnet "cookies_read.php" med following kode.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Output:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Bemærk: $_COOKIE er en PHP indbygget super global variabel.

Den indeholder navnene og værdierne for alle de indstillede cookies.

Antallet af værdier, som

$_COOKIE array kan indeholde afhænger af hukommelsesstørrelsen indstillet i php.ini.

Standardværdien er 1 GB.

Tester vores applikation.

Lad os antage, at du har gemt dine PHP-filer i phptus-mappen.

  • Trin 1 – åbn din webbrowser og indtast URL'en http://localhost/phptuts/cookies_read.php

Henter cookieværdien

Bemærk: Kun et tomt array er blevet vistyed

  • Trin 2 – Browser til URL'en http://localhost/phptuts/cookies.php

Henter cookieværdien

  • Trin 3 – Skift tilbage til den første fane, og klik derefter på knappen Opdater

Henter cookieværdien

Vent et minut og klik derefter på opdateringsknappen igen. Hvilke resultater fik du?

Slet cookies

  • Hvis du vil ødelægge en cookie før dens udløbstid, så indstiller du udløbstiden til en tid, der allerede er gået.
  • Opret en ny fil med navnet cookie_destroy.php med following kode
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Gentag trin 1 til 3 fra ovenstående afsnit om hentning af cookieværdier.
  • Åbn URL'en http://localhost/phptuts/cookie_destroy.php
  • Skift til URL'en http://localhost/phptuts/cookies_read.php hvilke resultater viser den?

Hvad er en session?

  • En session er en global variabel, der er gemt på serveren.
  • Hver session tildeles et unikt id, som bruges til at hente lagrede værdier.
  • Når en session oprettes, gemmes en cookie indeholdende det unikke sessions-id på brugerens computer og returneres med hver anmodning til serveren. Hvis klientbrowseren ikke understøtter cookies, er det unikke php-sessions-id displayed i webadressen
  • Sessioner har kapacitet til at lagre relativt store data sammenlignet med cookies.
  • Sessionsværdierne slettes automatisk, når browseren lukkes. Hvis du vil gemme værdierne permanent, skal du gemme dem i databasen.
  • Ligesom $_COOKIE-arrayvariablen gemmes sessionsvariabler i $_SESSION-arrayvariablen. Ligesom cookies skal sessionen startes før eventuelle HTML-tags.

Hvorfor og hvornår skal man bruge sessioner?

  • Du vil gemme vigtige oplysninger såsom bruger-id'et mere sikkert på serveren, hvor ondsindede brugere ikke kan temperere med dem.
  • Du ønsker at overføre værdier fra en side til en anden.
  • Du ønsker alternativet til cookies på browsere, der ikke understøtter cookies.
  • Du vil gemme globale variabler på en effektiv og mere sikker måde i forhold til at sende dem i URL'en
  • Du er ved at udvikle en applikation, såsom en indkøbskurv, der midlertidigt skal gemme information med en kapacitet større end 4KB.

Oprettelse af en session

For at oprette en session skal du først kalde PHP session_start-funktionen og derefter gemme dine værdier i arrayvariablen $_SESSION.

Lad os antage, at vi vil vide, hvor mange gange en side er blevet indlæst, vi kan bruge en session til at gøre det.

Koden nedenfor viser, hvordan du opretter og henter værdier fra sessioner

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Output:

You are visitor number 1

Ødelæggelse af sessionsvariabler

Funktionen session_destroy() bruges til at ødelægge hele Php-sessionsvariablerne.

Hvis du kun vil ødelægge et enkelt sessionselement, bruger du unset()-funktionen.

Koden nedenfor illustrerer, hvordan man bruger begge metoder.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy fjerner alle sessionsdata, inklusive cookies forbundet med sessionen.

Frakoblet frigiver kun de individuelle sessionsvariabler.

Andre data forbliver intakte.

Resumé

  • Cookies er små filer, der gemmes på brugerens computer
  • Cookies kan kun læses fra det udstedende domæne
  • Cookies kan have en udløbstid, hvis den ikke er indstillet, så udløber cookien, når browseren lukkes
  • Sessioner er ligesom globale variabler gemt på serveren
  • Hver session får et unikt identifikations-id, der bruges til at spore variablerne for en bruger.
  • Både cookies og sessioner skal startes, før der sendes HTML-tags til browseren.