php -- session会话
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>
输出:
在下面的实例中,我们创建了一个简单的 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 数据。
最新文章
- jquery dataTable汉化(插件形式)
- Delphi XE 10 DataSnap TCP 与 HTTP 比较
- js按键监听
- MyBatis入门学习(一)
- 设计模式学习之命令模式(Command,行为型模式)(12)
- http://d3js.org/
- centos 扩展root根分区的大小
- IP地址匹配
- HDU 2083 简易版之最短距离 --- 水题
- InitializingBean和init-method
- Android中解析JSON形式的数据
- [Java]重载,重写以及继承,多态的区别
- Xmemcached
- 利用powershell反弹shell到metasploit
- CentOS服务器上的 git 包版本控制
- BZOJ 3566: [SHOI2014]概率充电器 [树形DP 概率]
- css文字与排版
- 改变选择文字的color及background-color
- php+xml有什么用
- SpringBoot中redis的使用介绍