麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

PHP模擬post提交數據方法匯總

2024-05-04 23:43:06
字體:
來源:轉載
供稿:網友
使用php模擬post傳值雖然在日常生活中用到的不是很多,但是在某些場合還是經常用到的。下面VeVb武林網小編給大家整理了三種php模擬post傳值的方法,file_get_contents、curl和socket,需要的朋友參考下
 

使用php模擬post傳值雖然在日常生活中用到的不是很多,但是在某些場合還是經常用到的。下面VeVb武林網小編給大家整理了三種php模擬post傳值的方法,file_get_contents、curl和socket。

第一種:file_get_contents來模擬post

<phpfunction file_get_contents_post($url, $post){$options = array(‘http‘=> array(‘method‘=>‘POST‘,‘content‘=> http_build_query($post),),);$result = file_get_contents($url,false, stream_context_create($options));return $result;}$data = file_get_contents_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.com‘));var_dump($data);

第二種:curl模擬post

<phpfunction curl_post($url, $post){$options = array(CURLOPT_RETURNTRANSFER =>true,CURLOPT_HEADER =>false,CURLOPT_POST =>true,CURLOPT_POSTFIELDS => $post,);$ch = curl_init($url);curl_setopt_array($ch, $options);$result = curl_exec($ch);curl_close($ch);return $result;}$data = curl_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.com‘));var_dump($data);

第三種:socket來模擬post

<phpfunction socket_post($url, $post){$urls = parse_url($url);if(!isset($urls[‘port‘])){$urls[‘port‘]=80;}$fp = fsockopen($urls[‘host‘], $urls[‘port‘], $errno, $errstr);if(!$fp){echo "$errno, $errstr";exit();}$post = http_build_query($post);$length = strlen($post);$header =<<<HEADER<span class="Apple-tab-span" style="white-space:pre"></span>POST {$urls[‘path‘]} HTTP/1.1<span class="Apple-tab-span" style="white-space:pre"></span>Host:{$urls[‘host‘]}<span class="Apple-tab-span" style="white-space:pre"></span>Content-Type: application/x-www-form-urlencoded<span class="Apple-tab-span" style="white-space:pre"></span>Content-Length:{$length}<span class="Apple-tab-span" style="white-space:pre"></span>Connection: close<span class="Apple-tab-span" style="white-space:pre"></span>{$post}<span class="Apple-tab-span" style="white-space:pre"></span>HEADER;fwrite($fp, $header);$result =‘‘;while(!feof($fp)){$result .= fread($fp,512);}$result = explode("/r/n/r/n", $result,2);return $result[1];}$data = socket_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.com‘));var_dump($data);

上面這三種方法最后看到的內容都是一樣的,都可以得到post的傳值;但是在是用socket的時候,發送header信息時必須要注意header的完整信息,比如content type和content length必須要有,connection: close和post數據之間要空一行,等等;而通過socket取得的內容是包含了header信息的,要處理一下才能獲得真正的內容。

下面給大家說下php模擬post提交請求,調用接口

/*** 模擬post進行url請求* @param string $url* @param string $param*/function request_post($url = '', $param = '') {if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;$ch = curl_init();//初始化curlcurl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定網頁curl_setopt($ch, CURLOPT_HEADER, 0);//設置headercurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上curl_setopt($ch, CURLOPT_POST, 1);//post提交方式curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);$data = curl_exec($ch);//運行curlcurl_close($ch);return $data;} 

這是方法,

下面是具體的調用案例。

function testAction(){$url = 'http://mobile.jschina.com.cn/jschina/register.php';$post_data['appid'] = '10';$post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ';$post_data['member_name'] = 'zsjs123';$post_data['password'] = '123456';$post_data['email'] = '[email protected]';$o = "";foreach ( $post_data as $k => $v ) { $o.= "$k=" . urlencode( $v ). "&" ;}$post_data = substr($o,0,-1);$res = $this->request_post($url, $post_data); print_r($res);} 

這樣就提交請求,并且獲取請求結果了。一般返回的結果是json格式的。

這里的post是拼接出來的。

也可以改造成下面的方式。

/*** 模擬post進行url請求* @param string $url* @param array $post_data*/function request_post($url = '', $post_data = array()) {if (empty($url) || empty($post_data)) {return false;}$o = "";foreach ( $post_data as $k => $v ) { $o.= "$k=" . urlencode( $v ). "&" ;}$post_data = substr($o,0,-1);$postUrl = $url;$curlPost = $post_data;$ch = curl_init();//初始化curlcurl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定網頁curl_setopt($ch, CURLOPT_HEADER, 0);//設置headercurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上curl_setopt($ch, CURLOPT_POST, 1);//post提交方式curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);$data = curl_exec($ch);//運行curlcurl_close($ch);return $data;}

將拼接也封裝了起來,這樣調用的時候就更簡潔了。

function testAction(){$url = 'http://mobile.jschina.com.cn/jschina/register.php';$post_data['appid'] = '10';$post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ';$post_data['member_name'] = 'zsjs124';$post_data['password'] = '123456';$post_data['email'] = '[email protected]';//$post_data = array();$res = $this->request_post($url, $post_data); print_r($res);}


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美另类视频在线 | 久久精品亚洲欧美日韩精品中文字幕 | 黄色网址电影 | 激情综合婷婷久久 | 羞羞羞羞视频 | 国产成年人网站 | 欧美一级免费在线观看 | 国产91av视频| 美国黄色毛片女人性生活片 | 最新av在线免费观看 | 亚洲精品有限 | 中国女警察一级毛片视频 | 久久久99精品视频 | 老师你怎么会在这第2季出现 | 黄视频网站免费观看 | 末成年女av片一区二区 | 在线天堂中文在线资源网 | 黄色久 | 欧美另类综合 | 欧美精品一区自拍a毛片在线视频 | 午夜av男人的天堂 | 日本高清在线播放 | 国产精品久久久免费观看 | 情侣啪啪网站 | 久久99精品久久久久久秒播放器 | 免费观看三级毛片 | 久久久电影电视剧免费看 | 91短视频在线播放 | 一区二区国产在线 | 人人玩人人爽 | 手机在线看片国产 | 国产视频导航 | 国产一级一国产一级毛片 | 国产羞羞视频在线观看 | 欧美精品久久久久久久多人混战 | 国产一级午夜 | 成人男男视频拍拍拍在线观看 | 亚洲第一视频 | 性生活视频网站 | 毛片久久| 黄视频网站免费在线观看 |