我正在使用file_get_contents
从第三方获取数据,但第三方此刻正在遭遇DDOS攻击,因此,我的大多数网站功能都丢失了。
如果打开流失败,如何设置重定向到另一个页面?
答案 0 :(得分:1)
这将对您有所帮助:
$url = "http://example.com/url";
$response = get_headers($url);
if($response[1] === 'HTTP/1.1 200 OK') {
$content = file_get_contents($url);
} else {
header("Location: $RedirectURL");
}
答案 1 :(得分:1)
更改默认超时,然后在失败时重定向。
您可以更改file_get_contents
使用的默认超时,如下所示:
ini_set('default_socket_timeout', 10); // 10 seconds
我们需要这样做,因为默认超时是60秒 - 而访问者不想等待那么久。
然后你只测试请求是否正常,并根据它重定向......
$request = file_get_contents($url);
if( !$request )
header("Location: http://someurl.com/");
exit;
(请记住在重定向后退出,或者有时仍然会执行代码)。
答案 2 :(得分:0)
您可以使用标题()重定向。
<?php
$data = file_get_contents($attackedUrl);
if(!$data)
header("Location: $pageToRedirect");
?>
答案 3 :(得分:0)
简单。添加验证!
首先,有several methods to check if a file exists on a remote server。
其次,如果您使用file_get_contents
获取数据,则可以添加验证以检查它是否是您期望的完整数据(其他答案/评论提及使用empty
进行检查,或检查虚假值。这取决于你如何做到这一点,因为没有提供关于收到的数据类型的上下文)。 You can also set a timeout value in case it takes too long to fetch!
要重定向,您可以使用PHP's header
function,如下所示:
header('Location: http://my.redirected/page/href');
但是,如果您已输出内容,则 header()
将无效。,因此请确保在运行header
<之前检查脚本中的echo / print行。 / p>
答案 4 :(得分:0)
https://www.php.net/manual/fr/function.is-file.php
<?php
$url = "../../filename.php";
if (is_file($url))
echo "File Exist!";
//$request = file_get_contents($url);
//print(filesize($url))." ko";
else
echo "File not Exist!";
?>