PHP Sessions

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的

PHP Session 变量的由来

您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

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

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

开始 PHP Session

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。

注释:session_start() 函数必须位于 <html> 标签之前:

<?php session_start(); ?>

<html>
<body> </body>
</html>

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

存储 Session 变量

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

<?php
session_start();
// store session data
$_SESSION['views']=1;
?> <html>
<body> <?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?> </body>
</html>

输出:

Pageviews=1
 

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

<?php
session_start(); if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

销毁 Session

如果您希望删除某些 session 数据,可以使用

unset()

unset() 函数用于释放指定的 session 变量:

<?php
session_start();
if(isset($_SESSION['views']))
unset($_SESSION['views']);
?>

您也可以通过调用 session_destroy() 函数彻底销毁 session

session_destroy() 

session_destroy() 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 如果需要再次使用会话变量, 必须重新调用 session_start() 函数。为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用 setcookie() 函数来 删除客户端的会话cookie。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

<?php
// 初始化会话。
// 如果要使用会话,别忘了现在就调用:
session_start(); // 重置会话中的所有变量
$_SESSION = array(); // 如果要清理的更彻底,那么同时删除会话 cookie
// 注意:这样不但销毁了会话中的数据,还同时销毁了会话本身
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
} // 最后,销毁会话
session_destroy();
?>

注释:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

最新文章

  1. jquery dataTable汉化(插件形式)
  2. Delphi XE 10 DataSnap TCP 与 HTTP 比较
  3. js按键监听
  4. MyBatis入门学习(一)
  5. 设计模式学习之命令模式(Command,行为型模式)(12)
  6. http://d3js.org/
  7. centos 扩展root根分区的大小
  8. IP地址匹配
  9. HDU 2083 简易版之最短距离 --- 水题
  10. InitializingBean和init-method
  11. Android中解析JSON形式的数据
  12. [Java]重载,重写以及继承,多态的区别
  13. Xmemcached
  14. 利用powershell反弹shell到metasploit
  15. CentOS服务器上的 git 包版本控制
  16. BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
  17. css文字与排版
  18. 改变选择文字的color及background-color
  19. php+xml有什么用
  20. SpringBoot中redis的使用介绍

热门文章

  1. installshield12如何改变默认安装目录
  2. How to add a button in the seletions &quot;More&quot;
  3. 如何知道TSQL语句已经运行了多久
  4. UVA1614(贪心)
  5. ajax 缓存问题及解决方案
  6. 转:【微信小程序】 微信小程序-拍照或选择图片并上传文件
  7. 【mysql】主键、普通索引、唯一索引和全文索引的比较
  8. cxf利用接口规范写法发布webservice
  9. JAVA中的抽象类与接口
  10. XML相关转换