为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中测试404的URL的简便方法?

在PHP中测试404的URL的简便方法?

鸿蒙传说 2019-07-23 19:43:39
在PHP中测试404的URL的简便方法?我正在教自己一些基本的刮擦,我发现有时我输入到我的代码中的URL返回404,这会使我的所有其余代码变得粗糙。所以我需要在代码顶部进行测试,以检查URL是否返回404。这似乎是一项相当直接的任务,但谷歌没有给我任何答案。我担心我在寻找错误的东西。一篇博客推荐我用这个:$valid = @fsockopen($url, 80, $errno, $errstr, 30);然后测试以查看$ valid是否为空。但我认为给我问题的URL有一个重定向,所以$ valid对所有值都是空的。或许我做错了什么。我也查看了“头部请求”,但我还没有找到任何可以使用或尝试的实际代码示例。建议?这是关于卷曲的?
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

如果您使用的是PHP的curl绑定,则可以使用以下方法检查错误代码curl_getinfo


$handle = curl_init($url);

curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);


/* Get the HTML or whatever is linked in $url. */

$response = curl_exec($handle);


/* Check for 404 (file not found). */

$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

if($httpCode == 404) {

    /* Handle 404 here. */

}


curl_close($handle);


/* Handle $response here. */


查看完整回答
反对 回复 2019-07-23
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

使用strager的代码,您还可以检查CURLINFO_HTTP_CODE以获取其他代码。有些网站不报告404,而是简单地重定向到自定义404页面并返回302(重定向)或类似的东西。我用它来检查服务器上是否存在实际文件(例如robots.txt)。很明显,这种文件如果存在则不会导致重定向,但如果不存在,则会重定向到404页面,正如我之前所说,可能没有404代码。

function is_404($url) {
    $handle = curl_init($url);
    curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

    /* Get the HTML or whatever is linked in $url. */
    $response = curl_exec($handle);

    /* Check for 404 (file not found). */
    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    curl_close($handle);

    /* If the document has loaded successfully without any redirection or error */
    if ($httpCode >= 200 && $httpCode < 300) {
        return false;
    } else {
        return true;
    }}


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 890 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信