php 会话变量会话id,PHP Session会话

本文详细介绍了PHP会话的工作原理,包括会话变量的存储、会话ID的生成与管理,以及如何通过session_start()启动会话。示例代码展示了如何设置和销毁会话变量,以及在不依赖cookies的情况下使用SID进行会话管理。了解这些内容对于构建跨页面的数据共享至关重要。
摘要由CSDN通过智能技术生成

在整个网站的各个页面上使数据都可访问的另一种方法是使用PHP会话。

会话将在服务器上的临时目录中创建一个文件,在该目录中存储已注册的会话变量及其值。 该数据将在访问期间提供给网站上的所有页面。

临时文件的位置由php.ini文件中名为session.save_path的字符项设置决定。在使用会话变量之前,确保已经设置了这个路径。

当事件发生后开始会话 -

PHP首先为该特定会话创建一个唯一标识符,该标识符是32个十六进制数字的随机字符串,例如:jb28hvh1binl3gpdgfl570k2e1。

一个名为PHPSESSID的cookie会自动发送到用户的计算机来存储唯一的会话标识字符串。

在指定的临时目录中的服务器上自动创建一个文件,并在文件名前加上前缀为sess_sess_jb28hvh1binl3gpdgfl570k2e1的唯一标识符。

当PHP脚本想要从会话变量中检索值时,PHP会自动从PHPSESSID cookie中获取唯一的会话标识符字符串,然后在其临时目录中查找带有该名称的文件,并通过比较这两个值来进行验证。

当用户丢失浏览器或离开站点后,会话结束,服务器将在预定的时间段(通常为30分钟的持续时间)之后终止会话。

开始一个PHP会话

一个PHP会话是通过调用session_start()函数来启动的。该函数首先检查一个会话是否已经启动,如果没有启动则启动一个会话。 建议将调用session_start()放在页面的开头。

会话变量存储在名为$_SESSION []的关联数组中。这些变量可以在会话的生命期间被访问。

以下示例将启动一个会话,然后注册一个名为counter的变量,在会话期间每次访问页面时都会增加该变量的值。

使用isset()函数检查会话变量是否已经设置。

把这段代码放到一个session.php文件中,并多次加载执行这个文件来查看结果 -

session_start();

if( !isset( $_SESSION['username'] ) ) {

$_SESSION['username'] = 'Maxsu';

}

if( isset( $_SESSION['counter'] ) ) {

$_SESSION['counter'] += 1;

}else {

$_SESSION['counter'] = 1;

}

$msg = "您好,".$_SESSION['username']." ! 当前您已经第 ". $_SESSION['counter'];

$msg .= " 次访问这个页面了。";

?>

设置Session示例

将上面示例代码保存到文件:index.php 中,执行得到以下结果 -

4acb7b0b57cf418c8fe430c87fcbd14d.png

销毁一个PHP会话

一个PHP会话可以调用session_destroy()函数来销毁。 这个函数不需要任何参数,一个调用就可以销毁所有的会话变量。 如果想销毁一个会话变量,那么可以使用unset()函数来销毁一个会话变量。

这里是一个例子来销毁单个变量 -

unset($_SESSION['counter']);

?>

下面是一个会销毁所有会话变量的调用 -

session_destroy();

?>

打开自动会话

如果可以在php.ini文件中将session.auto_start变量设置为1,则不需要在用户访问网站时调用start_session()函数启动会话。

不使用cookies的会话

可能会出现这种情况,当用户不允许在他们的机器上存储cookies时。另一种方法发送会话ID给浏览器。

或者,可以使用会话开始时定义的常量SID。 如果客户端没有发送适当的会话cookie,则其格式为session_name = session_id。 否则,它将扩展为空字符串。 因此,可以无条件地将其嵌入到URL中。

以下示例演示如何注册一个变量,以及如何使用SID正确链接到另一个页面。

session_start();

define('SID', session_id());

if (isset($_SESSION['counter'])) {

$_SESSION['counter'] = 1;

}else {

$_SESSION['counter']++;

}

$msg = "You have visited this page ". $_SESSION['counter'];

$msg .= " in this session.";

echo ( $msg );

?>

To continue click following link

Next Page

打印SID时可能使用htmlspecialchars(),以防止XSS相关的攻击。

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值