我正在尝试在家里建立一个安全的网页。 我用HTML和PHP创建了一个登录页面,当用户尝试使用http://example.com时,它实际上可以正常工作。 但是,我注意到,如果用户输入URL http://example.com/documents.html(其中documents.html是我网站上的页面),则无需先登录即可访问页面内容。
我一直在寻找解决方案已有数周没有成功。 我尝试使用Apache的.htaccess功能失败,(获得与上述相同的结果)。 因此,如果有人可以带领我避免这种情况,那将是很好的。
为什么不简单地将documents.html变成.php并在那里进行适当的安全检查?
使documents.html成为php文件。 在documents.php的顶部按if(!$logged_in){ header(Location: http:mywebpage.com); exit; }的行写东西
如果指示Apache这样做,则可以将.html视为PHP。 但是,如上所述,最好将文件扩展名更改为.php并使用带有条件语句和/或数据库的会话。 向我们展示您的.htaccess文件的示例,以了解您尝试了什么。 旁注:我相信nginx不支持.htaccess
您遇到的问题是由于各种原因造成的。 首先,您的页面格式应该是PHP而不是HTML。 然后,您需要在此帖子中添加类似第一个答案的内容。 PHP Login Check确保您检查了先前的问题确保您会找到答案! 希望这可以帮助。
谢谢,按照您的指示已经解决了问题,我更改为php文件格式并执行安全检查。 太好了
这个问题很广泛。有许多可能的解决方案。给出最佳答案将非常困难。
我个人的选择是从网站的公共区域删除HTML页面,然后创建一个PHP页面,该页面根据请求的页面检查权限。如果可以,则PHP页面将读取非公共HTML页面并仅回显内容。
这样可以保护HTML页面,而无需重命名或以任何方式更改它们。这通常会更好一些,因为通常有一个原因是您拥有HTML页面而不是PHP页面。如果它们是在其他地方生成的,那么也很难使这些更改保持更新。它还将使您有机会在显示之前在代码中添加或修改输出。
可以为每个HTML页面制作一个PHP文件,或者您可以对所有页面使用一个PHP文件,并使用请求变量选择要授权和显示的HTML页面。那取决于你。
值得一提的是,这种类型的系统还可以用于您想保护的任何其他类型的文件,但仍可以(看起来)直接访问。为此,只需将mystaticfile.html替换为mystaticfile.zip(或其他内容),并确保发送正确的标头。
对我来说,我在网页的开头添加了此代码,该代码只能通过登录才能访问。
if(isset($_SESSION["username"])) {
//Code to run if logged in
} else {
//This will return the user to login page if the user is not logged in
header("Location: login.php");
}
?>
这将保护用户页面的独占页面,即使手动键入URL也是如此。