重定向到URL会引发错误

时间:2015-01-06 18:55:26

标签: php

我有一个用来测试的函数是在我将它存储到我的数据库之前URL有效。

function url_exists($url)
{
    ini_set("default_socket_timeout","5");
    set_time_limit(5);
    $f = fopen($url, "r");
    $r = fread($f, 1000);
    fclose($f);

    return strlen($r) > 1;
}

if( !url_exists($test['urlRedirect']) ) { ... }

它运行良好,但我的一位用户今天报告了一个问题,当我测试时,确实以下网址被标记为无效:

http://www.artleaguehouston.org/charge-grant-survey

所以我尝试删除页面名称并仅使用域名仍然出错。我的脚本窒息了这个域的内容是什么?

1 个答案:

答案 0 :(得分:3)

你试着用那里的瑞士刀吃汤!

PHP支持file_exists中的URL包装器:

if (file_exists("http://www.artleaguehouston.org/charge-grant-survey")) {
    // URL returns a good status code for your IP and User Agent "PHP/x.x.x"
}

CURL:

$ch = curl_init('http://www.artleaguehouston.org/charge-grant-survey');
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_USERAGENT,
    'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0'
);
curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($statusCode == 200) {
    // Site up and good status code
}

(主要取自How can one check to see if a remote file exists using PHP?,只是为了给予正确的信用)。