<?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. Hdoj 2036.改革春风吹满地 题解

    Problem Description " 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一亩三分地. 谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次 ...

  2. portainer图形化监控

    步骤1,在Swarm集群中创建一个新的覆盖网络:$ docker network create --driver overlay --attachable portainer_agent_networ ...

  3. PHP日志切割shell

    #!/bin/bash#此脚本用于自动分割php日志,error.log#每天00:01执行此脚本 将前一天的errors.log重命名为errors-xxxx-xx-xx.log格式,并重新打开日志 ...

  4. 洛谷 P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】

    被自己学校OJ的毒瘤测评姬卡到自闭 Hash+栈+优化暴力 其实思路也很简单,就是把单词存进一个结构体,记录其哈希值和长度,然后就可以开始匹配了 但是,理论复杂度很高,为\(O(n*length)\) ...

  5. [ZJOI2016]大森林(LCT)

    题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种 ...

  6. 低电平ViL

    低电平 编辑 低电平(Vil)指的是保证逻辑门的输入为低电平时所允许的最大输入低电平,当输入电平低于Vil时,则认为输入电平为低电平.   中文名 低电平 外文名 Vil 主要应用 测量电缆和保护连接 ...

  7. Servlet -- 重定向

    重定向的两种方式: 1: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws S ...

  8. MySQL命令,一篇文章替你全部搞定

    MySQL命令,一篇文章替你全部搞定 MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又 ...

  9. jenkins发版svn

    1.在mac上直接安装Jenkins,下载地址 : 2.安装插件:系统管理-->插件管理 publish over ssh Exec command: cd /usr/local/apache- ...

  10. (四点共面) 51nod1265 四点共面

    1265 四点共面 1 秒 131,072 KB 0 分 基础题   给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...