PHP中Session的概念


Posted in PHP onOctober 09, 2006

什么是Session呢?Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
  需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器中建立连接时所处的Sessions是两个不同的Session。
  那什么是Session的解决方案呢?我们知道,用户访问一个网站时往往需要浏览许多网页。对于一个通过PHP构筑的网站来说,用户在访问的过程中需要执行许多的PHP脚本。然而由于HTTP协议自身的特点,用户每执行一个PHP脚本都需要和Web服务器重新建立连接。又由于无状态记忆的特点,此次连接无法得到上次连接的状态。这样,用户在一个PHP脚本中对一个变量进行了赋值操作,而在另外一个PHP脚本中却无法得到这个变量的值。例如,用户在负责登录的PHP脚本中设置了$user="wind",却无法在另一个PHP脚本中通过调用$user来获得“wind”这个值。也就是说,在PHP中无法设置全局变量。每个PHP脚本中所定义的变量都是只在这个脚本内有效的局部变量。
  Session解决方案,就是要提供在PHP脚本中定义全局变量的方法,使得这个全局变量在同一个Session中对于所有的PHP脚本都有效。上面我们提到了,Session不是一个简单的时间概念,一个Session中还包括了特定的用户和服务器。因此更详细地讲,在一个Session定义的全局变量的作用范围,是指这个Session所对应的用户所访问的所有PHP。
  例如A用户通过Session定义了一个全局变量$user=“wind”中,而B用户通过Session定义的全局变量$user=“jane”。那么在A用户所访问的PHP脚本中,$user的值就是wind。

PHP 相关文章推荐
用PHP连接Oracle数据库
Oct 09 PHP
php 301转向实现代码
Sep 18 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP之COOKIE支持详解
Sep 20 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
在项目中寻找代码的坏命名
Jul 14 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php返回json数据函数实例
Oct 09 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
php微信公众号开发之秒杀
Oct 20 PHP
虚拟主机中对PHP的特殊设置
Oct 09 #PHP
用Flash图形化数据(二)
Oct 09 #PHP
用php来检测proxy
Oct 09 #PHP
如何将一个表单同时提交到两个地方处理
Oct 09 #PHP
PHP制作图型计数器的例子
Oct 09 #PHP
多php服务器实现多session并发运行
Oct 09 #PHP
提升PHP速度全攻略
Oct 09 #PHP
You might like
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python多进程实现文件下载传输功能
2018/07/28 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
中秋晚会策划方案
2014/06/12 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
教师党员整改措施
2014/10/24 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
大学生学年个人总结
2015/02/15 职场文书
nginx优化的六点方法
2021/03/31 Servers
Python自然语言处理之切分算法详解
2021/04/25 Python
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers