亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

利用Php的CURL POST提交表單登錄實例詳解

2024-05-04 21:48:00
字體:
來源:轉載
供稿:網友

例1,CURL使用POST提交XML數據,代碼如下:

  1. $url = "http://www.49028c.com";  
  2. <!--?xml version="1.0"?-->   
  3.  $ch = curl_init();  
  4. $header[] = "Content-type: text/xml";//定義content-type為xml  
  5. curl_setopt($ch, CURLOPT_URL, $url); //定義表單提交地址  
  6. curl_setopt($ch, CURLOPT_POST, 1);   //定義提交類型 1:POST ;0:GET  
  7. curl_setopt($ch, CURLOPT_HEADER, 1); //定義是否顯示狀態頭 1:顯示 ; 0:不顯示  
  8. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//定義請求類型  
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//定義是否直接輸出返回流  
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //定義提交的數據,這里是XML文件  
  11.  curl_close($ch);//關閉 

在PHP中CURL使用POST提交XML數據時,一定要定義content-type為xml,要不然默認是text/html.

例2,post表單數據,curl是利用URL語法在命令行方式下工作的文件傳輸工具,代碼如下:

  1. set_time_limit(0); 
  2. @date_default_timezone_set('Asia/Shanghai'); 
  3. function curlrequest($url,$postfield,$proxy=""){ 
  4. $proxy=trim($proxy); 
  5. $user_agent ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
  6. $ch = curl_init();    // 初始化CURL句柄 
  7. if(!emptyempty($proxy)){ 
  8. curl_setopt ($ch, CURLOPT_PROXY, $proxy);//設置代理服務器 
  9. curl_setopt($ch, CURLOPT_URL, $url); //設置請求的URL 
  10. //curl_setopt($ch, CURLOPT_FAILONERROR, 1); // 啟用時顯示HTTP狀態碼,默認行為是忽略編號小于等于400的HTTP信息 
  11. //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//啟用時會將服務器服務器返回的“Location:”放在header中遞歸的返回給服務器 
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);// 設為TRUE把curl_exec()結果轉化為字串,而不是直接輸出 
  13. curl_setopt($ch, CURLOPT_POST, 1);//啟用POST提交 
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $postfield); //設置POST提交的字符串 
  15. //curl_setopt($ch, CURLOPT_PORT, 80); //設置端口 
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 25); // 超時時間 
  17. curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);//HTTP請求User-Agent:頭 
  18. //curl_setopt($ch,CURLOPT_HEADER,1);//設為TRUE在輸出中包含頭信息 
  19. //$fp = fopen("example_homepage.txt", "w");//輸出文件 
  20. //curl_setopt($ch, CURLOPT_FILE, $fp);//設置輸出文件的位置,值是一個資源類型,默認為STDOUT (瀏覽器)。 
  21. curl_setopt($ch,CURLOPT_HTTPHEADER,array
  22. 'Accept-Language: zh-cn'
  23. 'Connection: Keep-Alive'
  24. 'Cache-Control: no-cache' 
  25. ));//設置HTTP頭信息 
  26. $document = curl_exec($ch); //執行預定義的CURL 
  27. $info=curl_getinfo($ch); //得到返回信息的特性 
  28. //print_r($info); 
  29. if($info[http_code]=="405"){ 
  30. echo "bad proxy {$proxy}n";  //代理出錯 
  31. exit
  32. //curl_close($ch); 
  33. return $document
  34. //請求URL 
  35. $url="http://example.cn/getInfo.php"
  36. //POST提交數據,可用HTTPWATCH查看 
  37. $postfield="userName=test&year=2008&passWord=123456&Submit=%CC%E1%BD%BB"
  38. //代理服務器 
  39. $proxy = ''
  40. //請求 
  41. $str=curlrequest($url,$postfield,$proxy); 
  42. //輸出結果 
  43. echo $str;  

例3,一個簡單利用curl post登錄實例.

模擬post登陸提交表單問題

SOOPY類:之前寫過一個程序是模擬post來推送一些資源,起初跟大家一樣,各種百度谷歌,首先想到的就是用PHP自帶的庫CURL這個來模擬,自己想偷偷懶看有沒有更簡單的類來實現呢?還是被我發現了,他就是snoopy類.(中文名史盧比),代碼如下:

  1. //首先要引用這個類  
  2. include("/data/tools/pooy/Snoopy/Snoopy.class.php");  
  3. $snoopy = new Snoopy;  
  4. //$Parameters這個是要提交的數組  
  5. $Parameters["username"] = "user";  
  6. $Parameters["pass"] = "pass";  
  7. $file = "/test/test.jpg";  
  8. $serviceUrl = "http://www.你的地址/fileProcess.php";  
  9. $postfiles["image"] = $file//$filename上傳文件相對路徑 例如"upload/taoav.jpg";image/jpg  
  10. $snoopy->_submit_type = "multipart/form-data"//設定submit類型  
  11. $snoopy->submit($serviceUrl,$Parameters,$postfiles); 
  12. //$postforms,$postfiles為2中類型的值,其中$postfiles為上傳文件數組 

上面這個例子就是實現了一個POST表單提交的案例,由于需求比較復雜,這個snoopy的功能不能滿足于我的需求,于是又開始去進攻CURL.

CURL擴展庫:這個庫是比較成熟的一個擴展庫,功能很強大,強大到可以模擬瀏覽器的任何一個動作,需求是這樣子的,第一登陸一個網站后臺,第二接口頁面,然后開始推送大量資源,這里面的具體邏輯就縮略了,為了操作方便,我把我需要模擬的幾個函數封裝到了一個類里面,簡短代碼如下:

  1. /*  
  2.      模擬資源推送類  
  3.      2012-09-14 by POOY  
  4. */ 
  5. class TuisongPost{  
  6.    
  7.      //用構造登陸認證  
  8.      function TuisongPost(){  
  9.    
  10.           //存放COOKIE的文件  
  11.           global $cookie_jar;  
  12.           $this->cookie_jar = tempnam('./tmp','cookie');  
  13.           $url = "http://www.你的地址";  
  14.    
  15.           $post_data = array"username" => "admin","password" => "admin" );  
  16.    
  17.           $ch = curl_init();  
  18.    
  19.           curl_setopt($ch, CURLOPT_URL, $url);  
  20.    
  21.           curl_setopt($ch, CURLOPT_POST, 1);  
  22.    
  23.           curl_setopt($ch, CURLOPT_HEADER, 1);  
  24.    
  25.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);  
  26.    
  27.           curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);    
  28.    
  29.           curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_jar);  //保存cookie信息  
  30.    
  31.           $output1 = curl_exec($ch);  
  32.    
  33.           curl_close($ch);  
  34.    
  35.           //echo $this->cookie_jar."n";  
  36.      }  
  37.      /*得到組ID*/      
  38.      function getGid($groupname,$channel,$lanmu){  
  39.    
  40.           $url = "http://XXXX.com/creategroup";  
  41.    
  42.           //格式化要推送的數據  
  43.           $data = $this->getGidArr($groupname,$channel,$lanmu);  
  44.    
  45.           $ch = curl_init();  
  46.    
  47.           $Ref_url = "http://www.你的地址";  
  48.    
  49.           curl_setopt($ch, CURLOPT_URL, $url);  
  50.    
  51.           curl_setopt($ch, CURLOPT_REFERER, $Ref_url);       //偽裝REFERER  
  52.    
  53.           curl_setopt($ch, CURLOPT_POST, 1);   //post方式提交數據  
  54.    
  55.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //返回數據,而不是直接輸出  
  56.    
  57.           curl_setopt($ch, CURLOPT_HEADER, 0);   // 設置是否顯示header信息 0是不顯示,1是顯示  默認為0  
  58.    
  59.           curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_jar);  //發送cookie文件  
  60.    
  61.           curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   //發送POST數據  
  62.    
  63.           $output2 = curl_exec($ch);    //發送HTTP請求  
  64.    
  65.           //這個返回值是用作判斷的依據  
  66.           return $output2;  
  67.           curl_close($ch);  
  68.           //$this->unlink($this->cookie_jar);  
  69.      }       
  70.    
  71.      //推送數據  
  72.      function sendPic($note,$groupid,$groupindex,$img){  
  73.    
  74.           $url = "http://XXXX/addimage";  
  75.    
  76.           $groupid = intval($groupid);  
  77.           $data = $this->sendPicArr($note,$groupid,$groupindex,$img);  
  78.    
  79.           $ch = curl_init();  
  80.    
  81.           $Ref_url = "http://www.你的地址";  
  82.    
  83.           curl_setopt($ch, CURLOPT_URL, $url);  
  84.    
  85.           curl_setopt($ch, CURLOPT_REFERER, $Ref_url);       //偽裝REFERER  
  86.    
  87.           curl_setopt($ch, CURLOPT_POST, 1);   //post方式提交數據  
  88.    
  89.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //返回數據,而不是直接輸出  
  90.    
  91.           curl_setopt($ch, CURLOPT_HEADER, 0);   // 設置是否顯示header信息 0是不顯示,1是顯示  默認為0  
  92.    
  93.           curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_jar);  //發送cookie文件  
  94.    
  95.           curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   //發送POST數據  
  96.    
  97.           $output2 = curl_exec($ch);    //發送HTTP請求  
  98.           return $output2 ;  
  99.           curl_close($ch);  
  100.           //$this->unlink($this->cookie_jar);  
  101.      }       
  102.    
  103.      /*推送數據操作*/      
  104.      function sendMes($url,$img,$imgdesc,$groupid,$groupname,$channel,$lanmu)  
  105.      {  
  106.           //var_dump($this->cookie_jar);  
  107.           //exit();  
  108.           $url = "http://XXXX/add";  
  109.    
  110.           $data = $this->getArr($img,$imgdesc,$groupid,$groupname,$channel,$lanmu);  
  111.    
  112.           $ch = curl_init();  
  113.    
  114.           $Ref_url = "http://www.你的地址";  
  115.    
  116.           curl_setopt($ch, CURLOPT_URL, $url);  
  117.    
  118.           curl_setopt($ch, CURLOPT_REFERER, $Ref_url);       //偽裝REFERER  
  119.    
  120.           curl_setopt($ch, CURLOPT_POST, 1);   //post方式提交數據  
  121.    
  122.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //返回數據,而不是直接輸出  
  123.    
  124.           curl_setopt($ch, CURLOPT_HEADER, 0);   // 設置是否顯示header信息 0是不顯示,1是顯示  默認為0  
  125.    
  126.           curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_jar);  //發送cookie文件  
  127.    
  128.           curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   //發送POST數據  
  129.    
  130.           $output2 = curl_exec($ch);    //發送HTTP請求  
  131.    
  132.           curl_close($ch);  
  133.           //$this->unlink($this->cookie_jar);  
  134.      }       
  135.    
  136.      function getArr($img,$imgdesc,$groupid,$groupname,$channel,$lanmu)  
  137.      {  
  138.           $post_data = array(  
  139.                                    //windows使用如下寫法,linux不適用  
  140.                                    //"img"=>"@".$img.";type=image/jpeg",  
  141.                                    "img"=>"@".$img,  
  142.                                    "imgdesc"=>$imgdesc,  
  143.                                    "groupid"=>$groupid,  
  144.                                    "groupname"=>$groupname,  
  145.                                    "channel"=>$channel,  
  146.                                    "lanmu"=>$lanmu,  
  147.                                    "cdate"=>date('Y-m-d')                 
  148.           );  
  149.           return $post_data;  
  150.      }       
  151.      //格式化getGidArr  
  152.      function getGidArr($groupname,$channel,$lanmu)  
  153.      {            
  154.           $post_data = array(  
  155.                                    "groupname"=>$groupname,  
  156.                                    "channel"=>$channel,  
  157.                                    "lanmu"=>$lanmu,  
  158.                                    "cdate"=>date('Y-m-d')                 
  159.           );  
  160.           return $post_data;  
  161.      }       
  162.      //格式化sendPicArr  
  163.      function sendPicArr($note,$groupid,$groupindex,$img)  
  164.      {  
  165.           $post_data = array(  
  166.                                    "notes"=>$note,  
  167.                                    "id"=>$groupid,  
  168.                                    "index"=>$groupindex,  
  169.                                    "cdate"=>date('Y-m-d'),  
  170.                                    //windows使用如下寫法,linux不適用  
  171.                                    //"img"=>"@".$img.";type=image/jpeg",  
  172.                                    "img"=>"@".$img           
  173.           );  
  174.           return $post_data;  
  175.      }  
  176.    
  177.      //清理cookie文件  
  178.      function unlink($cookie_jar){  
  179.        unlink($cookie_jar);   
  180.      }  
  181. }  

以上就是用CURL來完美解決了這個問題,他能有效的解決cookie存儲問題.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲福利在线视频| 欧美日韩亚洲精品内裤| 欧美xxxx14xxxxx性爽| 久久精品99国产精品酒店日本| 国产一区二区三区久久精品| 亚洲成人激情小说| 亚洲视频一区二区| 九九精品在线视频| 日韩av在线网址| 91香蕉嫩草神马影院在线观看| 久久成年人视频| 精品美女永久免费视频| 精品中文字幕在线2019| 欧美日韩在线一区| 欧美大尺度电影在线观看| 久久久亚洲影院| 国产美女精品视频| 国产精品91在线观看| 亚洲天堂免费视频| 不卡av电影院| 欧美激情综合色综合啪啪五月| 欧美成人免费在线观看| www.xxxx欧美| 亚洲精品免费一区二区三区| 国产精品自拍偷拍视频| 欧美日韩亚洲国产一区| 国产精品视频白浆免费视频| 日韩欧美成人网| 国产精品美女视频网站| 日日骚av一区| 韩国欧美亚洲国产| 欧美高清激情视频| 久久亚洲国产精品| 国产精品激情av在线播放| 日韩在线免费视频| 91免费看视频.| 欧美日韩另类字幕中文| 亚洲一区二区三区视频| 欧美综合激情网| 国产精品国语对白| 国产成人精品视频| 欧美一区二区.| 欧美性高跟鞋xxxxhd| 成人中文字幕+乱码+中文字幕| 久久久久久久电影一区| 久久久久久久久国产| 久久手机精品视频| 欧美成人在线免费视频| 亚洲国内精品在线| 日韩av免费一区| 亚洲午夜久久久久久久| 在线精品91av| 欧美另类第一页| 欧美性极品xxxx做受| 亚洲欧美精品中文字幕在线| 色综合久久天天综线观看| 亚洲级视频在线观看免费1级| 欧美高清第一页| 欧美激情网友自拍| 亚洲精品91美女久久久久久久| 一区二区欧美亚洲| 国产成人综合av| 91在线免费网站| 精品偷拍一区二区三区在线看| 日韩美女在线看| 狠狠操狠狠色综合网| 国产精品96久久久久久又黄又硬| 欧美高清在线播放| 欧美大片va欧美在线播放| 亚洲男人天天操| 日韩最新免费不卡| 欧美天天综合色影久久精品| 欧美午夜片欧美片在线观看| 国产大片精品免费永久看nba| 最新日韩中文字幕| 亚洲综合日韩中文字幕v在线| 日韩电影免费观看在线观看| 欧美精品精品精品精品免费| 91精品国产91久久久久久最新| 国产精品久久久久久久久男| 欧美日韩中文字幕| 亚洲精品中文字幕av| 在线播放日韩av| 91久久久国产精品| 国产xxx69麻豆国语对白| 正在播放欧美视频| 成人福利网站在线观看11| 丝袜美腿亚洲一区二区| 国产欧美日韩丝袜精品一区| 国产精品九九九| 精品一区二区亚洲| 精品亚洲国产成av人片传媒| 国产精品男人的天堂| 国产精品久久久久7777婷婷| www.99久久热国产日韩欧美.com| 91精品久久久久久| 亚洲国产99精品国自产| 亚洲美女精品久久| 日韩电影免费观看在线| 日韩av片电影专区| 高潮白浆女日韩av免费看| 91国偷自产一区二区三区的观看方式| 久久久女人电视剧免费播放下载| 亚洲自拍偷拍一区| 国产精品影片在线观看| 日韩精品久久久久| 粉嫩av一区二区三区免费野| 欧美精品在线观看| 欧美成人网在线| 国产精品69久久久久| 成人激情视频免费在线| 欧美精品久久久久a| 国产精品亚洲一区二区三区| yw.139尤物在线精品视频| 日韩中文字幕av| 久久精品在线播放| 91福利视频在线观看| 91免费版网站入口| 亚洲一区二区免费| 永久免费看mv网站入口亚洲| 久久夜精品va视频免费观看| 亚洲精品99久久久久中文字幕| 久久久亚洲影院你懂的| 久久精品国产亚洲7777| 亚洲免费av网址| 欧美亚洲第一页| 日韩欧美视频一区二区三区| 成人av电影天堂| 俺去了亚洲欧美日韩| 亚洲国产成人精品一区二区| 色悠久久久久综合先锋影音下载| 国产精品日韩精品| 久久人人97超碰精品888| 91超碰中文字幕久久精品| 国产精品高潮呻吟久久av野狼| 成人国产精品免费视频| 日本不卡免费高清视频| 国产91网红主播在线观看| 欧美精品第一页在线播放| 少妇av一区二区三区| 精品久久久一区二区| 精品中文字幕乱| 91在线高清视频| 国产精品爱久久久久久久| 亚洲自拍偷拍网址| 日本免费久久高清视频| 57pao成人永久免费视频| 久久97久久97精品免视看| 亚洲区bt下载| 91精品免费视频| 欧美激情一级精品国产| 欧美性在线观看| 91在线视频导航| 国产视频精品久久久| 久久综合亚洲社区| 国产精品日韩精品| 久久全球大尺度高清视频| 国产精品高潮呻吟久久av野狼| 福利二区91精品bt7086| 国产伦精品一区二区三区精品视频| 一本一本久久a久久精品综合小说| 国产精品毛片a∨一区二区三区|国| 欧美精品九九久久| 欧美精品在线第一页|