模拟 POST、GET 请求

 /**
* 模拟post进行url请求
* @param string $url
* @param string $param
*/
protected function requestPOST($url = '', $param = '')
{
if (empty($url) || empty($param)) :
return false;
endif; $timeout = 300;
$postUrl = $url;
$curlPost = $param;
$ch = curl_init();//初始化curl
curl_setopt($ch, CURLOPT_URL,$postUrl); //抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); //提交的数据库
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true); //二进制流
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //设置请求超时时间
$data = curl_exec($ch);//运行curl
curl_close($ch); return $data;
} /**
* 模拟Get进行URL请求
* @param string $url 访问url路径[description]
* @return string
*/
protected function requestGET($url)
{
$curl = curl_init(); //初始化
curl_setopt($curl, CURLOPT_URL, $url); //设置抓取的url
curl_setopt($curl, CURLOPT_HEADER, 1); //设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置获取的信息以文件流的形式返回,而不是直接输出。
$data = curl_exec($curl); //执行命令
curl_close($curl); //关闭URL请求
return $data; //返回获得的数据
}

md5加密数据 添加sign、验证 md5加密数据sign

     // md5加密数据 添加sign
private function md5Encryption($post_data)
{
$post_data['time_stamp'] = time();
ksort($post_data);
$post_data['sign'] = md5( implode('#', $post_data) . '58coin' );
return $post_data;
} // 验证 md5加密数据sign
public function checkMd5Encryption($post_data)
{
// 验证有效期【60秒】
if( ($post_data['time_stamp']+60) < time() ):
echo json_encode(['code'=>400,'msg'=>'overtime!', 'data'=>'']);
die;
endif;
// 验证签名
$sign = $post_data['sign'];
unset($post_data['sign']);
ksort($post_data);
if($sign != md5( implode('#', $post_data) . '58coin' ) ):
echo json_encode(['code'=>400,'msg'=>'sign error!', 'data'=>'']);
die;
endif;
}

最新文章

  1. Vue.js学习笔记(8)拖放
  2. centos7.2下编译安装git
  3. python学习笔记-Day6(2)
  4. 计算Excel中的Sheet个数
  5. 《C#并行编程高级教程》第8章 线程池 笔记
  6. python初准备:安装easy_install和pip
  7. Java并发——线程安全、线程同步、线程通信
  8. hdu 1242 dfs/bfs
  9. Struts2学习笔记(三):result配置的各项视图转发类型
  10. [转] boost::any的用法、优点和缺点以及源代码分析
  11. supervisor python开发的进程管理工具
  12. Arachnid包含一个简单的HTML剖析器能够分析包含HTML内容的输入流
  13. [Elasticsearch] 分布式文件存储
  14. iOS微信运动 刷分
  15. 新概念英语(1-25)Mrs. Smith&#39;s Kitchen
  16. 深度学习实战-强化学习-九宫格 当前奖励值 = max(及时奖励 + 下一个位置的奖励值 * 奖励衰减)
  17. 分析easyswoole3.0源码,服务启动为例(二)
  18. 千人基因组(1000 Genomes)提取群体(population)或者样本(sample ID)信息
  19. linux磁盘空间占满问题快速定位并解决
  20. linux 命令失效

热门文章

  1. Java 语言的类、属性、方法各有哪些修饰符?简述各修饰符的区别
  2. STP基本概念及实验
  3. 图解Http阅读笔记(二)
  4. indexOf与includes的区别
  5. 《剑指offer》面试题10 二进制中1的个数 Java版
  6. luogu P3657 (NOIP2017) 跳房子(二分+DP+单调队列)
  7. 攻防世界--insanity
  8. axios 利用new FileReader() 下载文件获取返回的错误信息
  9. VS code 生成html模板快捷键
  10. JSTL 使用 c:forEach 累加变量值