>php教程 >php手册 >php获取http头部请求状态信息

php获取http头部请求状态信息

WBOY
WBOY원래의
2016-05-24 13:25:251668검색

我们在使用站长工具会发现有一个获取网站http状态信息了,其实这个功能使用php非常的简单的,我们可以使用curl来实现下面来看一些整理的例子.


使用curl需要在php.ini中设置启用才行 >


extension=php_curl.dll 去掉前面的注释既可.


实现代码如下:

$curl = curl_init(); 
$url=’http://www.phprm.com’; 
curl_setopt($curl, CURLOPT_URL, $url); //设置URL 
curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header 
curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了 
$data = curl_exec($curl); //开始执行啦~ 
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~ 
curl_close($curl); //用完记得关掉他

或者直接使用get_headers函数,get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头,例子代码如下:


在php中我们如果要取得数据、模拟登陆、POST数据等功能第一个想到的肯定是curl函数了,这个函数方便实用并且还可以多线程了下面整理了一个例子,有兴趣的朋友可参考.

例子,使用php curl获取网页数据的方法,代码如下:

<?php
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, "http://www.phprm.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
使用phpcurlpost提交数据的方法, 代码如下:
$url = "http://www.phprm.com/curl_post.php";
$post_data = array(
"nameuser" => "syxrrrr",
"pw" => "123456"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

取得数据、模拟登陆、POST数据, 代码如下:

/********************** curl 系列 ***********************/
//直接通过curl方式取得数据(包含POST、HEADER等)
/*
 * $url: 如果非数组,则为http;如是数组,则为https
 * $header: 头文件
 * $post: post方式提交 array形式
 * $cookies: 0默认无cookie,1为设置,2为获取
*/
public function curl_allinfo($urls, $header = FALSE, $post = FALSE, $cookies = 0) {
    $url = is_array($urls) ? $urls[&#39;0&#39;] : $urls;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //带header方式提交
    if ($header != FALSE) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    //post提交方式
    if ($post != FALSE) {
        curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if ($cookies == 1) {
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
} else if ($cookies == 2) {
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
}
if (is_array($urls)) {
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

最后附一个模仿搜索引擎蜘蛛来抓取网页, 代码如下:

function get_web_page($url) {
    $options = array(
        CURLOPT_RETURNTRANSFER => true, // return web page 返回网页
        CURLOPT_HEADER => false, // 不返回头信息
        CURLOPT_FOLLOWLOCATION => true, // follow redirects
        CURLOPT_ENCODING => "", // handle all encodings
        CURLOPT_USERAGENT => "spider", // 设置UserAgent
        CURLOPT_AUTOREFERER => true, // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect 连接超时
        CURLOPT_TIMEOUT => 120, // timeout on response 回复超时
        CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
        
    );
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err = curl_errno($ch);
    $errmsg = curl_error($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);
    $header[&#39;&#39;errno&#39;&#39;] = $err;
    $header[&#39;&#39;errmsg&#39;&#39;] = $errmsg;
    $header[&#39;&#39;content&#39;&#39;] = $content;
    return $header;
}


本文链接:

收藏随意^^请保留教程地址.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.