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

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

WBOY
WBOYOriginal
2016-05-24 13:25:251668browse

我们在使用站长工具会发现有一个获取网站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;
}


本文链接:

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn