PHP:选择所有请求或检查是否存在任何请求

时间:2013-05-20 20:14:20

标签: php

有没有办法选择所有请求,或检查是否存在任何请求?

这是我想要的简单方法。

要么

if(所有请求均为否定){执行此操作}

if(任何请求都已存在){ //无所事事}else{执行此操作}

还不清楚?这就是我正在做的......

我有页面我想让它仅供管理员使用。

$username_  = $_SESSION['username'];
$password_  = $_SESSION['password'];

if((!isset($username_) && !isset($password_)))
{
    if($_REQUEST['login'] !== 'no'){header("location: admincp.php?login=no");}
}
else
{
    $user_find  = mysql_query("SELECT * FROM users WHERE username='".$username_."' AND password='".$password_."' AND rank='admin'");
    $user_count = mysql_num_rows($user_find);

    if($user_count == 0)
    {
        if($_REQUEST['login'] !== 'access'){header("location: admincp.php?login=access");}
    }
    else
    {
        header("location: admincp.php?login=success"); // here is the problem
    }

所以有三种类型的人:

  1. 未记录
  2. 已登录而非管理员
  3. 已登录和管理员
  4. 所以请求是

    login=no

    not logged login=access

    logged not admin 对于login=success< - admin index

    logged and admin 除了上一个else部分之外,在前面的代码中它将按照我的解释执行。问题所在。

    header("location: admincp.php?login=success");
    

    这里正在发生循环。如果我这样做了。

    if($_REQUEST['login'] !== 'success'){header("location: admincp.php?login=success");}
    

    我不能做其他请求。比如$_REQUEST['add'] == 'post'。我在上一个else中需要什么。我想检查是否有请求与否。

    这是我所说的重复,我想现在很清楚。

    要么

    if(所有请求均为否定){执行此操作}

    if(任何请求都已存在){ //无所事事}else{执行此操作}

2 个答案:

答案 0 :(得分:1)

我认为一个好的方法是在你的桌子上有一个标题为permission的列,其值为'admin','user'等。

当用户登录时,根据用户ID获取列值并将其置于会话中。然后在标题中使用基于您创建的会话值的if语句。将非管理员用户重定向到用户页面,以及未登录公共页面的用户。

答案 1 :(得分:0)

要回答您的问题,尽管设计存在明显的安全漏洞,您可以将条件更改为:

if(isset($_REQUEST['login']) && $_REQUEST['login'] !== 'success'){
    header("location: admincp.php?login=success");
}

总体而言,我认为switch语句可以更好地为您提供服务:

switch($_REQUEST['login']) {
    case 'no':
        //handle this case
        break;
    case 'access':
        //handle this case
        break;
    case 'success':
        //handle this case
        break;
}

更重要的是,请不要依赖url参数的值来保证安全。