<?php
ini_set('display_errors',); //错误信息
ini_set('display_startup_errors',); //php启动错误信息
ini_set('date.timezone','Asia/Shanghai');
error_reporting(-); //打印出所有的 错误信息
ini_set('error_log', dirname(__FILE__) . '/error_log----------------.txt'); //将出错信息输出到一个文本文件
/**
* 接受用户登陆时提交的验证码
* //1. 获取到用户提交的验证码
* //2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交
* // strtolower() 转小写
*/
session_start();
$dataObj = json_decode($HTTP_RAW_POST_DATA);
$code = '';
$data = $dataObj->captcha;
$msg = '';
if(strtolower($_SESSION["captcha"]) != strtolower($dataObj->captcha)){
$code = '-2';
$msg = '不正确- '.strtolower($_SESSION["captcha"]);
}else{
$code = '2';
$msg = '正确';
$jsonData = json_encode(array(
'custName' => $dataObj->custName,
'contName' => $dataObj->contName,
'mobile' => $dataObj->mobile,
'mailAddress' => $dataObj->mailAddress,
'web' => $dataObj->web,
'fax' => $dataObj->fax,
'tel' => $dataObj->tel,
'addr' => $dataObj->addr,
'remarks' => $dataObj->remarks,
));
$url='https://aapi.baidu.com/v2/officialWebsite/enquiry';
$data = post_curls($url,$jsonData);//返回json
}
$json = array (
'code'=>$code,
'data'=>$data,
'msg'=>$msg
);
echo json_encode($json);
 
/**
* POST请求https接口返回内容
* @paramstring $url [请求的URL地址]
* @paramstring $post [请求的参数]
* @returnstring
*/
function post_curls($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, ); // 对认证证书来源的检查
// curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, ); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, ); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, ); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, ); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, ); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, ); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据,json格式
}
?>

// code example

// html input 加验证码

<input type="text" name="captcha" id="captcha" placeholder="验证码" maxlength="">
<img src="captcha.php" onclick="this.src='captcha.php?' + Math.random();" width="" height=""> // jquery ajax
$('#btn_submit').click(function () {
var url = 'api.php/?action=reg';
var dataObj = {"mobile": "", "addr": "",
"remarks": ""
}
// console.log(dataObj)
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dataObj),
dataType: "json",
success: function (message) {
console.log(message)
if (message.code == '') {
$('#registerWrap .reg_success').show();
}else{ }
},
error: function (message) {
console.log(message)
alert('注册失败');
}
}); }) // api.php
<?php
ini_set('display_errors',); //错误信息
ini_set('display_startup_errors',); //php启动错误信息
ini_set('date.timezone','Asia/Shanghai');
error_reporting(-); //打印出所有的 错误信息
ini_set('error_log', dirname(__FILE__) . '/error_log----------------.txt'); //将出错信息输出到一个文本文件
/**
* 接受用户登陆时提交的验证码
* //1. 获取到用户提交的验证码
* //2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交
* // strtolower() 转小写
*/
session_start(); $dataObj = json_decode($HTTP_RAW_POST_DATA); $code = '';
$data = $dataObj->captcha;
$msg = ''; if(strtolower($_SESSION["captcha"]) != strtolower($dataObj->captcha)){
$code = '-2';
$msg = '不正确- '.strtolower($_SESSION["captcha"]);
}else{
$code = '';
$msg = '正确'; $jsonData = json_encode(array(
'custName' => $dataObj->custName,
'contName' => $dataObj->contName,
'mobile' => $dataObj->mobile,
'mailAddress' => $dataObj->mailAddress,
'web' => $dataObj->web,
'fax' => $dataObj->fax,
'tel' => $dataObj->tel,
'addr' => $dataObj->addr,
'remarks' => $dataObj->remarks,
));
$url='https://api.baidu.com/v2/officialWebsite/enquiry'; // 跨域第三方接口
$data = post_curls($url,$jsonData);//返回json
} $json = array (
'code'=>$code,
'data'=>$data,
'msg'=>$msg
);
echo json_encode($json); /**
* POST请求https接口返回内容
* @param string $url [请求的URL地址]
* @param string $post [请求的参数]
* @return string
*/
function post_curls($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, ); // 对认证证书来源的检查
// curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, ); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, ); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, ); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, ); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, ); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, ); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据,json格式
}
?> // captcha.php
<?php
/**
* 字母+数字的验证码生成
*/
// 开启session
session_start();
//1.创建黑色画布
$image = imagecreatetruecolor(, ); //2.为画布定义(背景)颜色
$bgcolor = imagecolorallocate($image, , , ); //3.填充颜色
imagefill($image, , , $bgcolor); // 4.设置验证码内容 //4.1 定义验证码的内容
$content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; //4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
$captcha = "";
for ($i = ; $i < ; $i++) {
// 字体大小
$fontsize = ;
// 字体颜色
$fontcolor = imagecolorallocate($image, mt_rand(, ), mt_rand(, ), mt_rand(, ));
// 设置字体内容
$fontcontent = substr($content, mt_rand(, strlen($content)), );
$captcha .= $fontcontent;
// 显示的坐标
$x = ($i * / ) + mt_rand(, );
$y = mt_rand(, );
// 填充内容到画布中
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION["captcha"] = $captcha; //4.3 设置背景干扰元素
for ($$i = ; $i < ; $i++) {
$pointcolor = imagecolorallocate($image, mt_rand(, ), mt_rand(, ), mt_rand(, ));
imagesetpixel($image, mt_rand(, ), mt_rand(, ), $pointcolor);
} //4.4 设置干扰线
for ($i = ; $i < ; $i++) {
$linecolor = imagecolorallocate($image, mt_rand(, ), mt_rand(, ), mt_rand(, ));
imageline($image, mt_rand(, ), mt_rand(, ), mt_rand(, ), mt_rand(, ), $linecolor);
} //5.向浏览器输出图片头信息
header('content-type:image/png'); //6.输出图片到浏览器
imagepng($image); //7.销毁图片
imagedestroy($image);
?>

PHP 调第三方跨域接口示例的更多相关文章

  1. IE8浏览器跨域接口访问异常的解决办法

    IE8版本以下浏览器绝对是一个神奇的存在,忙碌好久,万事具备,居然在ajax调用接口的时候直接爆炸 陈述一下问题 首先是有这样一个接口,请求类型POST,入参JSON,出参JSON,jQuery aj ...

  2. 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口

    从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...

  3. asp.net中WebResponse 跨域访问示例

    前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库.当时,想当然,觉得很简 ...

  4. 纯 js 实现跨域接口调用 jsonp

    开发「bufpay.com 个人即时到账收款平台」的时候,支付页面需要 poll轮询 查询订单状态. bufpay 支付接口如下: 接口地址:https://bufpay.com/api/pay/ai ...

  5. 如何让谷歌浏览器支持跨域访问(AJAX) AJAX调试跨域接口

    以谷歌最新版本为例(2018) 1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData 2.在属性页面中的目标输入框里加上   --disable-web-security -- ...

  6. .net跨域接口服务器端配置

    在项目Config文件中添加一下节点配置 <system.webServer> <httpProtocol> <customHeaders> <add nam ...

  7. ajax实现jsonp跨域接口

    HTML页面代码: <script type="text/javascript"> function UrlSearch(){ var name,value; var ...

  8. Java调第三方的webservice接口

    1.eclipse中add dynamic web project 2.选中项目右键new——> webservice ——> webservice client 在service def ...

  9. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

随机推荐

  1. NOIP经典基础模板总结

    date: 20180820 spj: 距离NOIP还有81天 目录 STL模板: priority_queue 的用法:重载<,struct cmpqueue 的用法 stack 的用法vec ...

  2. 【拓扑排序】烦人的幻灯片(slides)

    1395:烦人的幻灯片(slides) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 753     通过数: 416 [题目描述] 李教授将于今天下午作一次非常重 ...

  3. LVM-COW写实备份

    [root@localhost ~]# fdisk -l /dev/sdb /dev/sdc | grep "LVM"/dev/sdb1 1 9660 77593918+ 8e L ...

  4. NOIp2018 复习笔记

    其实也没什么用啦,只是来占个坑 OI知识 3367 [模板]并查集 就这么做啊 没什么其他的 就是可以做tarjan LCA和Kruskal的操作 //关键函数 int getfa(int t) { ...

  5. bzoj3796(后缀数组)(SA四连)

    bzoj3796Mushroom追妹纸 题目描述 Mushroom最近看上了一个漂亮妹纸.他选择一种非常经典的手段来表达自己的心意——写情书.考虑到自己的表达能力,Mushroom决定不手写情书.他从 ...

  6. angular与vue的应用对比

    因为各种笔试面试,最近都没时间做一些值得分享的东西,正好复习一下vue技术栈,与angular做一下对比. angular1就跟vue比略low了. 1.数据绑定 ng1 ng-bind,{{ sco ...

  7. IOS11 底部输入框被手机输入法遮住

    前言: 最近在做一个评论的功能,前端页面中输入评论框在页面的最底部,在ios11中手机的输入法会遮住那个输入框,在其它手机上正常. 一直在找有关的解决方案,虽然最终也没有解决,还是记录过程,供参考. ...

  8. java面试——问题回溯

    背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误. 迪普科技 Linux服务器下的top命令 #动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / to ...

  9. 怎么自行HTTP的POST包头,需要使用json

    http://bbs.csdn.net/topics/390674431 不理解你为什么这么传 post的格式如下:POST / HTTP/1.1Host: www.wrox.comUser-Agen ...

  10. springmvc启动问题

    1.resource项目 freemarker.template.TemplateNotFoundException: Template not found for name "index/ ...