PHP重定向,如果无法打开流

时间:2014-02-12 12:22:10

标签: php redirect file-get-contents

我正在使用file_get_contents从第三方获取数据,但第三方此刻正在遭遇DDOS攻击,因此,我的大多数网站功能都丢失了。

如果打开流失败,如何设置重定向到另一个页面?

5 个答案:

答案 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!";
?>