我有访问mysql的php脚本。我把它们放在一个文件夹(SourceFiles)中。我想确保用户不能直接指向任何这些脚本(因此也就是mysql数据库)。我有一个访问这些脚本的登录设置,一切正常,但用户也可以直接指向文件。
将文件夹移动到public_html以上是行不通的,因为我无法发布到public_html之外的脚本。
使用.htaccess保护文件夹不起作用,因为每个用户都需要访问受保护的文件夹。
如何确保用户只能通过登录访问该文件夹中的php脚本(我目前在php中编码)。
答案 0 :(得分:0)
我个人投出额外的POST
或GET
$protected = ($_GET['p']) ? $_GET['p'] : $_POST['p']
if ($protected != 'a') { header('location:blah'); }
在受保护的网页顶部有这样的内容。
答案 1 :(得分:0)
这是我在OOP php之前做到的。
在主要应用程序入口点:
define('ACCESS',1);
在所有受保护的脚本上:
if (!defined(ACCESS)) exit;
因此,如果用户直接访问您的任何受保护的'文件,他们不会被执行。
我看到你已经制作了登录系统.....为什么不立即使用呢?存储在$ _SESSION var中,该var定义是否允许用户访问该脚本.....
答案 2 :(得分:0)
您可以将此代码放在每个文件的头部:
/***************DO NOT ALLOW DIRECT ACCESS************************************/
if ( (strpos( strtolower( $_SERVER[ 'SCRIPT_NAME' ] ), strtolower( basename( __FILE__ ) ) ) ) !== FALSE ) { // NOT FALSE if the script's file name is found in the URL
header( 'HTTP/1.0 403 Forbidden' );
die( '<h2>Direct access to this page is not allowed.</h2>' );
}
/*****************************************************************************/