PHP-sessie en PHP-cookies met voorbeeld

Wat is Cookie?

Een cookie is een klein bestand met een maximale grootte van 4 KB dat de webserver op de clientcomputer opslaat.

Zodra een cookie is ingesteld, retourneren alle paginaverzoeken die volgen de cookienaam en -waarde.

Een cookie kan alleen worden uitgelezen vanuit het domein waarvan deze is uitgegeven. Bijvoorbeeld een cookie die is ingesteld met behulp van het domein www.guru99.com kan niet worden gelezen vanuit het domein carrière.guru99.com.

De meeste websites op internet vertonen elementen uit andere domeinen, zoals advertenties. De domeinen die deze elementen bedienen, kunnen ook hun eigen cookies instellen. Deze staan ​​bekend als cookies van derden.

Een cookie die door een gebruiker wordt aangemaakt, kan alleen voor hem of haar zichtbaar zijn. Andere gebruikers kunnen de waarde ervan niet zien.

De meeste webbrowsers hebben opties voor het uitschakelen van cookies, cookies van derden of beide.

Als dit het geval is, reageert PHP door het cookietoken in de URL door te geven.

Het onderstaande diagram illustreert hoe cookies werken.

Wat is Koekje

Hier

1) Een gebruiker vraagt ​​om een ​​pagina waarop cookies worden opgeslagen

2) De server plaatst de cookie op de computer van de gebruiker

3) Andere paginaverzoeken van de gebruiker retourneren de cookienaam en -waarde

Waarom en wanneer cookies gebruiken?

  • Http is een staatloos protocol; Met cookies kunnen we de status van de applicatie volgen met behulp van kleine bestanden die op de computer van de gebruiker zijn opgeslagen. Het pad waar de cookies worden opgeslagen, is afhankelijk van de browser. Internet Explorer slaat ze meestal op in de map Temporal Internet Files.
  • Het personaliseren van de gebruikerservaring – dit wordt bereikt door allowing gebruikers om hun voorkeuren te selecteren. De gevraagde pagina's die volgen, zijn gepersonaliseerd op basis van de ingestelde voorkeuren in de cookies.
  • Het bijhouden van de pagina's die door een gebruiker worden bezocht

Cookies maken

Laten we nu kijken naar de basissyntaxis die wordt gebruikt om een ​​cookie te maken.

<?php

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

?>

HIER,

  • Php “setcookie” is de PHP-functie gebruikt om de cookie te maken.
  • “cookie_name” is de naam van de cookie die de server zal gebruiken bij het ophalen van de waarde uit de arrayvariabele $_COOKIE. Het is verplicht.
  • “cookie_value” is de waarde van de cookie en is verplicht
  • “[expiry_time]” is optioneel; het kan worden gebruikt om de vervaltijd voor de cookie in te stellen, bijvoorbeeld 1 uur. De tijd wordt ingesteld met behulp van de PHP time()-functies plus of min een aantal seconden groter dan 0, dwz time() + 3600 gedurende 1 uur.
  • “[cookie_path]” is optioneel; het kan worden gebruikt om het cookiepad op de server in te stellen. De forward slash “/” betekent dat de cookie op het hele domein beschikbaar wordt gesteld. Submappen beperken de cookietoegang tot het subdomein.
  • “[domein]” is optioneel, het kan worden gebruikt om de cookietoegangshiërarchie te definiëren, dwz www.cookiedomain.com betekent het hele domein terwijl www.sub.cookiedomain.com beperkt de toegang tot cookies www.sub.cookiedomain.com en zijn subdomeinen. Let op: het is mogelijk om een ​​subdomein van een subdomein te hebben, zolang het totaal aantal tekens niet groter is dan 253 tekens.
  • “[secure]” is optioneel, de standaardwaarde is false. Het wordt gebruikt om te bepalen of de cookie via https wordt verzonden als deze is ingesteld op true of via http als deze is ingesteld op false.
  • “[Httponly]” is optioneel. Als het is ingesteld op true, dan zijn alleen scripttalen aan de clientzijde, dwz JavaScript kan er geen toegang toe krijgen.

Opmerking: de php set cookie-functie moet worden uitgevoerd vóór de HTML-openingstag.

Laten we nu eens kijken naar een voorbeeld waarbij gebruik wordt gemaakt van cookies.

We zullen een basisprogramma maken waarmee we de gebruikersnaam kunnen opslaan in een cookie die na tien seconden vervalt.

Onderstaande code toont de implementatie van het bovenstaande voorbeeld “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

De cookiewaarde ophalen

Maak een ander bestand met de naam “cookies_read.php” met de volgende opdrachtwing code.

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

Output:

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

Opmerking: $_COOKIE is een in PHP ingebouwde superglobale variabele.

Het bevat de namen en waarden van alle ingestelde cookies.

Het aantal waarden dat de

$_COOKIE array kan bevatten, hangt af van de geheugengrootte die is ingesteld in php.ini.

De standaardwaarde is 1 GB.

Onze applicatie testen.

Laten we aannemen dat u uw PHP-bestanden in de phptus-map hebt opgeslagen.

  • Stap 1 – Open uw webbrowser en voer de URL in http://localhost/phptuts/cookies_read.php

De cookiewaarde ophalen

Opmerking: Er is alleen een lege array weergegevenyed

  • Stap 2 – Browser naar de URL http://localhost/phptuts/cookies.php

De cookiewaarde ophalen

  • Stap 3 – Schakel terug naar het eerste tabblad en klik vervolgens op de knop Vernieuwen

De cookiewaarde ophalen

Wacht een minuut en klik vervolgens opnieuw op de knop Vernieuwen. Welke resultaten heb je behaald?

Verwijder cookies

  • Als u een cookie vóór de vervaltijd wilt vernietigen, stelt u de vervaltijd in op een tijdstip dat al is verstreken.
  • Maak een nieuw bestand met de naam cookie_destroy.php met de volgende gegevenswing code
<?php

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

?>
  • Herhaal stap 1 tot en met 3 uit het bovenstaande gedeelte over het ophalen van cookiewaarden.
  • Open de URL http://localhost/phptuts/cookie_destroy.php
  • Schakel over naar de URL http://localhost/phptuts/cookies_read.php welke resultaten worden weergegeven?

Wat is een sessie?

  • Een sessie is een globale variabele die op de server is opgeslagen.
  • Aan elke sessie wordt een uniek ID toegewezen dat wordt gebruikt om opgeslagen waarden op te halen.
  • Telkens wanneer een sessie wordt aangemaakt, wordt er een cookie met de unieke sessie-ID op de computer van de gebruiker opgeslagen en bij elk verzoek naar de server teruggestuurd. Als de clientbrowser geen cookies ondersteunt, wordt de unieke php-sessie-ID weergegevenyed in de URL
  • Sessies hebben de capaciteit om relatief grote gegevens op te slaan in vergelijking met cookies.
  • De sessiewaarden worden automatisch verwijderd wanneer de browser wordt gesloten. Als u de waarden permanent wilt opslaan, moet u ze in de database opslaan.
  • Net als de arrayvariabele $_COOKIE worden sessievariabelen opgeslagen in de arrayvariabele $_SESSION. Net als bij cookies moet de sessie vóór eventuele HTML-tags worden gestart.

Waarom en wanneer Sessies gebruiken?

  • U wilt belangrijke informatie, zoals de gebruikers-ID, veiliger opslaan op de server, waar kwaadwillende gebruikers er geen geduld mee kunnen hebben.
  • U wilt waarden van de ene pagina naar de andere doorgeven.
  • U wilt het alternatief voor cookies in browsers die geen cookies ondersteunen.
  • U wilt globale variabelen op een efficiënte en veiligere manier opslaan dan ze in de URL door te geven
  • U ontwikkelt een applicatie zoals een winkelwagentje die tijdelijk informatie moet opslaan met een capaciteit groter dan 4 KB.

Een sessie maken

Om een ​​sessie te creëren, moet u eerst de PHP session_start-functie aanroepen en vervolgens uw waarden opslaan in de arrayvariabele $_SESSION.

Stel dat we willen weten hoe vaak een pagina is geladen, dan kunnen we een sessie gebruiken om dat te doen.

De onderstaande code laat zien hoe u waarden uit sessies kunt maken en ophalen

<?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

Sessievariabelen vernietigen

De functie session_destroy() wordt gebruikt om de volledige Php-sessievariabelen te vernietigen.

Als u slechts één sessie-item wilt vernietigen, gebruikt u de functie unset().

De onderstaande code illustreert hoe u beide methoden kunt gebruiken.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

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

?>

Session_destroy verwijdert alle sessiegegevens, inclusief cookies die aan de sessie zijn gekoppeld.

Uitschakelen maakt alleen de individuele sessievariabelen vrij.

Andere gegevens blijven intact.

Samengevat

  • Cookies zijn kleine bestanden die op de computer van de gebruiker worden opgeslagen
  • Cookies kunnen alleen worden uitgelezen vanaf het uitgevende domein
  • Cookies kunnen een vervaltijd hebben, als deze niet is ingesteld, vervalt de cookie wanneer de browser wordt gesloten
  • Sessies zijn als globale variabelen die op de server zijn opgeslagen
  • Elke sessie krijgt een unieke identificatie-ID die wordt gebruikt om de variabelen voor een gebruiker bij te houden.
  • Zowel cookies als sessies moeten worden gestart voordat er HTML-tags naar de browser worden verzonden.