PHP 调第三方跨域接口示例
// 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 调第三方跨域接口示例的更多相关文章
- IE8浏览器跨域接口访问异常的解决办法
IE8版本以下浏览器绝对是一个神奇的存在,忙碌好久,万事具备,居然在ajax调用接口的时候直接爆炸 陈述一下问题 首先是有这样一个接口,请求类型POST,入参JSON,出参JSON,jQuery aj ...
- 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口
从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...
- asp.net中WebResponse 跨域访问示例
前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库.当时,想当然,觉得很简 ...
- 纯 js 实现跨域接口调用 jsonp
开发「bufpay.com 个人即时到账收款平台」的时候,支付页面需要 poll轮询 查询订单状态. bufpay 支付接口如下: 接口地址:https://bufpay.com/api/pay/ai ...
- 如何让谷歌浏览器支持跨域访问(AJAX) AJAX调试跨域接口
以谷歌最新版本为例(2018) 1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData 2.在属性页面中的目标输入框里加上 --disable-web-security -- ...
- .net跨域接口服务器端配置
在项目Config文件中添加一下节点配置 <system.webServer> <httpProtocol> <customHeaders> <add nam ...
- ajax实现jsonp跨域接口
HTML页面代码: <script type="text/javascript"> function UrlSearch(){ var name,value; var ...
- Java调第三方的webservice接口
1.eclipse中add dynamic web project 2.选中项目右键new——> webservice ——> webservice client 在service def ...
- JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
随机推荐
- [luogu1452]Beauty Contest【凸包+旋转卡壳】
题目大意 求出平面最远点对距离的平方. 分析 此题我wa了好久,第一是凸包写错了,后面又是旋转卡壳写错了..自闭3s. 题解应该是旋转卡壳,但是有人用随机化乱搞过掉了Orz. 讲讲正解. 我们先求出所 ...
- Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员
我们经常遇到下面这种问题:没有足够的权限 - 您没有访问这些记录的权限.请联系 Microsoft Dynamics CRM 管理员. 下面将详细介绍下如何解决这种问题:进不了CRM系统:进了CRM ...
- [ZJOI2007]仓库建设(斜率优化)
L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...
- 解决忘记mysql中的root用户密码问题
如果忘了数据库中的root密码,无法登陆mysql. 解决步骤: 1. 使用“--skip-grant-tables”启动数据库 ~]#systemctl stop mysql ~]#mysqld_s ...
- JVM内存模型你只要看这一篇就够了
JVM内存模型你只要看这一篇就够了 我是一只孤傲的鱼鹰 让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这 ...
- iconv: iconv_open(pToCharset, pFromCharset); 的附加参数//IGNORE
今天在转换一个文件时iconv() 老是返回 -1, 提示编码转换失败. 一共 30 多个文件, 原编码都是一样的,为什么有的转换会失败,返回 -1呢? 网上搜索了一下, 找到一个随加参数: //IG ...
- MySQL STR_TO_DATE函数
转: MySQL STR_TO_DATE函数 2017年12月05日 15:41:58 木林森淼 阅读数:23822 版权声明:水平有限,如有补充或更正,望大家评论指正 https://blog. ...
- 第十五节、韦伯局部描述符(WLD,附源码)
纹理作为一种重要的视觉线索,是图像中普遍存在而又难以描述的特征,图像的纹理特征一般是指图像上地物重复排列造成的灰度值有规则的分布.纹理特征的关键在于纹理特征的提取方法.目前,用于纹理特征提取的方法有很 ...
- Tomcat第一个站点介绍
背景 在讨论如何组织源码目录之前,很有必要对现有web站点的组织结构进行测试,特别是2.2版本的API,在服务器版本上是不同的,所以在2.2之后的版本中,所有的服务器版本都要求能够使用标准的压缩web ...
- C内存分配
calloc和realloc与malloc的区别 calloc和realloc的原型如下: void *calloc ( size_t num_elements, size_t element_siz ...