<?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. BZOJ3456 城市规划 【多项式求ln】

    题目链接 BZOJ3456 题解 真是一道经典好题,至此已经写了分治\(NTT\),多项式求逆,多项式求\(ln\)三种写法 我们发现我们要求的是大小为\(n\)无向联通图的数量 而\(n\)个点的无 ...

  2. Mysql 从入门到遗忘

    高级数据过滤: WHERE AND OR NOT 总是与其他操作符一起使用,用在要过滤的前面. 通配符过滤: LIKE: %相当于正则中的.*?,_相当于正则中的.. $ select id from ...

  3. 自动驾驶技术之——无人驾驶中的CAN总线

    CAN总线在整个无人驾驶系统中有着十分重要的作用.除了在VCU信号需要通过CAN总线进行传输外,无人车上的某些传感器(如雷达.Mobileye)的信号传递也是通过CAN实现的. 前言 本文主要内容是— ...

  4. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  5. Jupyter-Notebook服务器自定义密码

    往期回顾 Anaconda安装:https://www.cnblogs.com/dotnetcrazy/p/9158715.html 基本知识导航篇:https://www.cnblogs.com/d ...

  6. 洛谷P3620 数据备份

    好吧,我一开始说这是个神级数据结构毒瘤题,后来改成神题了. 主要是贪心做法的巧妙转化: 首先发现选择的一对必须相邻,于是我们搞出差分. 然后考虑选取最小值时,最小值两侧的数要么同时选,要么都不选. 然 ...

  7. 洛谷P1731 生日蛋糕

    李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int ...

  8. hdu5306 Explosion

    题目链接 题意 有n个房间,每个房间里面有若干把钥匙,每把钥匙可以打开对应的一扇门.如果手中没有钥匙,就要随机轰炸一个房间来打开这个房间.如果有钥匙,就要去打开这些房间.问期望轰炸次数是多少. 思路 ...

  9. 华为2018软件岗笔试题之第一题python求解分享

    闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...

  10. 使用python制作验证码

    方法一 简单型:使用random模块制作一个随机字母与数字的验证码 import random def make_code(n): res='' for i in range(n): num=str( ...