Session PHP et cookies PHP avec exemple
Quโest-ce quโun cookie ?
Un cookie est un petit fichier d'une taille maximale de 4 Ko que le serveur Web stocke sur l'ordinateur client.
Une fois qu'un cookie a รฉtรฉ dรฉfini, toutes les requรชtes de page qui suivent renvoient le nom et la valeur du cookie.
Un cookie ne peut รชtre lu qu'ร partir du domaine ร partir duquel il a รฉtรฉ รฉmis. Par exemple, un cookie dรฉfini ร l'aide du domaine www.guru99.com ne peut pas รชtre lu ร partir du domaine carriere.guru99.com.
La plupart des sites Web sur Internet affichent des รฉlรฉments provenant dโautres domaines tels que la publicitรฉ. Les domaines desservant ces รฉlรฉments peuvent รฉgalement paramรฉtrer leurs propres cookies. Ceux-ci sont appelรฉs cookies tiers.
Un cookie crรฉรฉ par un utilisateur ne peut รชtre visible que par lui. Les autres utilisateurs ne peuvent pas voir sa valeur.
La plupart des navigateurs Web disposent d'options permettant de dรฉsactiver les cookies, les cookies tiers ou les deux.
Si tel est le cas, PHP rรฉpond en transmettant le jeton de cookie dans l'URL.
Le schรฉma ci-dessous illustre le fonctionnement des cookies.
Ici,
1) Un utilisateur demande une page qui stocke des cookies
2) Le serveur dรฉpose le cookie sur l'ordinateur de l'utilisateur
3) Les autres demandes de page de l'utilisateur renverront le nom et la valeur du cookie
Pourquoi et quand utiliser les Cookies ?
- HTTP est un protocole sans รฉtat ; les cookies nous permettent de suivre l'รฉtat de l'application ร l'aide de petits fichiers stockรฉs sur l'ordinateur de l'utilisateur. Le chemin oรน les cookies sont stockรฉs dรฉpend du navigateur. Internet Explorer les stocke gรฉnรฉralement dans le dossier Temporal Internet Files.
- Personnalisation de l'expรฉrience utilisateur โ ceci est rรฉalisรฉ en permettant aux utilisateurs de sรฉlectionner leurs prรฉfรฉrences. Les pages demandรฉes qui suivent sont personnalisรฉes en fonction des prรฉfรฉrences dรฉfinies dans les cookies.
- Suivi des pages visitรฉes par un utilisateur
Crรฉation de cookies
Examinons maintenant la syntaxe de base utilisรฉe pour crรฉer un cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
ICI,
- Php ยซ setcookie ยป est le Fonction PHP utilisรฉ pour crรฉer le cookie.
- ยซ cookie_name ยป est le nom du cookie que le serveur utilisera lors de la rรฉcupรฉration de sa valeur ร partir de la variable du tableau $_COOKIE. Il est obligatoire.
- ยซ cookie_value ยป est la valeur du cookie et son caractรจre obligatoire
- ยซ [expiry_time] ยป est facultatif ; il peut รชtre utilisรฉ pour dรฉfinir le dรฉlai d'expiration du cookie, par exemple 1 heure. L'heure est dรฉfinie ร l'aide des fonctions PHP time() plus ou moins un nombre de secondes supรฉrieur ร 0, c'est-ร -dire time() + 3600 pour 1 heure.
- ยซ [cookie_path] ยป est facultatif ; il peut รชtre utilisรฉ pour dรฉfinir le chemin du cookie sur le serveur. La barre oblique ยซ / ยป signifie que le cookie sera mis ร disposition sur l'ensemble du domaine. Les sous-rรฉpertoires limitent l'accรจs des cookies au sous-domaine.
- ยซ [domaine] ยป est facultatif, il peut รชtre utilisรฉ pour dรฉfinir la hiรฉrarchie d'accรจs aux cookies, c'est-ร -dire
www.cookiedomain.comsignifie le domaine entier tandis quewww.sub.cookiedomain.comlimite l'accรจs aux cookies รwww.sub.cookiedomain.comet ses sous-domaines. Notez qu'il est possible d'avoir un sous-domaine d'un sous-domaine tant que le nombre total de caractรจres ne dรฉpasse pas 253 caractรจres. - ยซ [secure] ยป est facultatif, la valeur par dรฉfaut est false. Il permet de dรฉterminer si le cookie est envoyรฉ via https s'il est dรฉfini sur true ou http s'il est dรฉfini sur false.
- ยซ [Httponly] ยป est facultatif. S'il est dรฉfini sur true, alors uniquement les langages de script cรดtรฉ client, c'est-ร -dire Javascรฉnario ne peut pas y accรฉder.
Remarque : la fonction php set cookie doit รชtre exรฉcutรฉe avant la balise d'ouverture HTML.
Regardons maintenant un exemple qui utilise des cookies.
Nous allons crรฉer un programme de base qui nous permettra de stocker le nom d'utilisateur dans un cookie qui expire au bout de dix secondes.
Le code ci-dessous montre l'implรฉmentation de l'exemple ci-dessus ยซ cookies.php ยป.
<?php
setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
echo 'the cookie has been set for 60 seconds';
?>
Sortie :
the cookie has been set for 60 seconds
Rรฉcupรฉration de la valeur du Cookie
Crรฉez un autre fichier nommรฉ ยซ cookies_read.php ยป avec le code suivant.
<?php
print_r($_COOKIE); //output the contents of the cookie array variable
?>
Sortie :
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Remarque : $_COOKIE est une variable super globale intรฉgrรฉe ร PHP.
Il contient les noms et valeurs de tous les cookies dรฉfinis.
Le nombre de valeurs que le
Le tableau $_COOKIE peut contenir en fonction de la taille de la mรฉmoire dรฉfinie dans php.ini.
La valeur par dรฉfaut est 1 Go.
Test de notre application.
Supposons que vous ayez enregistrรฉ vos fichiers PHP dans le dossier phptus.
- รtape 1 โ ouvrez votre navigateur Web et entrez l'URL http://localhost/phptuts/cookies_read.php
Remarque : seul un tableau vide a รฉtรฉ affichรฉ
- รtape 2 โ Navigateur vers l'URL http://localhost/phptuts/cookies.php
- รtape 3 โ Revenez au premier onglet puis cliquez sur le bouton Actualiser
Attendez une minute puis cliquez ร nouveau sur le bouton Actualiser. Quels rรฉsultats as-tu obtenus?
Supprimer les cookies
- Si vous souhaitez dรฉtruire un cookie avant son heure d'expiration, vous dรฉfinissez l'heure d'expiration sur une heure dรฉjร รฉcoulรฉe.
- Crรฉez un nouveau fichier nommรฉ cookie_destroy.php avec le code suivant
<?php
setcookie("user_name", "Guru99", time() - 360,'/');
?>
- Rรฉpรฉtez les รฉtapes 1 ร 3 de la section ci-dessus pour rรฉcupรฉrer les valeurs des cookies.
- Ouvrez l'URL http://localhost/phptuts/cookie_destroy.php
- Passer ร l'URL http://localhost/phptuts/cookies_read.php quels rรฉsultats affiche-t-il ?
Qu'est-ce qu'une sรฉance ?
- Une session est une variable globale stockรฉe sur le serveur.
- Chaque session se voit attribuer un identifiant unique qui est utilisรฉ pour rรฉcupรฉrer les valeurs stockรฉes.
- Chaque fois qu'une session est crรฉรฉe, un cookie contenant l'identifiant de session unique est stockรฉ sur l'ordinateur de l'utilisateur et renvoyรฉ ร chaque demande au serveur. Si le navigateur client ne prend pas en charge les cookies, l'identifiant de session php unique est affichรฉ dans l'URL
- Les sessions ont la capacitรฉ de stocker des donnรฉes relativement volumineuses par rapport aux cookies.
- Les valeurs de session sont automatiquement supprimรฉes ร la fermeture du navigateur. Si vous souhaitez stocker les valeurs de maniรจre permanente, vous devez les stocker dans la base de donnรฉes.
- Tout comme la variable de tableau $_COOKIE, les variables de session sont stockรฉes dans la variable de tableau $_SESSION. Tout comme les cookies, la session doit รชtre dรฉmarrรฉe avant toute balise HTML.
Pourquoi et quand utiliser Sessions ?
- Vous souhaitez stocker des informations importantes telles que l'identifiant de l'utilisateur de maniรจre plus sรฉcurisรฉe sur le serveur, lร oรน les utilisateurs malveillants ne peuvent pas les modifier.
- Vous souhaitez transmettre des valeurs d'une page ร une autre.
- Vous souhaitez une alternative aux cookies sur les navigateurs qui ne prennent pas en charge les cookies.
- Vous souhaitez stocker les variables globales de maniรจre plus efficace et plus sรฉcurisรฉe que de les transmettre dans l'URL
- Vous dรฉveloppez une application telle qu'un panier d'achat qui doit stocker temporairement des informations d'une capacitรฉ supรฉrieure ร 4 Ko.
Crรฉation d'une session
Afin de crรฉer une session, vous devez d'abord appeler la fonction PHP session_start puis stocker vos valeurs dans la variable tableau $_SESSION.
Supposons que nous voulions connaรฎtre le nombre de fois qu'une page a รฉtรฉ chargรฉe, nous pouvons utiliser une session pour le faire.
Le code ci-dessous montre comment crรฉer et rรฉcupรฉrer des valeurs ร partir de sessions
<?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'];
?>
Sortie :
You are visitor number 1
Dรฉtruire les variables de session
La fonction session_destroy() est utilisรฉe pour dรฉtruire l'intรฉgralitรฉ des variables de session Php.
Si vous souhaitez dรฉtruire un seul รฉlรฉment de session, vous utilisez la fonction unset().
Le code ci-dessous illustre comment utiliser les deux mรฉthodes.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy supprime toutes les donnรฉes de session, y compris les cookies associรฉs ร la session.
La dรฉsactivation libรจre uniquement les variables de session individuelles.
Les autres donnรฉes restent intactes.
Rรฉsumรฉ
- Les cookies sont de petits fichiers enregistrรฉs sur l'ordinateur de l'utilisateur
- Les cookies ne peuvent รชtre lus qu'ร partir du domaine รฉmetteur
- Les cookies peuvent avoir un dรฉlai d'expiration, s'il n'est pas dรฉfini, le cookie expire ร la fermeture du navigateur.
- Les sessions sont comme des variables globales stockรฉes sur le serveur
- Chaque session reรงoit un identifiant d'identification unique qui est utilisรฉ pour suivre les variables d'un utilisateur.
- Les cookies et les sessions doivent รชtre dรฉmarrรฉs avant que des balises HTML ne soient envoyรฉes au navigateur.




