php調(diào)接口都是通過curl來完成的。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供文圣企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、H5建站、小程序制作等業(yè)務(wù)。10年已為文圣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
下面是我項(xiàng)目中的一個(gè)方法:
$url 是要post的地址
$params 是參數(shù),格式array('參數(shù)1'='參數(shù)1值','參數(shù)2'='參數(shù)2值')
$header 請(qǐng)求頭,如果模擬瀏覽器訪問需要
$timeout 超時(shí)時(shí)間
//公共獲取指定網(wǎng)頁內(nèi)容
function?curl($url,$params?=?array(),$header?=?array(),$timeout?=?180){
if(empty($url))?return?$url;
$curl?=?curl_init();
curl_setopt($curl,?CURLOPT_URL,$url);//請(qǐng)求url地址
curl_setopt($curl,?CURLOPT_HTTPHEADER?,?$header?);??//構(gòu)造IP
if(!empty($params)??count($params)??0){
curl_setopt($curl,?CURLOPT_POST,?true);
//Request?Payload格式數(shù)據(jù)
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);//是否返回響應(yīng)頭信息
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?true);//是否將結(jié)果返回
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根證書(用來驗(yàn)證的網(wǎng)站證書是否是CA頒布)??
//curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?2);?//?檢查證書中是否設(shè)置域名,并且是否與提供的主機(jī)名匹配??
//?從證書中檢查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腳本在成功連接服務(wù)器前等待多久(連接成功之后就會(huì)開始緩沖輸出),這個(gè)參數(shù)是為了應(yīng)對(duì)目標(biāo)服務(wù)器的過載,下線,或者崩潰等可能狀況;
curl_setopt($curl,?CURLOPT_TIMEOUT,?$timeout);//用來告訴成功PHP腳本,從服務(wù)器接收緩沖完成前需要等待多長(zhǎng)時(shí)間。如果目標(biāo)是個(gè)巨大的文件,生成內(nèi)容速度過慢或者鏈路速度過慢,這個(gè)參數(shù)就會(huì)很有用。
//?自動(dòng)設(shè)置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);?//執(zhí)行????
curl_close($curl);
return?$data;
}
辦法很多:
第一種:GET(就是URL,也就是鏈接上帶有參數(shù)),例子:
1.php(第一個(gè)頁面)
a href="2.php?arr=abc"傳遞get數(shù)組名為arr,值是abc,傳遞到2.php頁面
/a
看到?arr=abc了吧,這就是參數(shù)了,如果有兩個(gè)呢:a href="abc.php?abc=abc123=123"傳遞get數(shù)組名為abc,值是abc
/a
用這個(gè)隔開,當(dāng)然啦,在網(wǎng)頁上看就是
2.php(第二個(gè)頁面)
?php
echo $_GET['abc'];
//輸出傳遞過來的值
-------------------------------------------------------------------------
第二個(gè)辦法是:POST,表單提交,依舊是給例子:
form name="form1" method="post" action="2.php"
method的意思是以post方式提交到2.php,action的意思是動(dòng)作,method是類型
隨便輸一個(gè):
label
input type="text" name="val" /
input是html的標(biāo)簽,類型是文本域(輸入文字),名字是val(后臺(tái)用于接收的名稱)
/label
p
label
input type="submit" name="Submit" value="提交" /
/label
/p
/form
2.php(第二個(gè)頁面)
?php
echo $_POST['val'];
//輸出上一個(gè)頁面提交過來的val文本域的值。
?
-------------------------------------------------------------------------------------------
第三個(gè)辦法是:SESSION,會(huì)話。還是給例子(注意,SESSION是全局變量,也就是說,它只要被聲明,在所有頁面都是可用的,前提是你不關(guān)閉網(wǎng)頁或者沒有到SESSION的生命周期。而POST和GET只要php執(zhí)行完畢就會(huì)立刻被釋放,也就沒有了。):
1.php
?php
session_start();
//會(huì)話開始,這樣你才可以調(diào)用session
$_SESSION['val']='123';
//直接聲明全局變量val的值等于123
echo $_SESSION['val'];
?
a href="2.php"跳轉(zhuǎn)到第二個(gè)頁面去看看。
/a
2.php
?php
session_start();
echo $_SESSION['val'];
//直接輸出全局變量val.
?
--------------------------------------------------------------------------------
最后一個(gè)辦法,cookie。餅干,哈哈不過呢,這個(gè)辦法不好用,因?yàn)閏ookie是存放在客戶端上(也是全局變量),session是存放在服務(wù)器上。這是兩者唯一的不同
然后捏,我也沒用過cookies,所以呢。我只能百度一個(gè)給你咯,調(diào)用辦法一樣的$_COOKIE['名稱']
?php
setcookie("user", "Alex Porter", time()+3600);
//創(chuàng)建一個(gè)名為user的cookie變量,它的值是Alex Porter。它將在一個(gè)小時(shí)以后過期,也就是不能訪問了
echo $_COOKIE['user'];
//你還要刷新一下頁面才可以生效= =。。
?
?
表單直接傳遞,代碼如下!
創(chuàng)建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'];
@錯(cuò)誤抑制
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來儲(chǔ)存
?php
session_start();
$_SESSION['username'] = "userName";
?
在其它頁面直接取出就行了
?
session_start();
echo?$_SESSION['username'];
?
通過url傳向其它頁面?zhèn)鬟f參數(shù)
other.php?user=xxx
?或在php重定向到其它頁面時(shí)
$username = "xxx";
$home_url = 'logIn.php?user='.$username;
header('Location:'.$home_url);
其它頁面用$_GET["user"]來接收
3.通過表單向其它頁面?zhèn)魉蛥?shù)
其它頁面用$_POST["user"]來接收