Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查会话,检查多个变量以允许访问特定页面_Php_Variables_Session - Fatal编程技术网

PHP检查会话,检查多个变量以允许访问特定页面

PHP检查会话,检查多个变量以允许访问特定页面,php,variables,session,Php,Variables,Session,如果有问题和答案,我表示歉意,但我已经搜索了大约30分钟了,我一直在点击创建会话,我不需要知道怎么做 我的问题很简单,我有一个数据库,其中有一个用户登录信息表。每个用户都有一个唯一的ID,站点上的每个页面都会检查会话中是否有简单登录的用户。如果用户未登录并创建会话,则会通过使用标题位置将您踢回登录屏幕:。在该表中,它存储一个唯一的id、用户名、密码和一个重定向列,以便当用户登录时,他们被重定向到他们应该看到的页面。网站上没有其他导航,因此查看他们不应该看到的页面的风险最小,因为他们必须知道访问页

如果有问题和答案,我表示歉意,但我已经搜索了大约30分钟了,我一直在点击创建会话,我不需要知道怎么做

我的问题很简单,我有一个数据库,其中有一个用户登录信息表。每个用户都有一个唯一的ID,站点上的每个页面都会检查会话中是否有简单登录的用户。如果用户未登录并创建会话,则会通过使用标题位置将您踢回登录屏幕:。在该表中,它存储一个唯一的id、用户名、密码和一个重定向列,以便当用户登录时,他们被重定向到他们应该看到的页面。网站上没有其他导航,因此查看他们不应该看到的页面的风险最小,因为他们必须知道访问页面的确切url。但是,为了进一步提高安全性,我希望check session函数检查用户是否已登录,以及检查唯一ID是否与允许查看该页面的唯一ID匹配

这是我试图查看是否可以限制唯一ID的代码,它给了我一个标题php警告,它不能修改,因为它已经被发送了

<?PHP
session_start();
if (!(isset($_SESSION['unique_id']) && $_SESSION['unique_id'] != '1, 2, 3')) {
header ("Location: /dampers/main_login.php");
}
?>

我觉得我可能遗漏了一些东西,我意识到我用来检查特定唯一ID的伪代码可能太离谱了。任何帮助都将不胜感激

出现错误消息的原因是,在您修改标题信息之前,已有一个输出。输出发生在以下位置:

<!-- <?php include('../../inc/check_session.php'); ?> -->

确保在打开已发送的消息头之前没有任何内容,当已经有输出时(例如使用echo),通常会打开已发送的消息头,然后修改http头。但是在第一次输出时,头被发送到客户端,因此不能再修改。我假设您的代码包含在另一个文件中,其中会出现某种ouf输出。这是整个head部分->有一个包含check_会话,但我已经注释掉了它。只有一个标题位置:在标题中。谢谢,我没有意识到我使用了错误的评论标签。我使用的文本编辑器有一个快捷方式,我假设它会根据所选代码自动选择正确的注释方法,就像我过去使用的其他编辑器一样。但仍在寻找将特定页面限制为特定ID的方法;我收回了,哈哈,它现在不允许任何用户访问该页面。每次我尝试打开页面时,它都会将用户踢回登录位置。我认为这可能与此有关。我认为它只是从mysql表中获取用户名和密码$sql=从$tbl_名称中选择*其中用户名='$username'和密码='$password';很抱歉,您可以在不知道整个代码的情况下进行疯狂猜测。尝试输出$\u SESSION['unique\u id'],看看它是否有有用的值。值1、2、3从何而来?使用check-login凭证编辑除服务器登录凭证以外的所有内容。这些数字是分配给mysql表中每个登录名的唯一ID。管理员是id 1,用户编号2是id 2,用户编号3是id 3,依此类推。因此,该表有4列:id、username、password和redirect。我希望该页面检查试图访问它的用户是否具有查看该页面的正确id。
<!-- <?php include('../../inc/check_session.php'); ?> -->
<?php 
  /* include('../../inc/check_session.php');  */ 
  session_start();
  /* ... */
if (!isset($_SESSION['unique_id']) || !in_array($_SESSION['unique_id'], array('1', '2', '3'))) {
  header ("Location: /dampers/main_login.php");
}
$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
 $userRow = mysql_fetch_array($result, MYSQL_ASSOC);

 session_start();
 $_SESSION["username"] = $username;
 $_SESSION["password"] = $password;
 $_SESSION["unique_id"] = $userRow['uniuque_id']; // assuming the corresponding table row name is 'unique_id'