PHP $ _SESSION一次为多个用户


PHP $_SESSION for multiple users at once

我想知道 $_SESSION 数组是如何工作的。如果我有很多用户使用我的网站,我是否需要为每个用户设置一个子数组?例如现在我有

$_SESSION['userid'] = $userid;
$_SESSION['sessionid'] = $sessionid;
$_SESSION['ipaddress'] = $ipaddress;

但是为了应对更多的用户,我需要制作一个多维数组吗?

$_SESSION[$userid]['sessionid'] = $sessionid;
$_SESSION[$userid]['ipaddress'] = $ipaddress;

$_SESSION 全局是按客户端处理还是仅按整体处理?在登录时设置 $_SESSION['userid'] 是否会将前一个用户踢出并插入最新登录的用户?

No.为每个用户创建一个单独的$_SESSION。这一切都是由服务器完成的,您不必担心。编写代码时,请将$_SESSION视为站点上只有一个用户。

编辑:实际上,仔细想想,这是一个非常好的问题。问这类问题是件好事,这意味着你正在认真思考你的代码是如何真正工作的。继续问这些事情,并继续测试。我有一种感觉,有一天你会写出一些惊人的代码。

因此,关于这一点,以下是来自apache站点的一些信息:

什么是会话?

会话界面的核心是跨浏览器请求访问的键值对表。这些对可以设置为任何有效的字符串,具体取决于使用会话的应用程序的需要。

在服务器上保留会话

可以将 Apache 配置为跟踪存储在特定服务器或服务器组上的每个用户的会话。此功能类似于典型应用程序服务器中可用的会话。

如果已配置,则通过使用存储在 Cookie 中的会话 ID 或从嵌入在 URL 查询字符串中的参数中提取的会话 ID 来跟踪会话,如在典型的 GET 请求中找到的那样。

从 PHP 文档中的会话:

PHP 中的会话支持包括一种在后续访问中保留某些数据的方法。这使您能够构建更多自定义应用程序并提高网站的吸引力。

访问您网站的访问者被分配一个唯一的ID,即所谓的会话ID。这要么存储在用户端的 cookie 中,要么在 URL 中传播。

会话支持允许您在 $_SESSION 超全局数组中的请求之间存储数据。当访问者访问您的网站时,PHP 将自动(如果session.auto_start设置为 1)或根据您的请求(明确通过 session_start() 或隐式通过 session_register()检查是否已随请求一起发送特定的会话 ID。如果是这种情况,将重新创建先前保存的环境。

在搜索了很多并在会话中工作之后,我找到了自己的方式。 我希望它对这里的每个人都有效

这是我的用户的登录页面查询:在这里,我将电子邮件存储为匹配来自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');
?>

并避免用户在未登录或未设置会话时进入 dashbboard 以下代码对我来说非常有用

<?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>";
  }
  ?>

我希望这也适用于其他人。 如果有任何问题,请告诉我