Maison > développement back-end > tutoriel php > Analyse sur la méthode d'utilisation du cookie de session en php et codeigniter

Analyse sur la méthode d'utilisation du cookie de session en php et codeigniter

不言
Libérer: 2023-04-01 07:48:02
original
1699 Les gens l'ont consulté

Ce qui suit est un article sur la façon d'utiliser le cookie de session en PHP et codeigniter (explication détaillée). Le contenu est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence.

1. Lire et écrire des cookies

<1>

setcookie(&#39;name&#39;,&#39;value&#39;,time)
Copier après la connexion
Échec de la configuration, pas écrit normalement dans le navigateur, échec du test, raison inconnue

<2>CI cadre

$this->input->set_cookie("views","test10",1000);
echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下
Copier après la connexion

<3>Par assistant

$this->load->helper(&#39;cookie&#39;);//这行放在view也是可以的,随便
set_cookie(&#39;views&#39;,&#39;test10&#39;,1000);
echo get_cookie(&#39;views&#39;);//此方法获取值如果获取不到,会返回空,不会报错
Copier après la connexion

2. Séance de lecture et d'écriture

<1> ; Session native

Démarrer :

<?php
session_start();
?>
Copier après la connexion

Attribuer :

$_SESSION[&#39;views&#39;] = "test20";
Copier après la connexion

Valeur :


echo "Session:". $_SESSION[&#39;views&#39;];
Copier après la connexion
Copier après la connexion

Durée :

séance. Lorsque le navigateur est fermé, la session php dans le cookie sera effacée et un

sera régénéré à la prochaine ouverture, bien que le serveur enregistre toujours la session. Le délai d'expiration de la session est défini dans php.ini, voir un autre article

Considérations de sécurité php (codeigniter)

<2>Session du framework CI

Début :

$this->load->library(&#39;session&#39;);//load必须在controller完成,当要使用session必须先load赋值:
$this->session->views = "test11";
Copier après la connexion

Valeur :


echo "Session:". $_SESSION[&#39;views&#39;];
Copier après la connexion
Copier après la connexion

Temps d'existence :

Le client a 2 heures de temps d'existence, lorsque le serveur La session est supprimé car l'ID de session du client est toujours valide, donc lorsqu'il sera rouvert, le serveur créera une session avec le même ID de session que celui du client. Bien sûr, peu importe qu'il faut créer un nouvel ID ou un ancien ID, parce que c'est juste L'identifiant a le même nom, mais il ne contient aucune donnée

<3> Différence

> deux noms de session sont différents, l'un s'appelle phpsession , l'autre s'appelle ci_session

> Un seul peut être démarré, pas les deux

> 🎜>> Ne mélangez pas les deux. La méthode native doit être complètement abandonnée

> La session php native est accessible de manière informelle, et ci_session est httponly, ce qui signifie que la session native peut être attaquée via xxs, et les cookies peuvent être obtenus via js

<4>Exceptions

Il existe une situation comme celle-ci :

Quand ci_session existe déjà à cet instant, car ce ci_ est persistant

En regardant le cookie , il s'avère qu'aucune session native n'existe, cela ne peut l'être que si vous utilisez une session ci, recherchez ce fichier dans la session du serveur et constatez que la valeur n'est pas écrite. Si session_start() est déclaré, il ira à le mode natif, recréez une phpsession, et la valeur sera écrite en

//session_start();//没有启动原生的session
//$this->load->library('session');//没有启动ci的session
$_SESSION['views'] = "test23";//直接用原生的方式进行赋值
echo "Session:". $_SESSION[&#39;views&#39;];//可以正常取值出来"test23"
Copier après la connexion
Si rien n'est déclaré et qu'aucune valeur n'est assignée, et que la valeur est prise directement, une erreur sera rapportée, car utiliser ci_session , le chargement doit être requis. Si nous ne chargeons pas, une erreur sera signalée. Par conséquent, il est prouvé que lors de l'attribution d'une valeur de manière native, cela équivaut à démarrer la session et à activer ci_session, mais il n'a pas l'autorisation de le faire. écrire. Cela peut être considéré comme un bug

<5>Comment fonctionne la session

Le fonctionnement des cookies est relativement simple à comprendre. . Il est écrit dans le cookie utilisateur et tout ce qui est écrit est lu. Tant qu'il s'agit d'un cookie sur ce site, il peut être lu par valeur clé. La valeur de session est stockée dans le serveur, mais comment savoir à quel utilisateur appartient cette valeur ? En stockant le nom du fichier de session dans le cookie utilisateur, la valeur enregistrée est placée dans un fichier du même nom sur le serveur. Le vol de cookies fait référence au vol de ces informations importantes qui sont stockées sur le serveur, mais si celles-ci sont volées, ce sera terminé. Par conséquent, la clé de session stockée dans le cookie n’est pas fiable et une authentification doit être effectuée.

Notez que lorsque

écrit la session, il écrit automatiquement la clé de session dans le cookie de l'utilisateur. Cette durée doit être définie dans le php du serveur configuré dans .ini. .

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois ! Recommandations associées :

Comment implémenter la pagination PHP CodeIgniter et la requête multi-conditions


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal