PHP + MySQL登录系统

时间:2013-10-11 16:54:18

标签: php mysql

我已经按照许多指南中的一个在线创建了使用PHP和MySQL的登录系统。它工作正常;你必须登录,然后你被重定向到/private目录。在其中有一个index.php文件,必须检查您是否经过身份验证,以防止有人直接浏览到/private目录。如果不是,您将被重定向回登录屏幕。但是,如果您浏览/私人内部的任何其他文件或目录(例如/private/myprivatefile.html),即使您没有登录,也不会重定向。您能帮助我吗?

2 个答案:

答案 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);
    }