【问题标题】:How to grant access to certain users using PHP如何使用 PHP 授予某些用户访问权限
【发布时间】:2015-03-29 01:22:19
【问题描述】:

我遇到了 PHP 问题,因为我正在尝试编写一个程序,将用户重定向回上一页 (membersOnly.php)。这是目前不适合我的代码。

$sess = $_SESSION['sess_username'];

if ($sess == "admin") {
    return;
} else {
     header("Location: membersOnly.php");
}

我的尝试是只允许用户“admin”进入 admin.php 页面。这段代码是首先要运行的。 $_SESSION['sess_username'] 变量在 login.php 中分配,代码如下:

session_start();
$_SESSION['sess_username'] = $_POST['user'];
header("Location: membersOnly.php");

现在我知道我正确设置了会话用户名,因为在我选择的任何页面中,我都可以使用 echo $_SESSION['sess_username'];并显示用户名。但是,如果他们的用户名不是管理员,我不确定当我尝试将用户发送回 membersOnly.php 时我做错了什么。目前,当我尝试访问该页面时,它拒绝任何用户访问,包括管理员。

[编辑:已解决] 我忘了添加 session_start();在页面顶部。

【问题讨论】:

  • 好的,您似乎正在调用return;,这很可能只是返回一个空页面。尝试将其更改为 die('IM AN ADMIN');die('IM NOT AN ADMIN'); 开始,看看你得到什么结果。
  • 不,不是这样,但感谢@Danbopes的指针
  • “不是这样”是什么意思?你得到什么?显示的是IM AN ADMIN 还是IM NOT AN ADMIN
  • @Danbopes 当我说那不是它时,我说那不是问题所在。但是当我将 $sess == "admin" 更改为 $sess != "admin" 时,它确实显示 IM AN ADMIN,但页面上没有其他内容。我现在知道它不理解“管理员”是会话名称,但我不知道如何解决这个问题。
  • 我删除了关于使用错误报告的评论;它被忽略了(两次)。如果您使用它,它会清楚地向您抛出会话未启动和未定义索引通知。

标签: php mysql session permissions


【解决方案1】:

Danbopes 是对的,您正在“返回”一个空白页面。你可以简单地做到这一点。现在请注意,除非用户名“admin”保存在会话中,否则此代码将不起作用。

$sess = $_SESSION['sess_username'];

if($sess !== 'admin'){
    header("Location: membersOnly.php");
    exit();
}

//ADMIN CONTENT

【讨论】:

  • 它只是将任何用户发送回 membersOnly.php
  • 好的,现在尝试在此代码之上回显会话“sess_username”。它是否像代码中那样用小写字母表示 admin。
  • 好的,我刚刚找到了答案。我忘了把 session_start();在代码的顶部。非常感谢你,当我试图回应它时我意识到了这一点,但它没有回应任何东西。谢谢大妈
  • @user3670816 我再也不会问session_start(); 是否使用会话加载到所有文件中的问题。 100 次中有 99 次,OP 总是说:“是的,它已加载。”
  • 我不明白为什么应该接受这个答案;这不是回报,它缺少session_start();。 - OP 自己应该发布一个。
猜你喜欢
  • 2019-07-23
  • 2019-04-13
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多