我想知道使用PHP会话的网站密码保护区域是否还需要.htaccess。我是一个新的密码保护网站的区域,所以尽管我已经做了很多研究,我仍然感到困惑。
我的客户使用的计费公司提供了一个脚本,我放在一个特定的文件夹中,允许他们将新的和更新的用户信息写入网站的用户mysql数据库。我想使用自己的登录和注销页面,我知道HTTP身份验证使用自己的弹出式登录框,并没有提供真正的注销方式......因此我们使用数据库来存储用户信息。
所以最重要的是,如果我通过数据库进行身份验证并在PHP中使用会话,我是否需要在受保护文件夹中使用.htaccess文件?
非常感谢提前!
答案 0 :(得分:4)
不,不。 .htaccess文件提供对基本身份验证的访问。您正在谈论的内容将由网站脚本处理。您需要记住的重要事项是始终检查页面加载是否存在有效会话并且无法重定向到登录页面。
答案 1 :(得分:1)
如果目录中的每个文件都是通过PHP实现的,那么您就不需要htaccess了。但是,如果它们是需要保护的目录中的非php文件,那么这些文件将不受保护。如果您有一个销售图表或类似的东西存储为文件服务器上的图像,那么任何能够找到它们的人都可以看到这些图表。
答案 2 :(得分:1)
请参阅有关基于REST的身份验证的文章(通过Apache):http://www.berenddeboer.net/rest/authentication.html
正如你所说,你计划使用php session实现自己的身份验证系统而我假设mysql,那么你不需要.htaccess文件来实现这一点。
就PHP而言,我仍然使用一个现在经过大量修改的系统,该系统包含在一个站点书build your own website the right way中。
它基本上需要在控制器函数上加载一组,这些函数与在会话中存储信息或检查存储的信息与数据库有关。
然后我可以使用这样的东西来限制对某些页面的访问:将其放在其他所有页面之前:
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();
}