政府合法立案,優良搬家公司 公司工廠機器搬遷,免費估價送箱 | 免費丈量估價,全系列門窗、氣密窗 完善規劃設計到施工,一次ok!更享長期保固 |
[php] curl 幕後以POST方式送出資料, 取得回應 |
房東:James 發表時間:2015-12-06 | [檢舉] |
使用範例: function my_curl($url,$post) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, \'POST\'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result = curl_exec($ch); curl_close ($ch); return $result; } $postUrl=\'http://www.i2yes.com.tw\'; $postBODY = array( \'name\' => \'JACK\', \'age\' => \'20\', \'phone\' => \'0968123456\', \'address\' => \'台灣\' ); $getBody = my_curl($postUrl,$postBODY); |
廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! |
1 樓住戶:jack 發表時間:2015-12-07 | [檢舉] |
類似於dreamhost這類主機服務商,是顯示fopen的使用的。使用php的curl可以實現支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL證書、HTTP POST、HTTP PUT 、FTP 上傳,kerberos、基於HTT格式的上傳、代理、cookie、用戶+口令證明、文件傳送恢復、http代理通道就最常用的來說,是基於http的 get和post方法。 一、http的get實現 php代碼 $ch = curl_init("http://www.domain.com/api/index.php?test=1") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 獲取數據返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在啟用 CURLOPT_RETURNTRANSFER 時候將獲取數據返回 echo $output = curl_exec($ch) ; /* 寫入文件 */ $fh = fopen("out.html", w) ; fwrite($fh, $output) ; fclose($fh) ; $ch = curl_init("http://www.domain.com/api/index.php?test=1") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 獲取數據返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在啟用 CURLOPT_RETURNTRANSFER 時候將獲取數據返回 echo $output = curl_exec($ch) ; /* 寫入文件 */ $fh = fopen("out.html", w) ; fwrite($fh, $output) ; fclose($fh) ; ?> $url = http://www.domain.com/api/ ; $fields = array( lname=>justcoding , fname=>phplover , title=>myapi, age=>27 , email=>[email protected] , phone=>1353777303 ); //$post_data = implode(&,$fields); //open connection $ch = curl_init() ; //set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL,$url) ; curl_setopt($ch, CURLOPT_POST,count($fields)) ; // 啟用時會發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 curl_setopt($ch, CURLOPT_POSTFIELDS,$fields); // 在HTTP中的"POST"操作。如果要傳送一個文件,需要一個@開頭的文件名 ob_start(); curl_exec($ch); $result = ob_get_contents() ; ob_end_clean(); echo $result; //close connection curl_close($ch) ; ?> Php代碼 if($_GET[test]) { print_r($_GET); } if($_POST) { print_r($_POST); } ?> if($_GET[test]) { print_r($_GET); } if($_POST) { print_r($_POST); } ?> 二、http的post實現 Php代碼 $url = http://www.domain.com/api/ ; $fields = array( lname=>justcoding , fname=>phplover , title=>myapi, age=>27 , email=>[email protected] , phone=>1353777303 ); //$post_data = implode(&,$fields); //open connection $ch = curl_init() ; //set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL,$url) ; curl_setopt($ch, CURLOPT_POST,count($fields)) ; // 啟用時會發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 curl_setopt($ch, CURLOPT_POSTFIELDS,$fields); // 在HTTP中的"POST"操作。如果要傳送一個文件,需要一個@開頭的文件名 ob_start(); curl_exec($ch); $result = ob_get_contents() ; ob_end_clean(); echo $result; //close connection curl_close($ch) ; ?> 三. php的curl傳送cookie 兩種方式: 一種是自動: Php代碼 curl_setopt($curlHandle, CURLOPT_COOKIEJAR, cookie.txt ); //保存 curl_setopt($curlHandle, CURLOPT_COOKIEFILE, cookie.txt ); //讀取 curl_setopt($curlHandle, CURLOPT_COOKIEJAR, cookie.txt ); //保存 curl_setopt($curlHandle, CURLOPT_COOKIEFILE, cookie.txt ); //讀取 ?> 這樣COOKIE會自動跟上去. 不過要分兩次,一是先訪問產生cookie,接著連結才能用cookie 例子:Php代碼 function get_curlcuconent2($filename,$referer) { $cookie_jar = tempnam(./tmp,JSESSIONID); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $filename); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //設置文件讀取並提交的cookie路徑 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); $filecontent=curl_exec($ch); curl_close($ch); $ch = curl_init(); $hostname ="www.domain.com"; //$referer="http://www.domain.com/"; curl_setopt($ch, CURLOPT_URL, $filename); curl_setopt($ch, CURLOPT_REFERER, $referer); // 看這裡,你也可以說你從google來 curl_setopt($ch, CURLOPT_USERAGENT, "www.domain.com"); //$request = "JSESSIONID=abc6szw15ozvZ_PU9b-8r"; //設置POST參數 //curl_setopt($ch, CURLOPT_POSTFIELDS, $request); // 上面這句,當然你可以說你是baidu,改掉這裡的值就ok了,可以實現小偷的功能,$_SERVER[HTTP_USER_AGENT] //你也可以自己做個 spider 了,那麼就偽裝這裡的 CURLOPT_USERAGENT 吧 //如果你要把這個程序放到linux上用php -q執行那也要寫出具體的$_SERVER[HTTP_USER_AGENT],偽造的也可以 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   |
2 樓住戶:jack 發表時間:2015-12-07 | [檢舉] |
CULR的使用方法(POST) // 建立CURL連線 $ch = curl_init(); // 設定擷取的URL網址 curl_setopt($ch, CURLOPT_URL, "http://localhost/SamplePath?SomeVar=test"); //強制轉為UTF-8 curl_setopt($ch,CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded; charset=utf-8")); //將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //設定要傳的 變數A=值A & 變數B=值B (中間要用&符號串接) $PostData = "a=abc&b=def"; //設定CURLOPT_POST 為 1或true,表示要用POST方式傳遞 curl_setopt($ch, CURLOPT_POST, 1); //CURLOPT_POSTFIELDS 後面則是要傳接的POST資料。 curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData); // 執行 $temp=curl_exec($ch); // 關閉CURL連線 curl_close($ch) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 // 建立CURL連線 $ch = curl_init(); // 設定擷取的URL網址 curl_setopt($ch, CURLOPT_URL, "http://localhost/SamplePath?SomeVar=test"); //強制轉為UTF-8 curl_setopt($ch,CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded; charset=utf-8")); //將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //設定要傳的 變數A=值A & 變數B=值B (中間要用&符號串接) $PostData = "a=abc&b=def"; //設定CURLOPT_POST 為 1或true,表示要用POST方式傳遞 curl_setopt($ch, CURLOPT_POST, 1); //CURLOPT_POSTFIELDS 後面則是要傳接的POST資料。 curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData); // 執行 $temp=curl_exec($ch); // 關閉CURL連線 curl_close($ch) 以上參考:http://expect7.pixnet.net/blog/post/36428081-%5B%E7%A8%8B%E5%BC%8F%5D%5Bphp%5D-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8php-curl%EF%BC%8C%E5%9F%BA%E7%A4%8E%E6%95%99%E5%AD%B8%E3%80%82 另外要存取的網址如果是有SSL協定的,請加上這2個 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); 1 2 3 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); 即可跳過驗證網站 |