php请求get携带cookie,PHP基于curl发送post、get请求及操作cookie

本篇文章主要介绍PHP基于curl发送post、get请求及操作cookie,感兴趣的朋友参考下,希望对大家有所帮助。

具体如下:

/**

* @description: 封装CURL扩展

* @date: 2014-07-28 16:04

*/

/**

* @编码规范

* @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage

* @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result

* @function 函数名与类名规则相同 eg: function SendRequest

* @params 函数形参规则与变量名相同

* @class-variable 成员变量,以下划线结尾,多个单词使用下划线分隔. eg: private $host_name_

*/

/**

* @要求

*

*/

class Curl{

/**

* @请求的host

*/

private $host_;

/**

* @curl 句柄

*/

private $ch_;

/**

* @超时限制时间

*/

const time_=5;

/**

* @请求的设置

*/

private $options_;

/**

* @保存请求头信息

*/

private $request_header_;

/**

* @保存响应头信息

*/

private $response_header_;

/**

* @body_ 用于保存curl请求返回的结果

*/

private $body_;

/**

* @读取cookie

*/

private $cookie_file_;

/**

* @写入cookie

*/

private $cookie_jar_;

/**

* @todo proxy

* @构造函数,初始化CURL回话

*/

public function Start($url){

$this->ch_ = curl_init($url);

curl_setopt($this->ch_, CURLOPT_HEADER, 1);

curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 1 );

}

/**

* @返回响应头

*/

public function ResponseHeader($url){

if (!function_exists('http_parse_headers')) {

function http_parse_headers ($raw_headers){

$headers = array();

foreach (explode("\n", $raw_headers) as $i => $h) {

$h = explode(':', $h, 2);

if (isset($h[1])) {

if(!isset($headers[$h[0]])) {

$headers[$h[0]] = trim($h[1]);

} else if(is_array($headers[$h[0]])) {

$tmp = array_merge($headers[$h[0]],array(trim($h[1])));

$headers[$h[0]] = $tmp;

} else {

$tmp = array_merge(array($headers[$h[0]]),array(trim($h[1])));

$headers[$h[0]] = $tmp;

}

}

}

return $headers;

}

}

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);

$this->body_=$this->Execx();

$header_size = curl_getinfo($this->ch_, CURLINFO_HEADER_SIZE);

$this->response_header_ = substr($this->body_, $start = 0, $offset = $header_size);

$this->response_header_ = http_parse_headers($this->response_header_);

print_r($this->response_header_);

return $this->Close($this->body_);

}

/**

* @读取cookie

*/

public function LoadCookie($url,$cookie_file){

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_COOKIE, 1);

curl_setopt($this->ch_, CURLOPT_COOKIEFILE , $cookie_file);

$this->body_=$this->Execx();

return $this->Close($this->body_);

}

/**

* @写入cookie

*/

public function SaveCookie($url){

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_COOKIE, 1);

curl_setopt($this->ch_, CURLOPT_COOKIEFILE ,'cookie.txt');

curl_setopt($this->ch_, CURLOPT_COOKIEJAR , 'cookie.txt');

$this->body_=$this->Execx();

return $this->Close($this->body_);

}

/**

* @设置HEADER

*/

public function SetHeader($headers = null){

if (is_array($headers) && count($headers) > 0) {

curl_setopt($this->ch_, CURLOPT_HTTPHEADER, $headers);

}

}

/**

* @GET请求

*/

public function Get($url, array $params = array()) {

if ($params) {

if (strpos($url, '?')) {

$url .= "&".http_build_query($params);

}

else {

$url .= "?".http_build_query($params);

}

}

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);

if (strpos($url, 'https') === 0) {

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);

}

$this->body_=$this->Execx();

return $this->Close($this->body_);

}

/**

* @POST请求

*/

public function Post($url, array $params = array()) {

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($this->ch_, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));

curl_setopt($this->ch_, CURLOPT_POST, true);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);

if ($params) {

curl_setopt($this->ch_, CURLOPT_POSTFIELDS, http_build_query($params));

}

$this->body_=$this->Execx();

return $this->Close($this->body_);

}

/**

* @tips: google http head 方法

*/

public function Head($url, array $params = array()) {

$this->Start($url);

curl_setopt($this->ch_, CURLOPT_TIMEOUT, Curl::time_);

curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 0);

curl_setOpt($this->ch_,CURLOPT_NOBODY, true);

$this->body_=$this->Execx();

return $this->Close($this->body_);

}

/**

* @执行CURL会话

*/

public function Execx(){

return curl_exec($this->ch_);

}

/**

* @关闭CURL句柄

*/

public function Close($body_){

if ($body_ === false) {

echo "CURL Error: " . curl_error($body_);

return false;

}

curl_close($this->ch_);

return $body_;

}

}

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值