如何在没有数据库的情

时间:2012-09-01 06:31:05

标签: php authentication

我运行此代码来保护我的网站,但我想知道如何在没有数据库的情况下使用多个用户。 我读到你可以使用文本文件,但不知道如何,我的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

?>

1 个答案:

答案 0 :(得分: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
   )

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