Php 登录时获取会话ID

Php 登录时获取会话ID,php,Php,我有一个会话登录系统的脚本。在用户日志之后,我存储用户ID、名称和级别 if (!isset($_SESSION)) session_start(); $_SESSION['user_id'] = $result['user_id']; $_SESSION['user_name'] = $result['user_name']; $_SESSION['user_level'] = $result['user_level']; // Redirect header("Locat

我有一个会话登录系统的脚本。在用户日志之后,我存储用户ID、名称和级别

 if (!isset($_SESSION)) session_start();
 $_SESSION['user_id'] = $result['user_id'];
 $_SESSION['user_name'] = $result['user_name'];
 $_SESSION['user_level'] = $result['user_level'];    
 // Redirect
 header("Location: dashboard.php"); exit;
现在,我需要在同一台服务器上安装第二个脚本

剧本

脚本B

如果用户登录SCRIPTA并将URL更改为SCRIPTB,我将无法登录o B安装

解决此问题的一种方法是为每个会话添加唯一的ID

但是如何在页面之间转发和检查ID?

您可能不会尝试

  if (!isset($_SESSION)) 
 {
     session_start();
     $_SESSION['user_id'] = $result['user_id'];
     $_SESSION['user_name'] = $result['user_name'];
     $_SESSION['user_level'] = $result['user_level']; 
 }
  • 创建一个包含上述内容的新php文件
  • 在需要会话数据的每个页面中包含此文件

通过Sable Foste建议解决

我为用户添加了一个具有唯一ID的列,并在加载页面时检查此列

查询数据库:

// Verify hash
$result = mysql_query("SELECT user_hash FROM users WHERE user_id =".$_SESSION['user_id']);
$row = mysql_fetch_array($result, MYSQL_BOTH);
$user_hash = $row['user_hash'];
比较哈希:

if ($_SESSION['user_hash'] != $user_hash) {
    header("Location: index.php?error=1"); exit;
}

我不明白,你为什么不直接使用这个会话?!不,我指的是会议。或者会话Id是的,随便什么。我只是不明白你的用例是什么。。你们到底在做什么?实际上在保护页面上我只检查用户级别。也许我需要添加sessionID并用Cookie检查这个?你想做什么?您可能需要另一个
会话
变量来定义上述所有内容。例如,如果试图按用户id对帐户进行排序,则设置会话变量
$\u session['account']
。然后,根据该id设置一个要重定向的页面;作为$_会话[];仅在创建它的页面上可用。