我已经按照许多指南中的一个在线创建了使用PHP和MySQL的登录系统。它工作正常;你必须登录,然后你被重定向到/private
目录。在其中有一个index.php
文件,必须检查您是否经过身份验证,以防止有人直接浏览到/private
目录。如果不是,您将被重定向回登录屏幕。但是,如果您浏览/私人内部的任何其他文件或目录(例如/private/myprivatefile.html
),即使您没有登录,也不会重定向。您能帮助我吗?
答案 0 :(得分:2)
HTML文件通常不会执行任何脚本编写,因此被视为静态页面。如果要保护这些文件,则可能需要使用Web服务器来保护目录。
另一种方法是将静态HTML文件移动到Web服务器无法访问的目录中,并使用PHP来检索HTML文件的竞争。这样,您的PHP脚本现在将始终在请求静态内容时运行。例如,您可以链接到静态内容,如:
/private/index.php?file=myprivatefile.html
在PHP文件中,您将从CGI变量文件中提取文件请求,然后提取其内容并将其返回给请求客户端。您可以在PHP文件中执行以下操作:
<?php
if( CheckAuthentication() )
{
$fileName = $_REQUEST['file'];
$filePath = '{path to protected files}';
if( is_file( $filePath . $fileName ) )
{
readfile( filePath . $fileName );
}// Endif check if file exists on server
}// Endif Check user authentication
答案 1 :(得分:1)
您可能需要使用mod_rewrite将所有请求重定向到PHP脚本,然后在该脚本中根据用户是否经过身份验证来处理请求。
这是一个简化的例子。
<强>的.htaccess 强>
RewriteRule (.*) load.php
<强> load.php 强>
<?php
// include your auth scripts
$file = $_SERVER['REQUEST_URI'];
// parse $file to extract the requested file
if ($authenticated && file_exists($file)) {
readfile($file);
}