`
xuebingnanmm
  • 浏览: 176514 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

php session原理

    博客分类:
  • PHP
阅读更多

众所周知,http协议是一个无状态协议,简单来说就是,web服务器是不知道现在连接上来的人到底是哪个人,为了满足选择性发送信息的需求,在http的基础上做了很多扩展来达到这个目的,如数字签名、cookie、session等。
web服务器或者web程序如何能够知道现在连接上来的是谁?要解决这个问题,首先需要在服务器端和客户端建立一一对应关系,下边我通过抓取http的内容来说明这种对应关系是如何建立的。
我使用的是一个叫做httplook的http包嗅探工具,然后在本地web服务器的根目录下建立一个叫test.php的文件,地址是:http://localhost/test.php,一切就绪以后我通过浏览器反复打开这个页面。

<?php

session_start();

if (isset($_SESSION['test_sess'])){

    $_SESSION['test_sess']++;

}else{

    $_SESSION['test_sess'] = 0;

}

echo $_SESSION['test_sess'];

?>;

 


以下是前两次向服务器发出的信息及服务器返回的信息

QUOTE:
原帖由 "第一次请求服务器" 发表:

GET /test.php HTTP/1.1
Accept: */*
Referer: http://localhost/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive


QUOTE:
原帖由 "服务器第一次返回" 发表:

HTTP/1.1 200 OK
Date: Fri, 26 Aug 2005 07:44:22 GMT
Server: Apache/2.0.54 (Win32) SVN/1.2.1 PHP/5.0.4 DAV/2
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 1
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Content-Language: Off


QUOTE:
原帖由 "第二次请求服务器" 发表:

GET /test.php HTTP/1.1
Accept: */*
Referer: http://localhost/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive
Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3


QUOTE:
原帖由 "服务器第二次返回" 发表:

HTTP/1.1 200 OK
Date: Fri, 26 Aug 2005 07:44:23 GMT
Server: Apache/2.0.54 (Win32) SVN/1.2.1 PHP/5.0.4 DAV/2
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 1
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Content-Language: Off




仔细对比这些输出,第二次请求比第一次请求多出来的就是:
Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3
这个header将会向服务器发送一个cookie信息,告诉服务器我有一个cookie,名字叫PHPSESSID,内容是bmmc3mfc94ncdr15ujitjogma3。
这个cookie是怎么来的呢?看第一次服务器返回的信息里边有:
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
这是服务器向客户端浏览器写一个cookie,名字是PHPSESSID,值是bmmc3mfc94ncdr15ujitjogma3,这个值实际就是所谓的session_id。
继续看第二次向服务器发出的请求,仍然向服务器发送了PHPSESSID这个cookie

可以得到以下结论:
1、只要使用了session,就会通过cookie的方式向客户端浏览器发送session
2、每次向服务器发出请求的时候,本地浏览器会把cookie附带在请求信息中

说到这里,服务器端和客户端如何通过session做到一一对应的答案就很清楚了,明白了这个道理,对于使用session有很大帮助,请细细体会。

分享到:
评论

相关推荐

    session原理

    session原理 session原理 session原理 session原理 session原理

    解析php中session的实现原理以及大网站应用应注意的问题

    总的来说,理解PHP Session的工作原理以及如何优化其性能对于开发高效且可靠的Web应用至关重要。开发者应根据网站的规模、流量和资源状况,选择合适的Session管理策略,以确保用户体验的连贯性和系统的可扩展性。

    PHP的cookie与session原理及用法详解

    本文将深入探讨这两种技术的原理、用法以及PHP中操作它们的方法。 首先,理解cookie的产生背景。由于HTTP协议是无状态的,服务器无法记住两次请求之间的关联,为了解决这个问题,cookie应运而生。cookie存储在...

    php session登录

    在PHP编程中,Session是一种非常重要的机制,用于...以上就是PHP Session登录的基本实现及其相关知识点,包括Session的原理、设置和使用,以及登录和注销的过程。在实际开发中,还需要考虑更多的安全性和用户体验因素。

    PHP的session基础

    本篇文章将深入探讨Session的工作原理以及其在实际应用中的操作。 ### 1. Session的工作原理 Session在PHP中扮演的角色是跟踪用户的状态,即使用户在网站的不同页面之间导航。每个用户在访问网站时,服务器会为其...

    PHP Session的配置与应用

    一、PHP Session的基本原理 PHP Session的工作原理基于客户端和服务器之间的交互。当用户访问网站时,服务器创建一个唯一的Session ID,并将其存储在服务器端。这个ID随后通过Cookie发送回用户的浏览器,以便下次...

    PHP中session全面教程

    **1.2 Session的工作原理** - **创建与存储:**当用户首次访问网站时,服务器会创建一个唯一的Session ID,并将其存储在客户端的Cookie中。 - **跟踪与更新:**每次用户发起请求时,都会携带这个Session ID,服务器...

    php写的session购物车

    首先,让我们理解Session的工作原理。在Web应用中,每次用户访问一个新的页面,HTTP请求都会被重置,这意味着没有一种内置的方式来跟踪用户的状态。为了解决这个问题,PHP提供了session机制。当用户访问网站时,...

    计算机后端-PHP视频教程. php之blog实战45-session原理.wmv

    计算机后端-PHP视频教程. php之blog实战45-session原理.wmv

    php跨域提交及伪造SeSSION

    在PHP编程中,跨域(Cross-Origin)和伪造SESSION(Session Hijacking)是两个重要的安全概念,它们都与Web应用程序的安全性密切相关。本篇文章将详细解释这两个概念,并提供相关的解决方案和预防措施。 首先,让...

    PHP中session全面教程.txt

    #### 二、Session的基本原理 1. **Session ID**: 当用户访问网站时,服务器会创建一个唯一的Session ID,并通过Cookie的形式存储到客户端。这个Session ID将作为识别特定用户的唯一标识。 2. **Session存储**: ...

    php session阻塞页面分析及优化

    #### 二、PHP Session阻塞的原理分析 1. **文件锁定机制**: - 当用户访问带有`session_start()`的页面时,系统会在指定的目录下为该用户创建一个文件,文件名为Session ID。 - 在文件创建完成后,系统会对该文件...

    php5的session详解

    #### 二、Session 的工作原理 - **Session ID**:服务器会为每个用户分配一个唯一的标识符(Session ID),用来区分不同的用户会话。 - **Session 数据存储**:服务器端会创建一个存储空间来保存每个用户的会话数据...

    php中精确控制session超时时间

    首先,我们需要理解PHP中session的工作原理。session是基于服务器端的一种会话管理方式,它将用户数据存储在服务器上的文件中,并通过session ID与客户端进行交互。session ID通常通过cookie或URL参数传递,而默认...

    关于session与cookie的原理简述

    **Session原理** Session是另一种用户状态管理方式,它将用户数据存储在服务器端,通常以文件或数据库的形式。每个用户会有一个唯一的Session ID,这个ID通过Cookie或URL参数传递给服务器。 1. **启动Session** -...

    php.itcast.cn PHP课程-session和cookie的简单原理

    了解和掌握它们的工作原理对于任何PHP开发者来说都是至关重要的。 首先,让我们从cookie开始。Cookie是由Web服务器发送到用户浏览器的一小段文本信息,存储在用户的本地硬盘上。它主要用于存储用户信息,如登录状态...

    php利用session_start查看浏览记录

    首先,了解`session_start()`的工作原理。当在PHP脚本中调用`session_start()`时,它会在服务器上创建或恢复一个唯一的会话ID,并将此ID存储在一个名为`PHPSESSID`的Cookie中发送给浏览器。这个ID用于识别特定用户的...

    php实现京东式session购物车简化原始优化版~

    下面将详细解释如何使用PHP实现京东式的session购物车,并结合数据库进行优化。 首先,我们来理解`session`的概念。在PHP中,session是一种在服务器端存储用户状态的方法。当用户访问网站时,服务器会为每个用户...

    PHP5 session 详解

    ### PHP5 Session 详解 #### 一、HTTP 协议与 Session 的必要性 ...然而,在实际的 Web 应用程序开发过程中,经常需要跟踪用户...理解和掌握 Session 的工作原理及其配置方法对于开发基于 PHP 的 Web 应用程序至关重要。

Global site tag (gtag.js) - Google Analytics