Table des matières
回复内容:
Maison développement back-end tutoriel php 不太理解PHP的session概念

不太理解PHP的session概念

Jun 06, 2016 pm 08:51 PM
php session

主要是不太明白session的生存周期是如何计算的,它是如何携带状态信息的,望大家指教。

回复内容:

主要是不太明白session的生存周期是如何计算的,它是如何携带状态信息的,望大家指教。

其实session不是php独有的概念,所有的web应用都要涉及到会话(session)。它其实就是保存状态信息的一种机制。

很多人没有想过什么是状态信息,或者web里为什么会有这个机制。其实这跟web的特点是紧密相连的,web是没有长连接的,每个请求过去后,就与服务器断开连接了,这样对服务器来说每个请求都是新请求,所以它没有延续性,没有延续性就没有状态。

但是对我们来说无状态显然不可接受,我不可能每个页面都要求用户输入用户名密码吧,我们需要的是状态?什么是状态,就是可以延续的态,不管发送多少个请求,我都可以保持应有的态。因此我们要解决两个问题

  1. 怎样保存状态
  2. 怎样获取状态

于是session机制就应运而生了,其浏览器和服务器的交互机制可以理解为

  1. 浏览器对服务器说:"嗨,亲爱的,我来了(发起请求),但每天都有无数跟我长的一样家伙来找你,我可不希望跟别人分享那份只属于我们的记忆(状态)"
  2. 服务器对浏览器说:"不要紧,我把对你记忆都锁在这个盒子(session存储,file,memcached或者其它什么玩意)里了,把钥匙(session key)给你(Set-Cookie)"
  3. 浏览器说:"好的,我放在荷包(Cookie)里了。我走了,88(请求完成)"
  4. 第二天(第二次请求),浏览器又来找服务器了:"嗨,我又来了,用我荷包里的钥匙,打开你的记忆之盒吧"
  5. 服务器说:"打开了!真的是你,想死我了..."

影响php session生命周期的有两个因素,一个是Server端的session信息是否还存活,另一个是Browser端存在Cookie里的PHPSESSID是否还在。
Server端的session信息,当启动session的时候创建,一般放在一个文件里,php启动gc的时候会被回收掉
Client端的Cookie里记录的PHPSESSID记录了一个哈希值,指向一个Server端的session,当这个Cookie失效的时候,这个哈希值没了,session也就失效了。
不太理解PHP的session概念

通过:

phpinfo();
Copier après la connexion

可以看到Session的一系列配置,这些配置也可影响Session的生命周期。
不太理解PHP的session概念

Php 在各个请求之间传递的是session id, 然后将session数据存放在服务器端的文件或者数据库中,也有为了性能的提升保存在内存中的。无非就是三种方式:

1. 通过http请求中的Cookies头部来传递session id
2. 通过http get请求来传递session id, 也就是将session id 放在url参数中
3. 通过http post请求来传递session id,也就是将session id 放在post数据中进行传递

我在自己的博客中结合http写了一篇阐述php session本质的文章 - http://www.360weboy.com/php/session-c...。 有兴趣的话,你可以细细读下,如果发现有什么不妥之处,你可以在评论中指出来,我会核对加以纠正。 希望更志同道合的朋友一起分享技术思想。

70 回答的好幽默,好形象。(然后一不小心写错地方了。)

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

See all articles