我想知道$ _SESSION数组是如何工作的。如果我有很多用户使用我的网站,我是否需要为每个用户设置一个子阵列?例如,我现在有
$_SESSION['userid'] = $userid;
$_SESSION['sessionid'] = $sessionid;
$_SESSION['ipaddress'] = $ipaddress;
但为了应对更多用户,我需要创建一个多维数组吗?
$_SESSION[$userid]['sessionid'] = $sessionid;
$_SESSION[$userid]['ipaddress'] = $ipaddress;
$ _SESSION全局是按客户端处理还是整体处理?在登录时设置$ _SESSION ['userid']是否会将前一个用户踢出并启动最新登录的用户?
答案 0 :(得分:45)
没有。为每个用户创建了单独的$_SESSION
。这一切都是由服务器完成的,您不必担心它。在编写代码时,请将$_SESSION
视为网站上只有一个用户。
编辑:实际上,在考虑它时,这是一个非常好的问题。问这些问题是件好事,这意味着你正在认真考虑你的代码如何真正起作用。继续问这些事情,并继续测试。我觉得有一天你会写一些惊人的代码。
所以在这个说明中,这是来自apache网站的一些信息:
什么是会话?
会话界面的核心是一个键和值对表,可以跨浏览器请求访问。根据使用会话的应用程序的需要,可以将这些对设置为任何有效字符串。
在服务器上保持会话
Apache可以配置为跟踪存储在特定服务器或服务器组上的每个用户会话。此功能类似于典型应用程序服务器中可用的会话。
如果已配置,将通过使用存储在cookie中的会话ID来跟踪会话,或者从URL查询字符串中嵌入的参数中提取会话ID,如典型的GET请求中所示。
来自PHP docs会话:
PHP中的会话支持包括一种在后续访问中保留某些数据的方法。这使您可以构建更多自定义应用程序并增加网站的吸引力。
访问您网站的访问者会被分配一个唯一ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。
会话支持允许您在$ _SESSION超全局数组中的请求之间存储数据。当访问者访问您的站点时,PHP将自动检查(如果session.auto_start设置为1)或您的请求(显式通过session_start()或通过session_register()隐式检查)是否已随请求发送特定会话ID。如果是这种情况,则重新创建先前保存的环境。
答案 1 :(得分:0)
大量搜索并进行会议后,我找到了自己的方式。我希望它对每个人都有用
这是我的用户的登录页面查询: 在这里,我从MySQL匹配数据后将电子邮件作为输入字段中的会话存储
<?php
include_once("dbcon.php");
$que=mysqli_query($con,"select * from agents where companyemail='$email' AND
pass='$password' AND post != 'Owner'");
$record = mysqli_fetch_assoc($que);
$_SESSION[$email]=$email;
header("Location:/dashboard/woresk/Dashboard_For_Agents/light/index.php?
&loginid=$agentid");
?>
然后在用户的仪表板中,有一个注销选项,其中我使用了此方法
<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'");
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
unset($_SESSION[$email]);
header('location:/dashboard/woresk/index.php');
?>
并避免用户在未登录或未设置会话的情况下进入仪表板,以下代码对我来说很好
<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'");
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
if(isset($_SESSION[$email]) && isset($_SESSION['alllogout'])){
}
else if(!isset($_SESSION[$email])){
echo
"<script>
window.location.href='/dashboard/woresk/index.php'
</script>";
}
else if (!isset($_SESSION['alllogout'])){
echo
"<script>
window.location.href='/dashboard/woresk/index.php'
</script>";
}
?>
我希望这对其他人也有用。如有任何问题,请告诉我