Cookie PHPSE CONNECTER

Cookie PHP

Cookie PHP

Les cookies sont souvent utilisés pour identifier les utilisateurs.

Que sont les cookies ?

Le cookie est généré par le serveur et envoyé à l'agent utilisateur (généralement un navigateur). Le navigateur enregistrera la clé/valeur du cookie dans un fichier texte dans un répertoire et demandera le même site Web la prochaine fois. le cookie est envoyé au serveur (à condition que le navigateur soit configuré pour activer les cookies). Les noms et valeurs des cookies peuvent être définis par le développeur côté serveur, afin que le serveur puisse savoir si l'utilisateur est un utilisateur légitime et s'il doit se reconnecter, etc. Le serveur peut définir ou lire les informations contenues dans Cookies pour maintenir l'état de la session de l'utilisateur avec le serveur

Comment créer un cookie ?

La fonction setcookie() est utilisée pour paramétrer les cookies.

Remarque : La fonction setcookie() doit être placée avant la balise <html>

Syntaxe

setcookie(name, value, expire, path, domain);

Exemple 1

Dans l'exemple suivant, nous allons créer le nom Soyez le cookie de "user" et attribuez-lui la valeur "runoob". Nous précisons également que ce cookie expire au bout d'une heure :

<?php
setcookie("user", "runoob", time()+3600);
?>
<html>
.....

Remarque : La valeur du cookie est automatiquement codée en URL lors de l'envoi du cookie et automatiquement décodée lors de sa récupération. (Pour empêcher le codage d'URL, utilisez plutôt setrawcookie().)

Exemple 2

Vous pouvez également définir le délai d'expiration du cookie d'une autre manière. Cela peut être plus simple que d'utiliser les secondes.

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>
<html>
.....

Dans l'exemple ci-dessus, le délai d'expiration est fixé à un mois (60 secondes * 60 minutes * 24 heures * 30 jours).

Configuration et application des cookies

Setcookie (nom de chaîne, valeur de chaîne, expiration int, chemin de chaîne, domaine de chaîne, nom intsecure) ; est l'identifiant du nom de variable de cookie. Vous pouvez l'utiliser pour référencer la variable

cookie en PHP, tout comme vous utilisez un nom de variable ordinaire. value est la valeur initiale de la variable de cookie, expire représente la durée de validité de la variable de cookie ; path représente le chemin pertinent de la variable de cookie ; secure est valide uniquement lorsque https est transmis de manière sécurisée.

SetCookie("Cookie", "cookievalue",time()+3600, "/forum", ".365shequ.com", 1);

Nom, doit être une valeur, doit être être en millisecondes time()+3600=1 heure Enregistrer le chemin Enregistrer le domaine HTTPS

PHP Lire Cookie

Utiliser la super variable globale $_COOKIE tableau pour lire le client actuel Créer un nouveau fichier PHP set_cookie.php pour les cookies enregistrés dans

et le code est

print_r($_COOKIE);
echo $_COOKIE['foo'];

Vérifiez si le cookie a été défini avec succès

Définissez le délai d'expiration du cookie

Le troisième paramètre est l'horodatage unix

0 valeur par défaut, elle expirera lorsque vous fermerez le navigateur

time() + 86400 un jour

setcookie('foo', 'a', time() + 86400 );

Après le paramétrage Veuillez fermer le navigateur, ouvrez-le à nouveau et visitez pour vérifier si le cookie existe

Définissez le chemin du cookie

setcookie('bar', 'b', time() + 86400, '/uploads');

• Veuillez tester si la page PHP nommée bar est lisible dans le répertoire / Cookie

· Veuillez tester si le cookie nommé foo peut être lu dans la page PHP sous /uploads. Veuillez créer un autre sous-répertoire et tester si la page PHP dans le sous-répertoire peut le lire. Quels cookies sont lus

. Une fois le chemin défini, les cookies sous le chemin ne peuvent être lus que par la page sous le chemin

est défini pour le nom de domaine du cookie

. setcookie('key', 'val', time() + 86400, '/uploads', '.your.domain');

Définissez le domaine sur news. ne peut pas être lu par les pages sous sports.365jia.cn, et vice versa

Si vous souhaitez que tous les noms de domaine de deuxième niveau partagent des cookies, vous devez définir le domaine sur .php.cn

Problèmes de restriction des cookies

De nombreux navigateurs ont des limites sur le nombre de cookies. La plupart des navigateurs stipulent les cookies qu'un site Web peut définir. Le nombre ne peut pas dépasser 50. certains navigateurs le limitent même à 30

Les navigateurs ont également des restrictions sur la taille des cookies, qui ne peuvent généralement pas dépasser la taille 4K

Problèmes de sécurité des cookies

Si vous n'éteignez pas votre ordinateur après avoir surfé sur Internet dans un cybercafé, les autres personnes utilisant votre ordinateur peuvent consulter l'historique de tous les sites Web que vous visitez et le contenu des cookies enregistrés par le site Web. dangereux si des données importantes (nom d'utilisateur, mot de passe, numéro de carte, numéro de téléphone portable, numéro d'identification...) sont stockées dans des cookies.

Par conséquent, les données importantes ne peuvent pas être stockées dans les cookies. Si elles doivent être enregistrées, elles doivent s'appuyer sur le serveur

Précautions en matière de cookies

Différents ordinateurs. ne peut pas partager le cookie

Différents navigateurs sur le même ordinateur ne peuvent pas partager le cookie

Le même navigateur et différents noms de domaine ne peuvent toujours pas partager le cookie

Même le même navigateur, les cookies avec différents les chemins sous un même nom de domaine ne peuvent pas être partagés

Comment récupérer la valeur du Cookie ?

La variable $_COOKIE de PHP est utilisée pour récupérer la valeur du cookie.

Dans l'exemple suivant, nous récupérons la valeur du cookie nommé "user" et l'affichons sur la page :

<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>

Dans l'exemple suivant, nous utilisons la fonction isset() pour confirmer si le cookie a été posé :

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
         echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
         echo "普通访客!<br>";
?>
</body>
</html>

Comment supprimer les cookies ?

Lors de la suppression d'un cookie, vous devez modifier la date d'expiration à une date antérieure.

Instance supprimée :

<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>

Que dois-je faire si mon navigateur ne prend pas en charge les cookies ?

Si votre application doit gérer des navigateurs qui ne prennent pas en charge les cookies, vous devrez alors utiliser d'autres méthodes pour transmettre des informations entre les pages de votre application. Une solution consiste à transmettre des données via un formulaire (les formulaires et la saisie utilisateur sont traités dans les chapitres précédents de ce didacticiel).

Le formulaire suivant soumet les entrées de l'utilisateur à « welcome.php » lorsque l'utilisateur clique sur le bouton « Soumettre » :

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>

Récupérez la valeur dans le fichier « welcome.php », comme indiqué ci-dessous :

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。
</body>
</html>

Un demi-temps

Une erreur souvent commise dans le développement réel est d'obtenir des données directement via $_COOKIE après setcookie

setcookie ('foo', 1);

print_r($_COOKIE);
echo $_COOKIE['foo'];

Dans le cas ci-dessus, il est impossible d'obtenir le cookie simplement set est le problème mentionné dans notre titre.

Le principe est très simple. Les cookies sont en fait enregistrés dans le navigateur seulement après que la page actuelle soit renvoyée au navigateur. La valeur setcookie sera enregistrée dans le navigateur. Lorsque la page est visitée pour la deuxième fois, PHP peut lire les données dans le cookie

et $_COOKIE du navigateur. Les données sont transférées du client vers le serveur à chaque fois. la page est demandée

C'est pourquoi elle a été définie à ce moment-là et n'a pas pu être récupérée à ce moment-là

Une façon de résoudre le problème est de la sauvegarder. Après la valeur, le programme actualise le page immédiatement


section suivante
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600); ?>
soumettreRéinitialiser le code
chapitredidacticiel