-4

我有访问 mysql 的 php 脚本。我将它们放在一个文件夹(SourceFiles)中。我想确保用户不能直接指向这些脚本中的任何一个(因此也不能指向 mysql 数据库)。我有一个可以访问这些脚本的登录设置,并且一切正常,但用户也可以直接指向这些文件。

将文件夹移动到 public_html 上方不起作用,因为我无法发布到 public_html 之外的脚本。

使用 .htaccess 保护文件夹不起作用,因为那时每个用户都需要访问受保护的文件夹。

如何确保用户只能通过登录访问该文件夹中的 php 脚本(我目前已在 php 中编码)。

4

3 回答 3

0

我个人额外投入POSTGET

$protected = ($_GET['p']) ? $_GET['p'] : $_POST['p']
if ($protected != 'a') { header('location:blah'); }  

在受保护页面的顶部放置类似的内容。

下次用这个

于 2012-12-14T23:46:54.657 回答
0

这就是我在 OOP php 之前的做法。

在您的主应用程序入口点:

define('ACCESS',1);

在所有受保护的脚本上:

if (!defined(ACCESS)) exit;

因此,如果用户直接访问您的任何“受保护”文件,它们将不会被执行。

编辑

我看到你已经做了登录系统......那为什么不直接使用呢?存储在 $_SESSION var 中,定义是否允许用户访问该脚本.....

于 2012-12-14T23:55:37.683 回答
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>' );
}
/*****************************************************************************/
于 2012-12-15T03:18:42.027 回答