网站地图    收藏   

主页 > php专栏 > 流程控制语句 >

PHP Session 变量 - php会话

来源:自学PHP网    时间:2014-11-27 22:01 作者: 阅读:

[导读] 当您运行一个应用程序时,您会打开它,做些更改,然后关闭它,这很像一次会话,计算机清楚你是谁,它知道你何时启动应用程序,并在何时终止,但是在因特网上,存在一个问题:服务器不知道你...

PHP Session 变量

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它,这很像一次会话,计算机清楚你是谁,它知道你何时启动应用程序,并在何时终止,但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态.

通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等),不过,会话信息是临时的,在用户离开网站后将被删除,如果您需要永久储存信息,可以把数据存储在数据库中.

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导.

开始 PHP Session

在您把用户信息存储到 PHP session 中之前,首先必须启动会话,session_start() 函数必须位于 <html> 标签之前:

  1. <?php session_start(); ?> 
  2. <html> 
  3. <body> 
  4. </body> 
  5. </html> 

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID.

存储 Session 变量

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:

  1. <?php 
  2. session_start(); 
  3. // store session data 
  4. $_SESSION['views']=1; 
  5. ?> 
  6. <html> 
  7. <body> 
  8. <?php 
  9. //retrieve session data 
  10. echo "Pageviews="$_SESSION['views']; 
  11. ?> 
  12. </body> 
  13. </html> 
  14. //输出:Pageviews=1 

在下面的例子中,我们创建了一个简单的 page-view 计数器,isset() 函数检测是否已设置 "views" 变量,如果已设置 "views" 变量,我们累加计数器,如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1:

  1. session_start(); 
  2. if(isset($_SESSION['views'])) 
  3.   $_SESSION['views']=$_SESSION['views']+1; 
  4. else 
  5.   $_SESSION['views']=1; 
  6. echo "Views="$_SESSION['views']; 

php session_start()关于Cannot send session cache limiter - headers 

解决办法:修改php.ini中的session.auto_start = 0 为 session.auto_start = 1 ,output_buffering =改为on或者任何数字,然后别忘记重新启动...

错误提示:

Warning: Cannot send session cookie - headers already sent 

Warning: Cannot send session cache limiter - headers already sent 

分析及解决办法:

这一类问题的原因是你在程序中使用PHP session_start()时,之前已经有实际的html内容输出了,或许你说,我没有啊,我只不过是echo或print一条消息了,很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出,解决此类问题的办法是,将你的session_start()调到程序的第一行.

Warning: Trying to destroy uninitialized session in 

分析及解决方法

出类这样的提示,一般情况都是你直接调session_destroy()函数造成的,很多的朋友认为session_destroy()函数可以独立的运行,其实不然,解决的方法是在你调session_destroy()函数之前,要用PHP session_start()开启session的功能.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论