PHP登录脚本-If语句和数组

PHP登录脚本-If语句和数组,php,arrays,login-script,Php,Arrays,Login Script,各位程序员和程序员大家好。我正在开发一个增强的登录脚本,它是基于zubrag已经很好的登录脚本 我试图实现的目标:如果用户是管理员,他将登录。如果用户是普通用户,则不会登录。 发生的情况:用户登录,即使他不是管理员。 以下是代码片段: // user provided password if (isset($_POST['access_password'])) { $login = isset($_POST['access_login']) ? $_POST['access_login']

各位程序员和程序员大家好。我正在开发一个增强的登录脚本,它是基于zubrag已经很好的登录脚本

我试图实现的目标:如果用户是管理员,他将登录。如果用户是普通用户,则不会登录。

发生的情况:用户登录,即使他不是管理员。

以下是代码片段:

// user provided password
if (isset($_POST['access_password'])) {

  $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
  $pass = $_POST['access_password'];
  if (!USE_USERNAME && !in_array($pass, $users)
  || (USE_USERNAME && ( !array_key_exists($login, $users) || $users[$login] != $pass ) ) 
  ) {
      showLoginPasswordProtect("Incorrect username or password.");
  }
  else {
      // set cookie if password was validated
      setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
      setcookie("user", $login, 0, '/');
      // Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
      // So need to clear password protector variables
      unset($_POST['access_login']);
      unset($_POST['access_password']);
      unset($_POST['Submit']);
  }

}
我遇到问题的部分是:

  elseif (array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
  }
代码的其余部分:

// user provided password
if (isset($_POST['access_password'])) {

  $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
  $pass = $_POST['access_password'];
  if (!USE_USERNAME && !in_array($pass, $users)
  || (USE_USERNAME && ( !array_key_exists($login, $users) || $users[$login] != $pass ) ) 
  ) {
      showLoginPasswordProtect("Incorrect username or password.");
  }
  else {
      // set cookie if password was validated
      setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
      setcookie("user", $login, 0, '/');
      // Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
      // So need to clear password protector variables
      unset($_POST['access_login']);
      unset($_POST['access_password']);
      unset($_POST['Submit']);
  }

}
用户名和密码数组:

$users = array(
  'username' => 'password',
  'administrator' => 'administrator-password'
);
管理阵列:

$admins = array(
  'administrator'
);
elseif (!array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
}

现在把所有这些放在一起,问题是什么?(这可能真的很容易,我只是不是一个专业的程序员。)

你确定管理员可以登录吗

这里您的意思是,如果用户名在管理数组中,请拒绝访问:

elseif (array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
}
您可能要做的是拒绝不在管理阵列中的用户的访问:

$admins = array(
  'administrator'
);
elseif (!array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
}

您确定管理员可以登录吗

这里您的意思是,如果用户名在管理数组中,请拒绝访问:

elseif (array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
}
您可能要做的是拒绝不在管理阵列中的用户的访问:

$admins = array(
  'administrator'
);
elseif (!array_key_exists($login, $admins)) {
  showLoginPasswordProtect("User not an admin.");
}