-4

我运行此代码来保护我的网站,但我想知道如何在没有数据库的情况下使用多个用户。我读到你可以用一个文本文件来做,但不知道怎么做,我对 PHP 的概念很少。

谢谢您的帮助。

<?php

session_start();

$username = "test";
$password = "test";

if(isset($_GET['logout']))
{
  unset($_SESSION["login"]);
  echo "You have logout ... ";
  echo "[<a href='" . $_SERVER['PHP_SELF'] . "'>Login</a>]";
  exit;
}

if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||      !isset($_SESSION["login"]))
{
  header("WWW-Authenticate: Basic realm=\"Ghost SMS\"");
  header("HTTP/1.0 401 Unauthorized");
  $_SESSION["login"] = true;
  echo "You are unauthorized ... ";
  echo "[<a href='" . $_SERVER['PHP_SELF'] . "'>Login</a>]";
  exit;
}
else
{
  if($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password)
  {
    echo "Welcome ";
    echo "[<a href='" . $_SERVER['PHP_SELF'] . "?logout'>Logout</a>]";
  }
  else
  {
    unset($_SESSION["login"]);
    header("Location: " . $_SERVER['PHP_SELF']);
  }
}

// content here

?>
4

1 回答 1

0

试试这个:

$users = array('user' => 'password',
               'user2' => 'pass',
               'user3' => 'pass',
              );

然后改变这一行

if($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password)

对此

if (isset($users[$_SERVER['PHP_AUTH_USER']]) // user exists
    && ($users[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']) // password matches
   )

此外 - 如果密码失败,您需要再次吐出标题(而不是进行位置重定向) - 否则,如果用户输入错误,将永远不会提示输入正确的密码(输入无效的用户/密码将导致重定向循环)

于 2012-09-01T07:19:47.227 回答