检查服务器上是否存在具有值的php变量
“我的网站”要求用户登录,然后将用户id存储在会话中。db有一个名为“logged_in”的字段,当他们登录时,该字段的值为1,当他们注销时,该字段更改为0。问题是,如果用户刚刚关闭浏览器,该值将保持为1 我知道我可以检查服务器上是否存在会话,但我可以检查是否存在具有特定值的会话吗?我想文字代码应该是检查服务器上是否存在具有值的php变量,php,Php,“我的网站”要求用户登录,然后将用户id存储在会话中。db有一个名为“logged_in”的字段,当他们登录时,该字段的值为1,当他们注销时,该字段更改为0。问题是,如果用户刚刚关闭浏览器,该值将保持为1 我知道我可以检查服务器上是否存在会话,但我可以检查是否存在具有特定值的会话吗?我想文字代码应该是 if(!isset($_SESSION['user_id'] == 41)){ // do stuff because session with value 41 doesn't exist
if(!isset($_SESSION['user_id'] == 41)){
// do stuff because session with value 41 doesn't exist
}
要检查会话是否已设置,如果已设置,请检查其是否与值匹配:
<?php
if(!isset($_SESSION['user_id'])
|| (isset($_SESSION['user_id']) && $_SESSION['user_id'] != 41)) {
//session is not set, or value differs from 41
}
?>
不要使用数据库跟踪用户的登录状态。查看
$\u会话
-数组
会话将根据您在php.ini
中设置的超时值超时
有用链接:
- 会议开始:
- 会话(u):
- 会话超时:
$\u会话
是一个特定用户所独有的数组。(事实上,仅此而已,如果用户发送正确的会话cookie,服务器将不会注意提供正确的数组,而您(或用户)不需要注意的是,他的浏览器也可以!)
简言之:通过比较ID,让您的头脑不再需要处理多个会话。如果启动正确,数组
$\u会话
将始终与当前用户关联
当访问执行请求的与用户关联的会话时,您的服务器将始终准确返回一个会话数组
创建一个简单的“脚本”,如下所示:
<?php
SESSION_START();
if (!isset($_SESSION["start_time"])){
echo "Session started at: ";
$_SESSION["start_time"] = date("Y-m-d H:i:s");
}else{
echo "Session already existing. Started at: ";
}
echo $_SESSION["start_time"];
?>
从两个不同的浏览器访问页面
- 第一次访问时,您将收到从开始的
会话消息
- 第二次访问将传递带有已存储日期时间的
会话已存在的消息,直到调用
-或会话超时李>会话销毁()
- 您可以刷新页面10.000次-只要会话有效并且您使用相同的浏览器(自动传输会话cookie:P),时间戳将不再更改
- 您无需提供任何
即可实现此功能。您的服务器将(静默)为您提供正确的用户id
-阵列。只需编写您的网站,就好像它将以一个用户为目标,同时将用户敏感值存储在$\u会话
-数组中,而不是$会话
-数组中$其他人