php调接口都是通过curl来完成的。
创新互联公司是一家专业提供文圣企业网站建设,专注与成都网站制作、网站设计、H5建站、小程序制作等业务。10年已为文圣众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
下面是我项目中的一个方法:
$url 是要post的地址
$params 是参数,格式array('参数1'='参数1值','参数2'='参数2值')
$header 请求头,如果模拟浏览器访问需要
$timeout 超时时间
//公共获取指定网页内容
function curl($url,$params = array(),$header = array(),$timeout = 180){
if(empty($url)) return $url;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);//请求url地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header ); //构造IP
if(!empty($params) count($params) 0){
curl_setopt($curl, CURLOPT_POST, true);
//Request Payload格式数据
if(isset($params['is_json']) $params['is_json'] === true){
unset($params['is_json']);
$params = json_encode($params);
}else{
$params = http_build_query($params);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
}
//curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 只信任CA颁布的证书
//curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
// 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: "));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
//curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp");// //写入cookie信息
//setcookie('cookie_jar', $cookie_jar); //保存cookie路径
$data = curl_exec($curl); //执行
curl_close($curl);
return $data;
}
办法很多:
第一种:GET(就是URL,也就是链接上带有参数),例子:
1.php(第一个页面)
a href="2.php?arr=abc"传递get数组名为arr,值是abc,传递到2.php页面
/a
看到?arr=abc了吧,这就是参数了,如果有两个呢:a href="abc.php?abc=abc123=123"传递get数组名为abc,值是abc
/a
用这个隔开,当然啦,在网页上看就是
2.php(第二个页面)
?php
echo $_GET['abc'];
//输出传递过来的值
-------------------------------------------------------------------------
第二个办法是:POST,表单提交,依旧是给例子:
form name="form1" method="post" action="2.php"
method的意思是以post方式提交到2.php,action的意思是动作,method是类型
随便输一个:
label
input type="text" name="val" /
input是html的标签,类型是文本域(输入文字),名字是val(后台用于接收的名称)
/label
p
label
input type="submit" name="Submit" value="提交" /
/label
/p
/form
2.php(第二个页面)
?php
echo $_POST['val'];
//输出上一个页面提交过来的val文本域的值。
?
-------------------------------------------------------------------------------------------
第三个办法是:SESSION,会话。还是给例子(注意,SESSION是全局变量,也就是说,它只要被声明,在所有页面都是可用的,前提是你不关闭网页或者没有到SESSION的生命周期。而POST和GET只要php执行完毕就会立刻被释放,也就没有了。):
1.php
?php
session_start();
//会话开始,这样你才可以调用session
$_SESSION['val']='123';
//直接声明全局变量val的值等于123
echo $_SESSION['val'];
?
a href="2.php"跳转到第二个页面去看看。
/a
2.php
?php
session_start();
echo $_SESSION['val'];
//直接输出全局变量val.
?
--------------------------------------------------------------------------------
最后一个办法,cookie。饼干,哈哈不过呢,这个办法不好用,因为cookie是存放在客户端上(也是全局变量),session是存放在服务器上。这是两者唯一的不同
然后捏,我也没用过cookies,所以呢。我只能百度一个给你咯,调用办法一样的$_COOKIE['名称']
?php
setcookie("user", "Alex Porter", time()+3600);
//创建一个名为user的cookie变量,它的值是Alex Porter。它将在一个小时以后过期,也就是不能访问了
echo $_COOKIE['user'];
//你还要刷新一下页面才可以生效= =。。
?
?
表单直接传递,代码如下!
创建go.php 文件中的代码如下!
?php
@$name = $_POST['name'];
if(!empty($name)){
echo $name;
}else{
echo 'form action="go.php" method="post"
input type="text" name="name"
button提交/button
/form';
}
?
代码解释
@$name = $_POST['name'];
@错误抑制
1、常见变量$name = post过来的name值
2、empty($name)检查是否为空,在前面加上!表示不为空,不为空就显示$name的值
3、为空显示表单
4、action="go.php"表示表单填写的值将传递到,go.php
5、method="post" 表示传递方式为post
6、input type="text" name="name"文本输入框
7、button提交/button 提交按钮
通过session来储存
?php
session_start();
$_SESSION['username'] = "userName";
?
在其它页面直接取出就行了
?
session_start();
echo $_SESSION['username'];
?
通过url传向其它页面传递参数
other.php?user=xxx
或在php重定向到其它页面时
$username = "xxx";
$home_url = 'logIn.php?user='.$username;
header('Location:'.$home_url);
其它页面用$_GET["user"]来接收
3.通过表单向其它页面传送参数
其它页面用$_POST["user"]来接收