日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 模拟POST请求

發(fā)布時(shí)間:2025/5/22 php 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 模拟POST请求 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 /** 2 * 通過post方式提交表單到指定的url上 3 * @param string host,array data 4 * @return Object 5 */ 6 function posttohost($url, $data) { 7 $url = parse_url($url); 8 if (!$url) return "couldn't parse url"; 9 if (!isset($url['port'])) { $url['port'] = ""; } 10 if (!isset($url['query'])) { $url['query'] = ""; } 11 $encoded = ""; 12 while (list($k,$v) = each($data)) { 13 $encoded .= ($encoded ? "&" : ""); 14 $encoded .= rawurlencode($k)."=".rawurlencode($v); 15 } 16 $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); 17 if (!$fp) return "Failed to open socket to $url[host]"; 18 fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); 19 fputs($fp, "Host: $url[host]\n"); 20 fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); 21 fputs($fp, "Content-length: " . strlen($encoded) . "\n"); 22 fputs($fp, "Connection: close\n\n"); 23 fputs($fp, "$encoded\n"); 24 $line = fgets($fp,1024); 25 if (!preg_match("/^HTTP\/1\.. 200/i", $line)) return; 26 $results = ""; $inheader = 1; 27 while(!feof($fp)) { 28 $line = fgets($fp,1024); 29 if ($inheader && ($line == "\n" || $line == "\r\n")) { 30 $inheader = 0; 31 } 32 elseif (!$inheader) { 33 $results .= $line; 34 } 35 } 36 fclose($fp); 37 return $results; 38 } 39 40 function curlPost($url,$post_data){ 41 $ch = curl_init(); 42 curl_setopt($ch, CURLOPT_URL,$url); 43 // curl_setopt($ch, CURLOPT_HEADER, false); 44 // curl_setopt($ch, CURLOPT_TIMEOUT, 5); 45 // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 46 //啟用時(shí)會(huì)發(fā)送一個(gè)常規(guī)的POST請(qǐng)求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 47 curl_setopt($ch, CURLOPT_POST, true); 48 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 49 curl_setopt($ch,CURLOPT_BINARYTRANSFER,true); 50 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 51 curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data); 52 $info= curl_exec($ch); 53 curl_close($ch); 54 return $info; 55 56 }

?

上面一個(gè)是使用?fsockopen 和curl進(jìn)行post提交,我常用的是fsockopen方式。但是PHP的fsockopen、pfsockopen函數(shù)會(huì)被主機(jī)商禁用,只好使用curl模擬POST提交,上面兩個(gè)都可以完成POST提交,只是為了防范萬一某一個(gè)方法不行,另一個(gè)方法或許就是備用的。

附上生成隨機(jī)數(shù)的方法:

1 /** 2 * 生成隨機(jī)驗(yàn)證碼 3 * @param $length 4 * @return null|string 5 */ 6 function code($length){ 7 $str = null; 8 $strPol = '1234567890ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz'; 9 $max = strlen($strPol)-1; 10 for($i=0;$i<$length;$i++){ 11 $str .= $strPol[rand(0,$max)];//rand($min,$max)生成介于min和max兩個(gè)數(shù)之間的一個(gè)隨機(jī)整數(shù) 12 } 13 return $str; 14 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/fsong/p/5141162.html

總結(jié)

以上是生活随笔為你收集整理的PHP 模拟POST请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。