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 相关文章推荐
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
如何使用php实现评委评分器
Jul 31 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP 采集程序 常用函数
2008/12/18 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python入门篇之列表和元组
2014/10/17 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
Python的动态重新封装的教程
2015/04/11 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
pytorch构建多模型实例
2020/01/15 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
python palywright库基本使用
2021/01/21 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
个人评价范文分享
2014/01/11 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
Python如何将list中的string转换为int
2022/07/15 Ruby