2013-03-23 67 views
0

我正在使用Curl来查找网站的状态代码。这是为了响应用户在表单中输入网址,基本上我只是想检查网址是否有效,所以我认为最好的办法是只允许某些代码可能是好的。但是这并不如预期那样。对于EG特斯克公司返回503,Marks & Sparks一个405.因此,似乎可能有更多的状态代码,事实上确实没问题,但似乎他们应该没有问题。什么http状态代码可以接受

所以......我的问题是,我应该信任哪些http状态码。或者,我是否应该这样做,并通过除了某些特定状态代码之外的所有内容?

的完整性和的情况下,它可以帮助任何人,这里是我应得的状态代码:通过卷曲URL的

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_NOBODY, true); 
$result = curl_exec($curl); 
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
if ($statusCode == 200 || $statusCode == 300 || $statusCode == 301 || $statusCode == 302 || $statusCode == 303 || $statusCode == 307 || $statusCode ==) { 
    $ret = true; 
} 
+1

定义 “有效” 的网址是什么? – 2013-03-23 02:04:25

+0

那么我已经检查过格式与正则表达式,所以我真的只是想检查是否有什么在另一端。例如200是好的。 301的好,因为这是一个重定向,可能指向某处更合适。但是代码列表很大。是否有更多的地位代码我应该拒绝而不是接受,反之亦然? – 2013-03-23 03:39:05

+0

您还没有接受答案 – 2013-03-25 01:49:32

回答

2

检查实存
参见:http://www.php.net/manual/en/function.file-exists.php#74469

<?php 
function url_exists($url) { 
    if (!$fp = curl_init($url)) return false; 
    return true; 
} 
?> 

一些状态代码和引用根据您的疑问

200 OK 

该请求已成功。响应返回的信息取决于请求中使用的方法,例如:

GET在响应中发送对应于所请求资源的实体;

HEAD与请求资源对应的实体头字段在没有任何消息体的响应中发送;

POST描述或包含操作的结果的实体;

跟踪由最终服务器收到的包含请求消息的实体。

201 Created 

请求已经完成,结果是创建了新的资源。新创建的资源可以由响应实体中返回的URI(s)引用,其中由Location标题字段给出的资源的URI最具体。

202 Accepted 

该请求已被接受处理,但处理尚未完成。该请求可能最终可能会也可能不会最终被执行,因为在处理实际发生时它可能被禁止。从这样的异步操作中无法重新发送状态码。

203 Non-Authoritative Information 

在实体头中返回的元信息不是最终设定为可利用从源服务器,而是从本地或第三方复制聚集。提出的集可能是原始版本的子集或超集。例如,包含关于资源的本地注释信息可能会导致原始服务器已知的元信息的超集。使用此响应代码不是必需的,只有当响应否则为200(正常)时才适用。

204 No Content 

服务器已经履行了请求,但不需要返回一个实体主体,并且可能要返回更新的元信息。响应可能以实体标题的形式包含新的或更新的元信息,如果存在的话应该与请求的变体相关联。

205 Reset Content 

伺服器已完成的请求和用户代理应该复位引起要被发送的请求的文档视图。此回复主要用于允许通过用户输入进行动作输入,然后清除输入形式,以便用户可以轻松启动另一个输入动作。答复不得包含实体。

阅读本

http://www.seocentro.com/articles/apache/http-status-codes.html
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

感谢您的回复。我已阅读所有这些链接(见过他们)我明白代码是什么,我只想知道我应该接受哪些。 – 2013-03-23 01:57:47

+0

我已经更新了答案,如果它满足你的任务不要忘记接受它,谢谢yoyo! – 2013-03-23 02:09:17