php生成curl命令行的方法


Posted in PHP onDecember 14, 2015

本文实例讲述了php生成curl命令行的方法。分享给大家供大家参考,具体如下:

示例:
curl "http://localhost/other/serverInfo.php?dd=ddd" -H "Host:localhost" -H "Connection:keep-alive" -H "Cache-Control:max-age=0" -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36" -H "DNT:1" -H "Accept-Encoding:deflate, sdch" -H "Accept-Language:zh-CN,zh;q=0.8,en;q=0.6" -H "Cookie:name=richie; email=richie@qq.com"

具体代码如下:

function getCurlCommand()
{
 try {
  if (php_sapi_name() == 'error cli'){
   throw new Exception("cli");
  }
  $curlCommand = 'curl ';
  $postData = $getData = '';
  if($_GET) {
   $gets = http_build_query($_GET);
   $getData .= strpos($curlCommand, '?') ? '&' . $gets : '?' . $gets;
  }
  if ($_SERVER['REQUEST_METHOD'] == 'POST' ) {
   $posts = http_build_query($_POST);
   $postData = ' -d "' . $posts . '"';
  }
  $path = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : $_SERVER['PHP_SELF'];
  $curlCommand .= '"' . "http://{$_SERVER['HTTP_HOST']}" . $path . $getData . '"';
  if ($postData) {
   $curlCommand .= $postData;
  }
  $headers = array();
  if (function_exists('getallheaders')) {
   $headers = getallheaders();
  } else {
   foreach ($_SERVER as $name => $value) {
    if (substr($name, 0, 5) == 'HTTP_') {
     $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
    }
   }
  }
  foreach ($headers as $key => $value) {
   if($key == 'Accept-Encoding') $value = str_replace('gzip, ','',$value);
   $curlCommand .= ' -H "' . $key . ':' . $value . '"';
  }
  return $curlCommand;
 } catch (Exception $e) {
  return $e->getMessage();
 }
}
echo getCurlCommand();

希望本文所述对大家php程序设计有所帮助。

PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
php用数组返回无限分类的列表数据的代码
Aug 08 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
php查找字符串出现次数的方法
Dec 01 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
PHP工厂模式的日常使用
Mar 20 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
php+laravel 扫码二维码签到功能
May 15 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 #PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 #PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 #PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 #PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 #PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 #PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 #PHP
You might like
php 方便水印和缩略图的图形类
2009/05/21 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
深入PHP FTP类的详解
2013/06/13 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
javascript 函数使用说明
2010/04/07 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Python如何根据时间序列数据作图
2020/05/12 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
小学教师自我鉴定
2013/11/07 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
教师节班会开场白
2015/06/01 职场文书
消防演习感想
2015/08/10 职场文书