php专区

 首页 > php专区 > 正则表达式 > PHP Session 变量 - php会话

PHP Session 变量 - php会话

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

PHP Session 变量

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

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

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

开始 PHP Session

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

  1.  
  2.  
  3.  
  4.  
  5.  

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

存储 Session 变量

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

  1. session_start(); 
  2. // store session data 
  3. $_SESSION['views']=1; 
  4. ?> 
  5.  
  6.  
  7. //retrieve session data 
  8. echo "Pageviews="$_SESSION['views']; 
  9. ?> 
  10.  
  11.  
  12. //输出: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 session应用与安全问题解决办法 - ph...
php session应用与安全问题解决办法 当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等,存储于数据库,我这里就不多说了. Session 在 php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改 php.ini 的权限,默认 Session 的存放路径是服务器的系统临时文件夹,...
PHP Session的生存周期与用法详解 - php...
PHP Session的生存周期与用法详解 session 是一种服务器端用于存储有关用户会话信息的机制,服务器使用一种类似于散列表的结构,也可能就是使用散列表,来保存信息. 当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先会检查这个客户端是否已经包含了一个 session 标识,这个我们...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……