Maison  >  Article  >  développement back-end  >  session session php (sujet)

session session php (sujet)

PHPz
PHPzoriginal
2020-07-11 17:55:317042parcourir

les sujets de la session PHP incluent les concepts de session PHP, l'utilisation des fonctions de base, les cas d'utilisation de session PHP, les didacticiels vidéo de session PHP et les articles sélectionnés associés. Bienvenue pour apprendre !

session session php (sujet)

1 : Qu'est-ce que la session PHP ?

Explication officielle : Le mécanisme de session (Session) est utilisé en PHP pour conserver des données pertinentes lorsque les utilisateurs accèdent en permanence aux applications Web, aidant ainsi à créer des programmes hautement personnalisés et à augmenter l'attraction des sites.

Pour comprendre ce qu'est une session php, vous devez d'abord comprendre quel est le mécanisme de session

Mécanisme de session

HTTP est basé sur un protocole réseau sans connexion . Une visite est complètement nouvelle sur le serveur

Si vous vous souvenez du visiteur et enregistrez l'état de la connexion, vous pouvez améliorer l'expérience utilisateur et compléter de nombreuses fonctions personnalisées, telles que la connexion de l'utilisateur, le panier d'achat, etc.

En fait, la façon dont le serveur se souvient de l'utilisateur est très simple, tout comme dans la vie, nous demandons des cartes de membre.

Il y a deux endroits où la carte de membre est stockée, soit sur vous ou Enregistré sur l'ordinateur du commerçant

Par conséquent, les informations des utilisateurs sur le réseau seront également enregistrées à deux endroits : le navigateur (client) et le serveur

Ce qui est enregistré sur le navigateur s'appelle : cookie

L'enregistrement sur le serveur s'appelle : session

Connaissances approfondies : La différence entre session et cookie en php

Sujets connexes : cookie php(sujet graphique)

Points clés de la session PHP

  • Enregistrer côté serveur

  • Variable : $_SESSION

  • Filtre variable : filter_input(INPUT_SESSION, clé)

  • Définir en utilisant fonction dédiée : setcookie(name, value, expiration time)

  • doit être complété en deux étapes pour prendre effet : envoyez d'abord la commande au navigateur, puis le navigateur complète le cookie écriture

Deux : Introduction aux fonctions de base de PHP Session

1.session_create_id

Créer un nouvel identifiant de session

session_create_id ([ string $prefix ] ) : string

Paramètres

  • préfixe : Si le préfixe est spécifié, le nouvel identifiant de session sera préfixé par préfixe. Tous les caractères ne sont pas autorisés dans l'identifiant de session. Les caractères compris entre a-z a-z 0-9, , (virgule) et - (signe moins) sont autorisés.

Valeur de retour

Renvoie le nouvel identifiant de session sans conflit de la session en cours. S'il est utilisé sans session active, la vérification des conflits est ignorée.

2.session_destroy

Détruire toutes les données d'une session

session_destroy ( void ) : bool

Valeur de retour

Retourne TRUE en cas de succès, ou si renvoie FAUX en cas d'échec.

3.session_id

Obtenir/Définir l'ID de session en cours

session_id ([ string $id ] ) : string

Paramètres

  • id : if Si la valeur du paramètre id est spécifiée, la valeur spécifiée est utilisée comme ID de session. La fonction session_id() doit être appelée avant l'appel de la fonction session_start(). Différents gestionnaires de sessions ont des restrictions différentes sur les caractères pouvant être utilisés dans les ID de session. Par exemple, le gestionnaire de session de fichiers autorise uniquement les caractères suivants dans les ID de session : a-z A-Z 0-9 , (virgule) et - (signe moins)

Valeur de retour

Renvoyer l'ID de session actuelle. S'il n'y a pas de session en cours, une chaîne vide ("") est renvoyée.

4.session_name

Lire/définir le nom de la session

session_name ([ string $name ] ) : string

Paramètres

  • nom : utiliser la session nom dans le cookie ou l'URL, par exemple : PHPSESSID. Seuls des lettres et des chiffres peuvent être utilisés comme nom de session. Il est recommandé qu'il soit le plus court possible et qu'il soit significatif (pour les utilisateurs qui ont activé les avertissements en matière de cookies, il leur est plus facile de déterminer s'ils autorisent ce cookie). ). Si le paramètre name est spécifié, la session en cours utilisera également la valeur spécifiée comme nom.

Valeur de retour

Renvoie le nom de la session actuelle. Si le paramètre name est spécifié, cette fonction met à jour le nom de session et renvoie le nom de session d'origine.

5.session_start

Démarrer une nouvelle session ou réutiliser une session existante

session_start ([ array $options = array() ] ) : bool

Paramètres

  • options : Ce paramètre est un tableau associatif dont les éléments, s'ils sont fournis, seront utilisés pour remplacer les éléments de configuration dans la directive de configuration de session. Les clés de ce tableau ne doivent pas nécessairement contenir le préfixe de session.

Valeur de retour

Renvoie VRAI si la session est démarrée avec succès, sinon renvoie FAUX

6.session_status

Renvoyer l'état de la session actuelle

session_status ( void ) : int

Valeur de retour

PHP_SESSION_DISABLED La session est désactivée.

PHP_SESSION_NONE La session est activée, mais aucune session en cours n'existe.

PHP_SESSION_ACTIVE La session est activée et la session en cours existe.

7.session_unset

Libérer toutes les variables de session

session_unset ( void ) : void

Trois : cas d'utilisation

1. Opérations de session de base

Opérations de base communes de PHP Session

<?php
//开启session会话
session_start();


//设置session
$_SESSION[&#39;username&#39;] = &#39;adminuser&#39;;


//获取session
$username = $_SESSION[&#39;username&#39;];


//删除session
unset($_SESSION[&#39;username&#39;]);


//清空session
session_unset();
//或
$_SESSION = [];


//销毁session
session_destroy();

2. Solution pour désactiver les cookies dans le navigateur

cookie和session的区别在于cookie是保存在客户端的,而session是存储在服务端中。它们都有生存时间的设置,session比cookie更安全。

当服务端与客户端通信后会生成会话后,会建立一个和浏览器的唯一会话PHPSESSID。这个id会在服务端保存,也会用cookie形式保存在客户端中。

 禁用cookie后session不能把唯一id通过cookie方式在客户端中进行存储,这时候php会在浏览器地址栏中以url明文get的方式来传递phpsessionid,来进行客户端和服务端的唯一识别通信。

这样一来程序的安全性大大降低了。所有在php.ini默认是关闭通过地址栏传递phpsessionid的,如果没开启就不能使用session,所以需要php.ini配置支持才行。

session.use_only_cookies = 1; // 开启仅使用cookies存放会话id           
session.use_trans_sid = 1;     // 允许Sessionid通过URL明文传输,默认为0关闭

或者使用代码来实现

/**
 * 兼容 php7.1 以下版本
 */
if (!function_exists(&#39;session_create_id&#39;)) {
    function session_create_id()
    {
        return uniqid();
    }
}

//获取SESSION_ID
$session_id = isset($_GET[&#39;SESSION_ID&#39;]) ? $_GET[&#39;SESSION_ID&#39;] : session_create_id();

//设置 SESSION_ID
session_id($session_id);

//开启session
session_start();

$_SESSION[&#39;user&#39;] = &#39;user01&#39;;

//echo $_SESSION[&#39;user&#39;];

echo $session_id;

3、浏览计数器

利用 session 机制可以实现 记录用户的访问页面的次数,代码如下:

<?php
//开启session
session_start();

//判断是否设置浏览数
if (isset($_SESSION[&#39;view_num&#39;])) {
    //如果设置 浏览数加 1
    $_SESSION[&#39;view_num&#39;] = $_SESSION[&#39;view_num&#39;] + 1;
} else {
    //如果未设置 设置浏览数为 1
    $_SESSION[&#39;view_num&#39;] = 1;
}

die(&#39;当前浏览数为:&#39; . $_SESSION[&#39;view_num&#39;]);
?>

4、使用 session 实现登录功能

对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。

如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能 只做一次验证。为什么呢?

因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。

而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。

而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。

当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。

下面是一个简单的用户登录示例:

<?php
session_start();

//判断是否登录
if (isset($_SESSION[&#39;login_user&#39;])) {
    die(&#39;已登录!当前登录用户为:&#39; . $_SESSION[&#39;login_user&#39;]);
}

//判断是否为POST请求
if ($_SERVER[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {

    //检查是否输入用户名
    if (!isset($_POST[&#39;username&#39;]) || empty($_POST[&#39;username&#39;])) {
        die(&#39;请输入用户名!&#39;);
    }

    //检查是否输入密码
    if (!isset($_POST[&#39;password&#39;]) || empty($_POST[&#39;password&#39;])) {
        die(&#39;请输入密码!&#39;);
    }

    //模拟数据
    $data = [&#39;username&#39; => &#39;user01&#39;, &#39;password&#39; => md5(&#39;123456&#39;)];

    //检查用户名是否正确
    if ($_POST[&#39;username&#39;] === $data[&#39;username&#39;]) {
        //检查密码是否正确
        if (md5($_POST[&#39;password&#39;]) === $data[&#39;password&#39;]) {
            //保存登录状态
            $_SESSION[&#39;login_user&#39;] = $_POST[&#39;username&#39;];
            die(&#39;恭喜你登录成功!&#39;);
        }
    }

    //用户名或密码不正确
    die(&#39;用户名或密码不正确!&#39;);
}
?>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="=device-width, initial-scale=1.0">
    <title>用户登录</title>
</head>
<body>
<form action="./session02.php" method="post">
    <input type="text" name="username" placeholder="请输入用户名!">
    <input type="password" name="password" placeholder="请输入密码!">
    <button type="submit">登录</button>
</form>
</body>
</html>

四:PHP Session 视频教程

session session php (sujet)

1.PHP中session如何存储及删除变量的

2.PHP如何用session来判断用户是否登录

3.PHP如何用session来记录用户登陆信息

4.php视频教程之PHP会话管理

5.PHP视频教程之会话控制session的工作机制

6.PHP高级视频教程之和session存储相关的一些面试题

7.ThinkPHP5基础讲解视频教程之Session的使用

8.ThinkPHP5基础讲解视频教程之Session的使用

9.PHP经典实战视频教程之SESSION示例(购物车)

10.会话管理视频教程

11.Blog项目实战之session原理

五:PHP Session 精选技术文章

1.PHP7中创建session和销毁session的方法

2.利用php设置一个严格控制过期时间的session

3.Trois façons d'effacer la session en PHP

4.Explication détaillée des étapes pour synchroniser la session du cluster Web en PHP

5.Explication détaillée d'exemples de jugement des autorisations de fonctionnement des utilisateurs via la session

6.Méthode Redis d'enregistrement de session PHP

7.Laravel utilise la session de partage Redis (explication détaillée du code)

8.ThinkPHP6.0 : modifications des mécanismes de session et de cookies

9. Le principe d'implémentation de l'ID de session dans PHP Analysis

10.php implémente la page d'enregistrement de connexion des membres avec HTML plus Session et Cookie

11. php restaure le contenu de la session via session_id

12.Introduction approfondie à la configuration principale de la session dans PHP.ini

13.Cas de l'applet WeChat d'obtention de session_key et openid (photo)

14.Partage de session : Comment les clusters PHP et Redis réalisent le partage de session

15.Introduction à méthode de redis réalisant le partage de session

16.tp5 réalise la connexion et enregistre la session, puis passe à la page en fonction des différentes autorisations de rôle

17. Comprendre le mécanisme de fonctionnement de la session php

18.Solution à la situation générale où PHP ne peut pas obtenir les informations de SESSION

19.Explication détaillée des étapes pour PHP+Session pour empêcher la soumission répétée du formulaire

20 .Méthode PHP pour empêcher la session d'expirer

21.Méthode PHP pour empêcher amélioration de la vitesse de réponse de SESSION

22.Mise en cache MemCache et session (Résumé des connaissances)

23.Comparaison de plusieurs façons pour le front-end de obtenir des informations sur la session

24.Méthode de traitement de la session (session) de Laravel Explication détaillée

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