PHP运算符不能正常使用我的脚本

PHP运算符不能正常使用我的脚本,php,Php,我有一个登录脚本,可以检查用户是admin还是testuser。我写这篇文章是为了检查当我将我的站点设置为维护模式时,除了admin和testuser之外,它是否允许任何人登录。问题是,就目前而言,我只能有一个用户使其工作。所以要么是admin,要么是testuser。我两者都想要。我知道并阅读了PHP和/或语句,但这与我正在尝试的不起作用。这是非常基本的 if($user === false){ $_SESSION['message'] = '<br /><

我有一个登录脚本,可以检查用户是admin还是testuser。我写这篇文章是为了检查当我将我的站点设置为维护模式时,除了admin和testuser之外,它是否允许任何人登录。问题是,就目前而言,我只能有一个用户使其工作。所以要么是admin,要么是testuser。我两者都想要。我知道并阅读了PHP和/或语句,但这与我正在尝试的不起作用。这是非常基本的

  if($user === false){
        $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>';
    } elseif ($username <> admin or $username != testuser){
      header('Location: /maint.php');
      exit;
    }
if($user==false){
$\u会话['message']='
您的用户名不正确。请重试'; }elseif($username admin或$username!=testuser){ 标题('Location:/maint.php'); 出口 }
这很有效

  if($user === false){
        $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>';
    } elseif ($username <> admin){
      header('Location: /maint.php');
      exit;
    }
if($user==false){
$\u会话['message']='
您的用户名不正确。请重试'; }elseif($username admin){ 标题('Location:/maint.php'); 出口 }
我甚至尝试添加管道,而不是或,但这确实奏效

  if($user === false){
        $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>';
    } elseif ($username <> admin || $username != davidm){
      header('Location: /maint.php');
      exit;
    }
if($user==false){
$\u会话['message']='
您的用户名不正确。请重试'; }elseif($username admin | |$username!=davidm){ 标题('Location:/maint.php'); 出口 }
如果两者都在脚本中,则两者都会失败,并且am重定向到maint.php

有人看到我的错误了吗

我所尝试的:

    if($user === false){
        $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>';
    } elseif ($username != 'admin' || $username != 'testuser'){
      header('Location: /maint.php');
      exit;
    }

    if($user === false){
        $_SESSION['message'] = '<br /><div class="text-center alert alert- 
   danger" role="alert">Your username is incorrect. Please try again</div>';
    } elseif ($username != 'admin' or $username != 'testuser'){
      header('Location: /maint.php');
      exit;
    }

```

if($user==false){
$\u会话['message']='
您的用户名不正确。请重试'; }elseif($username!=“admin”|$username!=“testuser”){ 标题('Location:/maint.php'); 出口 } 如果($user==false){ $\u会话['message']='
您的用户名不正确。请重试'; }elseif($username!='admin'或$username!='testuser'){ 标题('Location:/maint.php'); 出口 } ```
这应该行得通:关于“amin”和“testuser”,您没有任何问题。 在带有AND或or的if语句中,我总是在每个部分周围使用额外的()。它有利于阅读,有助于避免犯错误

if($user === false){
    $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" 
        role="alert">Your username is incorrect. Please try again</div>';
} elseif ( ($username != "admin") or ($username != "testuser") ){
    header('Location: /maint.php');
    exit;
}
if($user==false){
$\u会话['message']='
您的用户名不正确。请重试'; }elseif($username!=“admin”)或($username!=“testuser”)){ 标题('Location:/maint.php'); 出口 }
这不是操作员的问题,错误在于逻辑

if ($username != 'admin' || $username != 'testuser')
    header('Location: /maint.php');
表示如果用户名不是
admin
,或者用户名不是
testuser
,则重定向。这听起来不错,只是它总是重定向,因为如果用户名是
admin
,那么它就不是
testuser
,反之亦然。你实际上想要:

if ($username != 'admin' && $username != 'testuser')

将管理员和测试用户的单引号或双引号(如“admin”)条件必须写为
elseif($username!='admin'|$username!='testuser')
。已经测试过了。仍然将我重定向到main.phpAre您确定$username已填充吗?是的。我甚至100%的在主页上重复测试。现在我觉得自己像个白痴。我错过了。非常感谢。