PHP curl登录访问

WBOY
Freigeben: 2016-06-23 13:41:01
Original
920 Leute haben es durchsucht

<?php$data='username=zjzhoufy@126.com&password=1q2w3e&remember=1';$curlobj = curl_init();			// 初始化curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/user/login");		// 设置访问网页的URLcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);			// 执行之后不直接打印出来// Cookie相关设置,这部分设置需要在所有会话开始之前设置date_default_timezone_set('PRC'); // 使用Cookie时,必须先设置时区curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE); curl_setopt($curlobj, CURLOPT_COOKIEJAR, 'cookie.txt '); //保存curl_setopt($curlobj, CURLOPT_COOKIEFILE, 'cookie.txt '); //读取curl_setopt($curlobj, CURLOPT_HEADER, 0); curl_setopt($curlobj, CURLOPT_FOLLOWLOCATION, 1); // 这样能够让cURL支持页面链接跳转curl_setopt($curlobj, CURLOPT_COOKIE,session_name().'='.session_id()); curl_setopt($curlobj, CURLOPT_POST, 1);  curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);  curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8", 	"Content-length: ".strlen($data)	)); curl_exec($curlobj);	// 执行curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");curl_setopt($curlobj, CURLOPT_POST, 0);  curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-type: text/xml"	)); $output=curl_exec($curlobj);	// 执行curl_close($curlobj);			// 关闭cURLecho $output;?>
Nach dem Login kopieren


如上代码并不完美,我们应该把cookie存到缓存中,不应该持久化,并且这样的持久化只能是单用户访问才行。

所以,其实我们只要设置

CURLOPT_COOKIESESSION
Nach dem Login kopieren

如下即可

<?php$data='username=demo_demo@126.com&password=123456qwe&remember=1';$curlobj = curl_init();			// 初始化curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/user/login");		// 设置访问网页的URLcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);			// 执行之后不直接打印出来// Cookie相关设置,这部分设置需要在所有会话开始之前设置date_default_timezone_set('PRC'); // 使用Cookie时,必须先设置时区curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE); curl_setopt($curlobj, CURLOPT_HEADER, 0); curl_setopt($curlobj, CURLOPT_COOKIE,session_name().'='.session_id()); // 注释掉这行,因为这个设置必须关闭安全模式 以及关闭open_basedir,对服务器安全不利//curl_setopt($curlobj, CURLOPT_FOLLOWLOCATION, 1);  curl_setopt($curlobj, CURLOPT_POST, 1);  curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);  curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8", 	"Content-length: ".strlen($data)	)); curl_exec($curlobj);	// 执行curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");curl_setopt($curlobj, CURLOPT_POST, 0);  curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-type: text/xml"	)); $output=curl_redir_exec($curlobj);	// 执行curl_close($curlobj);			// 关闭cURLecho $output;/** * 自定义实现页面链接跳转抓取 */function curl_redir_exec($ch,$debug="") {     static $curl_loops = 0;     static $curl_max_loops = 20;     if ($curl_loops++ >= $curl_max_loops)     {         $curl_loops = 0;         return FALSE;     }     curl_setopt($ch, CURLOPT_HEADER, true); // 开启header才能够抓取到重定向到的新URL    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     $data = curl_exec($ch);     // 分割返回的内容    $h_len = curl_getinfo($ch, CURLINFO_HEADER_SIZE);     $header = substr($data,0,$h_len);    $data = substr($data,$h_len - 1);    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);     if ($http_code == 301 || $http_code == 302) {         $matches = array();         preg_match('/Location:(.*?)\n/', $header, $matches);         $url = @parse_url(trim(array_pop($matches)));         // print_r($url);         if (!$url)         {             //couldn't process the url to redirect to             $curl_loops = 0;             return $data;         }         $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));         if (!isset($url['scheme']))             $url['scheme'] = $last_url['scheme'];         if (!isset($url['host']))             $url['host'] = $last_url['host'];         if (!isset($url['path']))             $url['path'] = $last_url['path'];        $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . (isset($url['query'])?'?'.$url['query']:'');         curl_setopt($ch, CURLOPT_URL, $new_url);         return curl_redir_exec($ch);     } else {         $curl_loops=0;         return $data;     } } ?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage