使用PHP进行单用户身份验证

使用PHP进行单用户身份验证,php,session,authentication,Php,Session,Authentication,我需要构建一个非常简单的单用户身份验证系统。这是一个管理后端,我只需要一个用户帐户就可以访问它。我宁愿不必创建“用户”数据库。因为只有一个用户,所以它甚至可能只是一个密码 (不需要用户名)。javascript警报窗口是输入此信息的好地方 我以前在供应商的“审查”服务器上见过它……如何最好地实现它 谢谢 对于每个需要身份验证的页面,您可以使用会话查看用户是否经过身份验证,如果没有,则将其重定向到身份验证页面 例如,如果您有一个需要身份验证的admin.php页面,可以从以下内容开始: <?

我需要构建一个非常简单的单用户身份验证系统。这是一个管理后端,我只需要一个用户帐户就可以访问它。我宁愿不必创建“用户”数据库。因为只有一个用户,所以它甚至可能只是一个密码 (不需要用户名)。javascript警报窗口是输入此信息的好地方

我以前在供应商的“审查”服务器上见过它……如何最好地实现它


谢谢

对于每个需要身份验证的页面,您可以使用会话查看用户是否经过身份验证,如果没有,则将其重定向到身份验证页面

例如,如果您有一个需要身份验证的admin.php页面,可以从以下内容开始:

<?php

session_start();

if (empty($_SESSION['authenticated'])) {
    header('Location: authenticate.php');
    exit;
}

/* rest of the script ... */

我一直在为一些管理目的使用这种技术:

  • 不要创建任何用户帐户,而是创建一个具有管理任务所需权限的数据库用户
  • 以数据库用户和数据库密码的身份登录系统,并将这些数据存储在会话变量中
  • 每次需要访问数据库时,请使用这些变量。若用户未使用适当的凭据登录,则将无法执行任何操作

最简单的方法是不创建任何用户表、凭据、会话或其他任何内容,只需按照mario建议的使用.htpasswd对admin目录进行密码保护即可


为了更好地理解和方便设置,您可以使用它

最简单的方法是
.htpasswd
设置。实际上,我非常喜欢使用真实的数据库用户进行用户身份验证。是的,性能会受到影响,但您可以从数据库端访问控制(包括根据用户名过滤视图)中获得很多好处。当然,这不是一个灵丹妙药,但对于安全性比原始性能更令人担忧的应用程序来说是有用的。这不是只有在OP是DB管理员的情况下才可行吗?在他/她从主机提供商租用web空间的情况下,情况可能并非如此。如果您给任何真实用户一个DB用户,则响应为“是”。但是,如果您只有一个用户(管理员),那么您至少必须有一个数据库用户,您可以使用它来实现这个机制。