Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止CURL访问特定页面_Php_Html_Curl - Fatal编程技术网

Php 防止CURL访问特定页面

Php 防止CURL访问特定页面,php,html,curl,Php,Html,Curl,我的index.php包括header.php和footer.php,方法如下: define("LEGAL_PATH", TRUE); include("header.php"); // ... include("footer.php"); 我所包含的每个文件都以以下开头: if (!defined("LEGAL_PATH")) { header("location: index.php"); exit(0); } 目前,当我们加载header.php(或footer.ph

我的
index.php
包括
header.php
footer.php
,方法如下:

define("LEGAL_PATH", TRUE);
include("header.php");
// ...
include("footer.php");
我所包含的每个文件都以以下开头:

if (!defined("LEGAL_PATH"))
{
    header("location: index.php");
    exit(0);
}
目前,当我们加载
header.php
(或
footer.php
)时,会在
index.php
页面上重定向。当我们尝试卷曲
header.php
时,它返回一个空白页面(由于
退出(0)

问题:

关于坏人,我想生成404错误(例如,当我们尝试访问
efjiozfjoijefiojzeof.php
时),即使我们使用curl加载页面:在这种情况下(使用curl命令),标题位置是非onconctional的

我的curl输出(当没有
退出(0)
时):

我当前拥有的curl输出(当存在
退出(0)
时):

我想要的curl输出:

$> curl https://www.mywebsite.com/header.php
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /headzefjzefjp.php was not found on this server.</p>
</body></html>
$>
$>curlhttps://www.mywebsite.com/header.php
404找不到
找不到
在此服务器上找不到请求的URL/headzefjzefjp.php

$>
我的想法是包含404页面文件,但当我在详细模式下卷曲时,仍然有200个错误代码(而不是404):

$>curlhttps://.../header.php -五
...
>GET/header.php HTTP/1.1
>主持人:。。。
>用户代理:curl/7.51.0
>接受:*/*
> 

那么,真正忽略header.php文件(来自浏览器、curl等)的好方法是什么呢?

防止人们访问他们不应该访问的页面(如页眉、页脚或某些库)的正确方法是将它们放在文档根目录之外

例如,您的文件夹结构可能类似于:

documentroot/index.php
header.php
footer.php
您的
index.php
如下所示:

<?php 
require('../header.php');
echo "some content";
require('../footer.php');

您需要手动发送
404未找到
。看到这个答案了吗

此外,如果您正在重定向,则需要设置301或302状态。在使用“位置”标题时隐式执行的操作

另一件事是确保cURL没有遵循30x重定向。(可能您的curl是
curl-l
的别名) 尝试使用
curl--max redirects=0https://www.mywebsite.com/header.php
查看情况是否如此。

标题(“HTTP/1.0 404未找到”)-必须在显示任何内容之前调用。
$> curl https://.../header.php -v
...
> GET /header.php HTTP/1.1
> Host: ...
> User-Agent: curl/7.51.0
> Accept: */*
> 
< HTTP/1.1 200 OK
...
documentroot/index.php
header.php
footer.php
<?php 
require('../header.php');
echo "some content";
require('../footer.php');