php专区

 首页 > php专区 > PHP进阶 > 网络编程 > session全教程

session全教程

分享到:
【字体:
导读:
         摘要:一、session概述session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧(虽然不恰当,但意义却是一样的),session是你和网站之间的感情。session在WEB技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此你无法得知用...

session全教程

一、session概述 

    session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧
(虽然不恰当,但意义却是一样的),session是你和网站之间的感情。 session在WEB技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。因此我们必须 
通过session记录用户的有关信息,以供用户再次以此身份对web服务器提供要求时作确认,例
如,我们在某些网站中常常要求用户登录, 但我们怎么知道用户已经登录了呢,如果没有session的话,登录信息是无法保留的,那岂不要让用户在每一页网页中都要提供用户名和密码。

 
当然,session不光用于用户身份认证功能,还可能用于其它方面,以后我们会提到的。 session用中文来解释就是会话期。一个会话期开始于用户输入一个站点的网址时,结束于他离开这个站点时。session最早出现在动态脚本语言Active Server Pages中,它的功能之强大,是一句话无法说清楚的。 

 
当php还在3.0版本时,session是它永远的痛。虽然php具有执行速度快,使用灵活,功能强大等优点,但因为session的问题,使很多站点的开发放弃了php,至少我的老板是这样认为的。当时有很多php免费函数库提供在php3上实现session的方案,但都让人感觉不正宗。就好象你花好几千大洋买的手机却配置一个很粗糙的草作的袋子一样,虽然功能是一样的,但总让人觉得别扭。php4的出现让php在session问题上有了翻身的机会。虽然它的session实现还不是很理想(主要是效率问题),但毕竟是它自己实现的,而且可以实际使用了。 那我们用session干什么呢,你说了半天,我用不上的话,你岂不有卖纸张之嫌。OK,我们来看看session有什么用:作过网站的人都有这样的体会,在一页页面中的变量(在本章都指服务器端变量,下同)是不能在下一页中用的,虽然有一些办法可以实现,比如用form,urlstring等等,但有些对于用户来说是不方便的,即使让form自动提交,但其中的延时在现今的网络状况下足以让人窒息,而这两种方法都明显加大程序员的负担。如果你正在开发一个大型项目,那这些额外的负担是不能忽略的。而有了session就好办了,session中注册的变量可以作为全局变量使用。什么,全局变量? 好极了。这样一来,你知道有什么用了吧:最主要的用于用户身份认证,程序状态记录,页面之间参数传递。

 
说了它这么半天的好处,你已经动心了吧,先别高兴,它还有缺点呢:它是用文件保存的变量(当然效率不高了,虽然可以用别的方式,但很麻烦的),不能保存对象。与之相对的是,asp中的session可以保存对象变量,用内存变量来保存session变量。但为什么我们还选用php呢,呵呵, 为什么,你能从本书的开始看到这章,想必你也应该明白了吧,你还不明白,Faint,你再从头看起吧,我保证你成为PHP专家^_^。 


session是怎样实现的呢?呵呵,你一定以为很高深吧,我来告诉你它的秘密。如果说只保存变量的话,很多读者都明白,这是很简单的,但前面我们说过,http协议是一种无状态的连接,你怎么知道那个变量是谁的,这个变量又是谁的呢?在session实现中用cookie实现的。cookie存在于客户端,也就是用户的机器中,里面保存着用户的session ID,也就是session号码,当用户的浏览器请求服务器时把session ID也一起送到服务器,这样服务器就可以识别你是谁,也就可以把变量识别开了。这样我们就不难理解了,为什么有时session会失效了。不信的话,你可以试试: 在IE的"工具"菜单上有"Internet选项"菜单,打开后再选"安全"->"自定义级别",将安全设置中的"允许使用每个对话cookies"设为禁用,再看看session能不能用。这下明白了吧!不过php4在linux/unix平台上可以自动检查cookies状态,当cookies 不可用时,自动会把session ID附带在url上进行传递。这是它在session方面比asp多的唯一的优点了。

session全教程

  • 打酱油

  • 震惊

  • 呵呵


  • 鄙视
标签标签:PHP ,CSS数据库 ,优化
立即登录 | 注册新用户
最新评论
  • 不吐不快,赶紧来一发!
栏目推荐
  • 关于PHP实现异步操作的研究
  • 分享一个PHP 微信接口封装类
  • PHP使用QQ免费企业邮箱发送邮箱的代码
  • PHP性能优化总结
  • 优化PHP代码的42条建议
  • PHP内存管理之unset
  • PHP的执行流程,PHP扩展加载过程[原创]
  • websocket 连接 C Server的尝试[原创]
  • 两个精彩的比喻:吞吐量和延迟、信号量和互斥锁[转]
  • php webservice soap简单实例
关注 第一PHP社区 微信公众号
热门点击
  • 新闻APP后端系统架构成长之路 - 高可用架构设计
  • PHP基础: CLI模式开发不需要任何一种Web服务器
  • 基础教程:svn命令在linux下的使用
  • 亿级Web系统搭建——单机到分布式集群
  • HTTP简介,http是一个属于应用层的面向对象的协议
  • Serverless技术架构,传说中的FAAS(Function as a Service),极简运维,无限扩容
  • PHP漏洞全解(六)跨网站请求伪造
  • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  • PHP学习路线以及10个PHP优化技巧
  • 适用于PHP初学者的学习线路和建议
本站推荐
  • 2016PHP技术盛会:如何编写可测试的代码
  • MySQL改密码报错:ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
  • phpmyadmin导入导出数据库文件最大限制的解决方法
  • Linux环境下MySQL数据库大小写区分问题
  • php 5.4中php-fpm 的重启、终止操作命令
  • Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
  • Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
  • Key/Value之王Memcached初探:一、掀起Memcached的盖头来
  • NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
  • NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP论坛
Copyright © 1998 - 2015 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有
快云为本站提供专业云计算服务      
分享到:
简单的页面缓冲技术
简单的页面缓冲技术作者:limodou 前言   其实说它为技术,也许不能说是真正的技术。这只不过是我自已想出来的页面处理的方法,当然与别人 的想法可能是一致的。不过我还是想给它一个好听的名字。那么我这里所指的页面缓冲是什么呢?就是指将动态生成的页面保存起来,供下一次的使用。这样下一次访问它可能就不需要动态...
session的生命周期是多长
session的生命周期是多长 session 的生命周期是多长 1 浏览器结束时其生命周期也同时结束,但是档案仍然存在于 /tmp/(sess_???) 2 下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id() 把以前的 ID 带回来,则会去读取残存在 /tmp 处的 sess_???, 取回你之前所有已经设定的参数 ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……