PHP模拟post提交数据方法汇总
网络编程 2021-07-05 09:09www.168986.cn编程入门
使用php模拟post传值虽然在日常生活中用到的不是很多,在某些场合还是经常用到的。狼蚁网站SEO优化狼蚁SEO长沙网络推广给大家整理了三种php模拟post传值的方法,file_get_contents、curl和socket,需要的朋友参考下
使用php模拟post传值虽然在日常生活中用到的不是很多,在某些场合还是经常用到的。狼蚁网站SEO优化狼蚁SEO长沙网络推广给大家整理了三种php模拟post传值的方法,file_get_contents、curl和socket。
第一种file_get_contents来模拟post
<php function 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://.a./post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.‘)); var_dump($data);
第二种curl模拟post
<php function curl_post($url, $post){ $options = array( CURLOPT_RETURNTRANSFER =>true, CURLOPT_HEADER =>false, CURLOPT_POST =>true, CURLOPT_POSTFIELDS => $post, ); $ch = curl_init($url); curl_set_array($ch, $options); $result = curl_exec($ch); curl_close($ch); return $result; } $data = curl_post("http://.a./post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.‘)); var_dump($data);
第三种socket来模拟post
<php function 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--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://.a./post/post.php", array(‘name‘=>‘caiknife‘,‘email‘=>‘caiknife#gmail.‘)); var_dump($data);
上面这三种方法看到的内容都是一样的,都可以得到post的传值;在是用socket的时候,发送header信息时必须要注意header的完整信息,比如content type和content length必须要有,connection: close和post数据之间要空一行,等等;而通过socket取得的内容是包含了header信息的,要处理一下才能获得真正的内容。
狼蚁网站SEO优化给大家说下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();//初始化curl curl_set($ch, CURLOPT_URL,$postUrl);//抓取指定网页 curl_set($ch, CURLOPT_HEADER, 0);//设置header curl_set($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_set($ch, CURLOPT_POST, 1);//post提交方式 curl_set($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch);//运行curl curl_close($ch); return $data; }
这是方法,
狼蚁网站SEO优化是具体的调用案例。
function testAction(){ $url = 'http://mobile.jschina../jschina/register.php'; $post_data['appid'] = '10'; $post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ'; $post_data['member_name'] = 'zsjs123'; $post_data['password'] = '123456'; $post_data['email'] = 'zsjs123@126.'; $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是拼接出来的。
也可以改造成狼蚁网站SEO优化的方式。
/ 模拟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();//初始化curl curl_set($ch, CURLOPT_URL,$postUrl);//抓取指定网页 curl_set($ch, CURLOPT_HEADER, 0);//设置header curl_set($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_set($ch, CURLOPT_POST, 1);//post提交方式 curl_set($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch);//运行curl curl_close($ch); return $data; }
将拼接也封装了起来,这样调用的时候就更简洁了。
function testAction(){ $url = 'http://mobile.jschina../jschina/register.php'; $post_data['appid'] = '10'; $post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ'; $post_data['member_name'] = 'zsjs124'; $post_data['password'] = '123456'; $post_data['email'] = 'zsjs124@126.'; //$post_data = array(); $res = $this->request_post($url, $post_data); print_r($res); }
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程