繁体   English   中英

通过PHP中的会话进行用户身份验证,是否需要.htaccess?

[英]User authentication via sessions in PHP, is .htaccess necessary?

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

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

因此,最重要的是,如果我通过数据库进行身份验证并在PHP中使用会话,是否需要在受保护的文件夹中添加一个.htaccess文件?

提前谢谢了!

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

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

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

如您所述,您计划使用php session和我假设的mysql实现自己的身份验证系统,那么您将不需要.htaccess文件即可完成此操作。

就通过PHP进行的操作而言,我仍然使用站点书中包含的现在进行了非常重大修改的系统, 以正确的方式构建自己的网站

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

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

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM