阻止直接访问 php 文件的 url

2022-08-30 17:31:54

我的网站上有一个php文件说“check.php”,它在提交表单时执行。

说我的网站是“myweb.com”,php文件在目录“PHP”中

我想阻止直接访问“check.php”文件的url,即如果有人键入url“myweb.com/PHP/check.php”,那么php文件不应该被执行,它应该返回一条错误消息。

我试图通过在.htaccess中设置规则来阻止访问,但即使我尝试提交表单,它也阻止了php。

.htaccess 规则 :

RewriteEngine on 
RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ 
(.*)\.php$ /index.html [L] 

有什么可能的方法可以做到这一点吗?


答案 1

你可以用PHP来做

<?php
    /* at the top of 'check.php' */
    if ( $_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath( $_SERVER['SCRIPT_FILENAME'] ) ) {
        /* 
           Up to you which header to send, some prefer 404 even if 
           the files does exist for security
        */
        header( 'HTTP/1.0 403 Forbidden', TRUE, 403 );

        /* choose the appropriate page to redirect users */
        die( header( 'location: /error.php' ) );

    }
?>

答案 2

将此代码放在检查的顶部.php:

if(!isset($_SERVER['HTTP_REFERER'])){
    // redirect them to your desired location
    header('location:../index.php');
    exit;
}

如果用户访问检查.php直接键入URL,则会将其重定向到所需的位置。


推荐