PHP中session(会话)技术
PHP session PHP session 用于暂时将信息从一个页面存储并传递到另一页面(直到用户关闭网站…
Warning: Attempt to read property "post_type" on null in /www/wwwroot/wper.net/wp-content/plugins/wper-meta.php on line 317
PHP session
PHP session 用于暂时将信息从一个页面存储并传递到另一页面(直到用户关闭网站)。
PHP session 技术广泛用于购物网站,我们需要在其中存储和将购物车信息(例如用户名,产品代码,产品名称,产品价格等)从一页传递到另一页。
PHP session 为每个浏览器创建唯一的用户ID,以识别用户并避免多个浏览器之间的冲突。
PHP session_start() 函数
PHP session_start()函数用于启动会话。它开始一个新的会话或恢复现有的会话。如果已经创建了会话,它将返回现有会话。如果会话不可用,它将创建并返回新的会话。
句法
1
|
bool session_start ( void )
|
例 session_start();
从 $_SESSION 中反注册变量
1
2
3
4
|
<?php
session_start();
unset($_SESSION[‘count’]);
?>
|
注意:千万不要使用 unset($_SESSION)
来复位超级变量 $_SESSION
, 因为这样会导致无法继续在 $_SESSION
中注册会话变量。
PHP $ _SESSION
PHP $_SESSION是一个包含所有会话变量的关联数组。它用于设置和获取会话变量值。
示例:商店信息
1
|
$_SESSION[“user”] = “Sachin”;
|
示例:获取信息
1
|
echo $_SESSION[“user”];
|
PHP会话示例
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
session_start();
?>
<html>
<body>
<?php
$_SESSION[“user”] = “Sachin”;
echo “Session information are set successfully.<br/>”;
?>
<a href=“session2.php”>Visit next page</a>
</body>
</html>
|
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start();
?>
<html>
<body>
<?php
echo “User is: “.$_SESSION[“user”];
?>
</body>
</html>
|
PHP会话计数器示例
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start();
if (!isset($_SESSION[‘counter’])) {
$_SESSION[‘counter’] = 1;
} else {
$_SESSION[‘counter’]++;
}
echo (“Page Views: “.$_SESSION[‘counter’]);
?>
|
注销变量与销毁Session
当使用完一个Session变量后,可以将其删除,当完成一个会话后,也可以将其销毁。如果用户退出Web系统,就需要为他提供一个注销的功能,把他的所有信息在服务器中销毁。销毁和当前Session有关的所有的资料,可以调用session_destroy()函数结束当前的会话,并清空会话中的所有资源。该函数的语法格式如下所示:
bool session_destroy(void) //销毁和当前Session有关的所有资料
该函数并不会释放和当前Session相关的变量,也不会删除保存在客户端Cookie中的SessionID。因为$_SESSION数组和自定义的数组在使用上是相同的,所以我们可以使用unset()函数来释放在Session中注册的单个变量。如下所示:
unset($_SESSION[‘键名’]);
一定要注意,不要使用unset($_SESSION)删除整个$_SESSION数组,这样将不能再通过$_SESSION超全局数组注册变量了。但如果想把某个用户在Session中注册的所有变量都删除,可以直接将数组变量$_SESSION赋上一个空数组。如下所示:
$_SESSION=array()
PHP默认的Session是基于Cookie的,SessionID被服务器存储在客户端的Cookie中,所以在注销Session时也需要清除Cookie中保存的SessionID,而这就必须借助setCookie()函数完成。在PHP脚本中,可以通过调用session_name()函数获取Session名称。删除保存在客户端Cookie中的SessionID,代码如下所示:
1
2
3
4
5
6
7
|
<?php
//判断Cookie中是否存在session ID
if(isset($_COOKIE[session_name()])){
//删除包含Session ID的cookie,注意第四个参数一定要和php.ini设置的路径相同
setcookie(session_name(),”,time()–3600,‘/’);
}
?>
|
通过前面的介绍可以总结出,Session的注销过程共需要4个步骤。在下例中,提供完整的四个步骤代码,运行该脚本就可以关闭Session,并销毁与本次会话有关的所有资源。代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php
//第一步:开启Session并初始化
session_start();
//第二部:删除所有Session的变量,也可以用unset($_SESSION[XXX])逐个删除
$_SESSION = array();
//第三部:如果使用基于Cookie的session,使用setCookkie()删除包含Session ID的cookie
if(isset($_COOKIE[session_name()])) {
setCookie(session_name(), “”, time()–42000, “/”);
}
//第四部:最后彻底销毁session
session_destroy();
?>
|
session的phpini配置选项
1
2
3
4
5
6
7
8
9
10
|
session.cookie_path = / ; //cookie的有效路径
session.cookie_domain = ; //cookie的有效域
session.name = PHPSESSID; //用在cookie里的session的名字
session.save_handler = files ; //用于保存/取回数据的控制方式
session.save_path = /tmp ; //在 save_handler 设为文件时传给控制器的参数, 这是数据文件将保存的路径.
session.use_cookies = 1 ; //是否使用cookies
session.auto_start = 0 ; //在请求启动时初始化session
session.cache_expire = 180 ; //设置缓存中的会话文档在 n 分钟后过时
session.cookie_lifetime = 0 ; //设置按秒记的cookie的保存时间,相当于设置Session的过期时间,为0时表示直到浏览器被重启
session.auto_start=1;//这样就无需每次使用session之前都要调用session_start()不建议使用.但启用该选项也有一些限制,如果确实启用了 session.auto_start,则不能将对象放入会话中,因为类定义必须在启动会话之前加载以在会话中重建对象。
|
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!