使用curl检查网站是否已关闭

时间:2014-02-06 09:58:54

标签: php curl

我使用以下代码查看网站是否已关闭。

<?php
    if (isset($_POST['submit'])) {
        $url = $_POST['url'];
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_exec($curl);
        $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        if ($code == 200) {
            echo "<h3>Up!</h3>";
        } else {
            echo "<h3>Down!</h3>";
        }
    }
?>

<form action="" method="post">
    Url: <input type="text" name="url" /><br />
    <input type="submit" name="submit" />
</form>

我遇到的问题是,当我检查facebook.com时,它说它已关闭,但它不是......

为什么这样做?我认为它可能是https,但谷歌工作正常。

2 个答案:

答案 0 :(得分:1)

我相信您的curl不遵循HTTP重定向,这意味着您将始终收到来自Facebook的301响应。

以下是关于如何让你的curl遵循重定向的主题:

Make curl follow redirects?

答案 1 :(得分:1)

我决定发布我的更新代码,以防其他人遇到同样的问题

<?php
    if (isset($_POST['submit'])) {
        $url = $_POST['url'];
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_exec($curl);
        $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

        echo "<h3>$code</h3>";



        if ($code == 200) {
            echo "<h3>Up! with a 200 code</h3>";
        } 
        if ($code == 301) {
            echo "<h3>Up! with a 301 code</h3>";
        } 
        else {
            echo "<h3>Down!</h3>";
        }
    }
?>

<form action="" method="post">
    Url: <input type="text" name="url" /><br />
    <input type="submit" name="submit" />
</form>

上面你可以看到我添加了以下内容

if ($code == 301) {
            echo "<h3>Up! with a 301 code</h3>";
        } 

有很多离线代码所以我决定只使用在线代码

Kei 在评论中发布,您可以看到返回代码列表here

我还添加了行echo "<h3>$code</h3>";,以便您可以从表单中看到响应,即200,301