Maison  >  Article  >  développement back-end  >  Session de contrôle de session PHP et introduction des cookies

Session de contrôle de session PHP et introduction des cookies

小云云
小云云original
2018-03-02 09:47:031629parcourir

1. Cookies

1>Introduction aux cookies

Les cookies sont des données stockées dans le navigateur client qui peuvent être suivies et stockées via des cookies. Généralement, les cookies sont renvoyés du serveur au client via les en-têtes HTTP. La plupart des programmes Web prennent en charge le fonctionnement des cookies car les cookies existent dans les en-têtes HTTP.
En PHP, les cookies sont définis via la fonction setcookie. Pour tout cookie renvoyé depuis le navigateur, PHP le stockera automatiquement sous la forme de

_COOKIE['key'] pour lire une valeur de cookie.
Lors de l'utilisation d'une session, un cookie est généralement utilisé pour stocker l'identifiant de session afin d'identifier l'utilisateur. Le cookie a une période de validité. À l'expiration de la période de validité, le cookie sera automatiquement supprimé du client.

2>Définir les cookies
setcookie()
Signification : Utilisé pour définir les cookies Il y a 7 paramètres dans la fonction setcookie() (seulement 5 paramètres couramment utilisés).
Syntaxe : setcookie(name, value, expire, path, domain, secure, httponly)
Valeur de retour : s'il y a une sortie avant d'appeler cette fonction, setcookie() échouera et renverra FALSE. Si setcookie() s'exécute avec succès, il renverra TRUE. Cela n'indique pas si l'utilisateur accepte les cookies.

Paramètres :
nom :
Le nom du cookie, accessible via $_COOKIE['name'].
valeur :
 Valeur du cookie
expirer:
 L'heure à laquelle le cookie expire. Il s'agit d'un horodatage Unix en secondes. Vous pouvez le définir en utilisant la fonction time() plus le nombre de secondes pendant lesquelles vous souhaitez qu'il expire avant. Ou vous pouvez utiliser mktime(). S'il est défini sur 0 ou omis, le cookie expirera à la fin de la session (lorsque le navigateur est fermé), la valeur par défaut est 0.
chemin :
(chemin valide) Si le chemin est défini sur '/' alors l'ensemble du site Web sera valide, s'il est défini sur '/foo/', le cookie ne sera que dans le répertoire /foo/ et tous les sous-répertoires comme /foo/bar/ de Domaines disponibles.
domaine :
(Le domaine où le cookie est disponible) Par défaut, il est valable pour l'ensemble du nom de domaine. Pour rendre le cookie disponible pour l'ensemble du domaine (y compris tous ses sous-domaines), il suffit de définir la valeur sur le nom de domaine (dans ce cas, 'exemple.com').
sécurisé:
 Indique que ce cookie ne peut être transmis que via la connexion HTTPS sécurisée du client. Lorsqu'il est défini sur TRUE, le cookie ne sera défini que si une connexion sécurisée existe. Côté serveur, les programmeurs ne peuvent envoyer ce type de cookie que sur une connexion sécurisée (ex : par rapport à

value, time()+3600, « path/ », « baidu.com » //Définir le chemin) ; et domaine

3> Suppression des cookies et délai d'expiration
Il n'y a pas de fonction pour supprimer les cookies spécifiés en PHP. Au lieu de cela, en définissant le délai d'expiration du cookie avant l'heure actuelle, le cookie. expirera automatiquement. Supprimant ainsi le cookie.

4> Déterminer si le cookie est vide
isset()
Signification : Déterminer si un cookie existe.
Syntaxe : isset (attribut cookie correspondant) ;
Valeur de retour : vrai/faux

setcookie("name","SYN");if( isset( $_COOKIE["name"])){    echo  $_COOKIE["name"];
}else{    echo "不存在";
}

Similitudes et différences entre Session et cookie

cookie :
1. Le stockage des données sur le client et l'établissement d'une connexion entre l'utilisateur et le serveur peuvent généralement résoudre de nombreux problèmes, mais les cookies ont encore certaines limites :
2. Les cookies sont relativement peu sécurisés et peuvent facilement être volés, conduisant à une fraude aux cookies
3. La valeur d'un seul cookie ne peut stocker qu'un maximum de 4k
4. Chaque requête nécessite une transmission réseau, occupant la bande passante

session :
1. Stockez les données de session de l'utilisateur sur le serveur, sans limite de taille,
2. L'identification de l'utilisateur est effectuée via un session_id. Par défaut, l'identifiant de session PHP est enregistré via les cookies

//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "<br>";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "<br>";
var_dump($_SESSION);

2. Session

1>utilisation de la session

Exécutez d'abord la méthode session_start pour ouvrir la session, puis lisez et écrivez la session via la variable globale $_SESSION. Par défaut, les sessions sont stockées sur le serveur sous forme de fichiers. Par conséquent, lorsqu'une session est ouverte sur une page, le fichier de session sera exclusivement occupé, ce qui empêchera les autres accès simultanés de l'utilisateur actuel de s'exécuter. attendez. Ce problème peut être résolu en utilisant le stockage en cache ou en base de données.
La session encodera et décodera automatiquement la valeur à définir, de sorte qu'elle puisse prendre en charge n'importe quel type de données, y compris les données et les objets.

session_start();$_SESSION['ary'] = array('name' => 'jobs');$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);

2>Supprimer et détruire la session

unset()
En PHP, utilisez la fonction unset pour supprimer une certaine valeur de session. Après suppression, elle sera supprimée de la variable globale $_SESSION et ne sera plus accessible.

session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name']; //提示name不存在

session_destroy()
La fonction session_destroy supprimera toutes les données, mais le session_id existe toujours.

session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();
session_destroy();

Remarque spéciale :
session_destroy() ne détruira pas immédiatement la variable globale

_SESSION jusqu'à ce qu'elle soit vide, donc si vous devez détruire $_SESSION immédiatement, vous pouvez utiliser unset().

3>Utiliser la session pour stocker les informations de connexion de l'utilisateur

登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

<?phpsession_start();//假设用户登录成功获得了以下用户数据$userinfo = array(    &#39;uid&#39;  => 1011,    'name' => 'spark',    'email' => '1637167XX@qq.com',    'sex'  => 'F');
header("content-type:text/html; charset=utf-8");/* 将用户信息保存到session中 */$_SESSION['uid'] = $userinfo['uid'];$_SESSION['name'] = $userinfo['name'];$_SESSION['userinfo'] = $userinfo;//* 将用户数据保存到cookie中的一个简单方法 */$str =serialize($userinfo); //将用户信息序列化setcookie('userinfo', $str);

了解更多关于序列化serialize;

相关推荐:

php用户登录代码session、cookie自动记忆功能

cookie 和session 的定义和区别

php session会话如何写入redis

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn