php模拟post传值在日常的工作中用到的不是很多,但是在某些特定的场合还是经常用到的。

下面,我整理了三种php模拟post传值的方法,file_get_contents、curl和socket。

第一种:file_get_contents来模拟post

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://www.a.com/post/post.php", array('name'=>'caiknife', 'email'=>'caiknife#gmail.com'));

var_dump($data);

第二种:curl模拟post

function 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

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 = <<

POST {$urls['path']} HTTP/1.1

Host: {$urls['host']}

Content-Type: application/x-www-form-urlencoded

Content-Length: {$length}

Connection: close

{$post}

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 psot传值_三种方法教你如何用PHP模拟post提交数据相关推荐

  1. python控制示波器获取波形_三种方法教你用示波器快速捕获异常

    万事开头难!当你想用示波器来分析问题时,你一定有想过,我要如何才能把问题抓下来?当然,只有抓下来之后,才能进行后面种种的分析,否则一切都是空谈.本文将带你用三种最好用的方法将异常抓下来. 一.滚动模式 ...

  2. rust矿洞绳子怎么爬下_三种方法教你如何寻找矿洞

    矿洞是一个可以在其中找到大量资源的地方,当然,也有可能只是一个小洞穴而已.有时你可以在地表找到它们,其他的则深埋地下.下面告诉你如何轻松找到它们(不然就不停的往下挖吧) 地表矿洞入口 在探索地表时你常 ...

  3. 三种方法教你开启/关闭win10系统唤醒睡眠模式时需要登录的教程

    Windows系统的睡眠设置给我们带来了极大的方便,因为使用睡眠设置可以保存我们电脑的当前工作状态,再次唤醒睡眠模式时我们可以接着当前的工作状态继续操作,但默认情况下,系统处于安全考虑,当我们从睡眠模 ...

  4. PDF如何翻译成中文?三种方法教你怎样翻译PDF上的文字

    小伙伴们在学习或工作中遇到外国文章时是不是会先翻译成中文再阅读呢?如果文章是word或者txt格式,我们可以直接复制文字进行翻译.但是有些文章为了看起来美观可能会生成PDF格式,我们想翻译的话,就需要 ...

  5. mac os 卸载java_三种方法教你在苹果Mac OS X系统中卸载软件

    刚刚接触mac系统的用户们因为太过陌生,总会遇到很多问题.比如,近来就有一些朋友反馈不懂得该如何卸载mac电脑中的软件,这要怎么办呢?这样会很影响我们的使用.今天小编就来教大家苹果Mac OS X系统 ...

  6. ​Word怎么转换成PDF格式?这三种方法教你如何转换

    怎么把Word文档转换成PDF文件格式呢?相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件,编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送,原因就是PDF格式独有的兼容性和稳定性能 ...

  7. stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动

    具体实现方法实践可用的无外乎三种: 1)使用CH340的DTR和RTS控制单片机断电再上电.点上位机下载按钮的时候,DTR和RTS引脚电平变化. 2)再使用一个单片机,检测串口下载命令流. 3)在程序 ...

  8. pca算法python实现_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  9. PDF文件如何转JPG图片?三种方法教你快速转换

    PDF文件是我们经常用来处理工作的一种文件形式,它的体积很小,不仅占用储存空间很少,而且传输起来也非常方便,但是有时候我们也会根据工作需求来将PDF文件转换成其他类型的文件,为了浏览起来更方便,我们也 ...

最新文章

  1. 【C#串口编程计划】串口编程简介
  2. cin、getline的坑
  3. python EasyGui
  4. java把对象转成json_java 把对象 对象转换成json字符串 | 学步园
  5. 今天,Python信息量很大!
  6. openstack neutron(tap、qvb、qvo详解)(转)
  7. 摩托罗拉再裁员!仍坚守模块化手机业务
  8. 华为方舟编译器 下载 和 LiteOS Studio Setup 2019-04-16.exe SDK下载
  9. SVN分支管理以及跨分支打包
  10. Postgresql数据库介绍15——客户端认证
  11. matlab RFID解码,UHF RFID编码之TPP编码
  12. Error:Undefined symbol DMA_Cmd (referred from dac.o)
  13. 微信扫描自定义二维码关注公众号并登录
  14. iOS直播等开源项目地址收藏
  15. BurpSuite抓包出现建立安全连接失败(Software is Preventing Firefox From Safely Connecting to This Si)
  16. plotwidget横坐标日期_matlab中如何画以日期为横坐标的图?
  17. 学习ES6 The Dope Way Part I:const,let&var
  18. 基于阿里云物联网的体重秤
  19. 揭秘GAM,SGAM和PFS页
  20. 汇正财经靠谱吗?千亿市场,国资云的数字中国底座

热门文章

  1. Git建立远程代码仓库和本地代码仓库
  2. DataList控件DataKeyField以及DataKeys区别
  3. 使用ObjectDataSource 显示数据
  4. PRML-系列一之1.2.4
  5. 【Proxy SwitchyOmega】Chrome安装插件【提示程序包无效:“CRX_HEADER_INVALID“】【解决方法】
  6. 【敏感度,查询,裁剪代码实现】差分隐私代码实现系列(六)
  7. 修改mysql数据库编码(5.7版本)
  8. 决策树模型(ID3/C4.5/CART)原理和底层代码解读 学习笔记
  9. 根据两点之间的连线,计算连线到各坐标轴之间的夹角(角度,弧度)
  10. FastMM FastCode FastMove的使用