0

我想知道在 PHP 中使用会话的网站的密码保护区域是否也需要 .htaccess。我是网站密码保护区域的新手,所以尽管我已经对此进行了研究,但我仍然感到困惑。

我的客户使用的计费公司提供了我放置在特定文件夹中的脚本,允许他们将新的和更新的用户信息写入站点的用户 mysql 数据库。我想使用我自己的登录和注销页面,并且我知道 HTTP 身份验证使用它自己的弹出登录框并且没有提供真正的注销方式......因此我们使用数据库来存储用户信息。

所以底线是,如果我通过数据库进行身份验证并在 PHP 中使用会话,我是否需要在受保护的文件夹中有一个 .htaccess 文件?

提前谢谢了!

4

3 回答 3

4

你不可以。.htaccess 文件提供对基本身份验证的访问。您所说的将由网站脚本处理。您需要记住的一件大事是始终检查页面加载是否存在有效会话,并且无法重定向到登录页面。

于 2013-01-13T22:18:33.367 回答
1

如果目录中的每个文件都是通过 PHP 实现的,那么您就不需要 htaccess。但是,如果它们是需要保护的目录中的非 php 文件,则这些文件将不受保护。如果您有一个销售图表或类似的东西作为图像存储在文件服务器上,那么任何能够找到它们的人都可以看到它们。

于 2013-01-13T22:27:12.307 回答
1

请参阅这篇关于基于 REST 的身份验证的文章(通过 Apache):http ://www.berenddeboer.net/rest/authentication.html

正如您所说,您计划使用 php session 实现自己的身份验证系统,并且我认为是 mysql,那么您将不需要 .htaccess 文件来完成此操作。

就这通过 PHP 而言,我仍然使用经过大量修改的系统,该系统包含在 sitepoint 书籍中,以正确的方式构建您自己的网站

它基本上需要加载一组控制器功能,这些功能要么与在会话中存储信息有关,要么与数据库检查存储的信息有关。

然后我可以使用这样的东西来限制对某些页面的访问,方法是将其放在其他所有页面之前:

if (!userIsLoggedIn())
{
    include "$docRoot/html/main/login.html.php";
    exit();
}

if (!userHasRole('Site Admin'))
{
    $error = 'Only a website administrator may access this page, your ip address has been logged and a notification sent to our support team as this is considered as an unauthorized access attempt.';
    unset($_SESSION['loggedIn']);
    include "$docRoot/html/main/accessdenied.html.php";
    exit();
}

if (!userHasActiveAccount())
{
    $error = 'Sorry but your account has been disabled. For futher information please contact support.';
    unset($_SESSION['loggedIn']);
    include "$docRoot/html/main/accessdenied.html.php";
    exit();
}
于 2013-01-13T23:02:02.227 回答