新人求指教原生php如何在瀏覽器中實現(xiàn)curl
<?php
header('Content-type:text');
//驗證服務(wù)器地址的有效性
function check(){
??? //1.將timestamp,nonce,token按字典序排序
?? ??? ?$timestamp = $_GET['timestamp'];
?? ??? ?$nonce = $_GET['nonce'];
?? ??? ?$token = "weixin";
?? ??? ?$signature = $_GET['signature'];
?? ??? ?$echostr = $_GET['echostr'];
//$_GET 變量用于收集來自 method="get" 的表單中的值。從帶有 GET 方法的表單發(fā)送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),并且對發(fā)送的信息量也有限制(最多 100 個字符)
?? ??? ?$array = array( $timestamp,$nonce,$token );
//創(chuàng)建名為 $array 的索引數(shù)組,向它賦三個元素
?? ??? ?sort($array);
?? ??? ?//2.將排序后的三個參數(shù)進行拼接之后再用sha1加密
?? ??? ?$tmpstr = implode('',$array);
//把數(shù)組元素按指定規(guī)則組合為字符串
?? ??? ?$tmpstr = sha1( $tmpstr );
?? ??? ?//3.將加密后的字符串與signature進行對比,判斷該請求是否來自微信
?? ??? ?if( $tmpstr == $signature && $echostr){
??????????? //第一次接入微信api
??????????? echo $echostr;
??????????? exit;
??????? } else{
?????? ??? ?//之后接入api即用戶關(guān)注公眾號和發(fā)送消息
??????????? responseMsg();
??????? }
}
?? ?check();
//接收事件推送并回復(fù)
function responseMsg(){
?? ?
??? //1.獲取微信推送過來的數(shù)據(jù),即post數(shù)據(jù)(為xml格式)
??? $postArr = file_get_contents('php://input');
??? //2.處理推送數(shù)據(jù),并設(shè)置回復(fù)類型和內(nèi)容
??? /*推送XML數(shù)據(jù)包示例:
??????? <xml>
??????? <ToUserName><![CDATA[toUser]]></ToUserName>
??????? <FromUserName><![CDATA[FromUser]]></FromUserName>
??????? <CreateTime>123456789</CreateTime>
??????? <MsgType><![CDATA[event]]></MsgType>
??????? <Event><![CDATA[subscribe]]></Event>
??????? </xml> */
??? $postObj = simplexml_load_string($postArr);//將xml數(shù)據(jù)轉(zhuǎn)為對象
??? //判斷該數(shù)據(jù)包是否是訂閱的事件推送
??? if( strtolower( $postObj -> MsgType) == 'event'){
?????? ??? ?//如果是關(guān)注公眾號事件即subscribe則回復(fù)消息
?????? ??? ? if(strtolower( $postObj -> Event) == 'subscribe'){
??????????? ??? ? $toUser = $postObj -> FromUserName;
???????????????? $fromUser = $postObj -> ToUserName;
???????????????? $createTime = time();
???????????????? $msgType = 'text';
???????????????? $content ='您已成功關(guān)注平臺:'.$postObj -> ToUserName;
???????????????? $template = '? <xml>
??????????????????????????????? <ToUserName><![CDATA[%s]]></ToUserName>
??????????????????????????????? <FromUserName><![CDATA[%s]]></FromUserName>
??????????????????????????????? <CreateTime>%s</CreateTime>
??????????????????????????????? <MsgType><![CDATA[%s]]></MsgType>
??????????????????????????????? <Content><![CDATA[%s]]></Content>
??????????????????????????????? </xml>';
???????????????? $info = sprintf( $template ,$toUser,$fromUser,$createTime,$msgType,$content);//將xml數(shù)據(jù)包進行對應(yīng)的變量賦值
??????????? ??? ? echo $info;
???????????? }
?? ??? ?}
?? ??? ?//如果是用戶發(fā)信息的事件則進行判斷并回復(fù)消息
??????? if( strtolower($postObj->MsgType) == 'text'? && trim( $postObj -> Content) == "圖文"){
??????????? //回復(fù)圖文消息
????????? ??? ? $toUser = $postObj -> FromUserName;
???????????? $fromUser = $postObj -> ToUserName;
???????????? $createTime = time();
???????????? $msgType = "news";
???????????? $arr =array(
??????????? ??? ?array(
?????????????? ??? ?'title'=>"百度",
??????????????????? 'description'=>"百度一下,你就知道",
??????????????????? 'url'=>"http://www.baidu.com",
??????????????????? 'picUrl'=>"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"
??????????????? ),
??????????????? array(
?????????????? ??? ?'title'=>"慕課",
??????????????????? 'description'=>"我愛學(xué)習(xí)",
??????????????????? 'url'=>"http://idcbgp.cn",
??????????????????? 'picUrl'=>"http://idcbgp.cn/static/img/common/logo.png"
??????????????? ),
??????????????? array(
?????????????? ??? ?'title'=>"淘寶",
??????????????????? 'description'=>"淘,你喜歡",
??????????????????? 'url'=>"http://www.taobao.com",
??????????????????? 'picUrl'=>"http://www.taobao.com?spm=a21bo.50862.201857.1.iMrzPE"
??????????????? )
?????????????? ?
???????????? );//圖文信息
???????????? $template="<xml>
??????????????????????? <ToUserName><![CDATA[%s]]></ToUserName>
??????????????????????? <FromUserName><![CDATA[%s]]></FromUserName>
??????????????????????? <CreateTime>%s</CreateTime>
??????????????????????? <MsgType><![CDATA[%s]]></MsgType>
??????????????????????? <ArticleCount>".count($arr)."</ArticleCount>
??????????????????????? <Articles>";
???????????? foreach( $arr as $k => $v){
??????????? ??? ? $template .= " <item>
??????????????????????? <Title><![CDATA[".$v['title']."]]></Title>
??????????????????????? <Description><![CDATA[".$v['descriptition']."]]></Description>
??????????????????????? <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
??????????????????????? <Url><![CDATA[".$v['url']."]]></Url>
??????????????????????? </item>
????????????????????? ";?? ?
???????????? }
????????????? $template .= "</Articles>
??????????????????????? </xml>";
?? ??? ??? ?? echo sprintf($template, $toUser, $fromUser, $createTime, $msgType);
??????????????????? //注意:進行多圖文發(fā)送時,子圖文個數(shù)不能超過10個
??????? }else{
???????????? //回復(fù)文本消息
?????? ??? ?switch(trim( $postObj -> Content)){
??????????????? case 1:
??????????????????? $content = "你輸入了1";
??????????????????? break;
??????????????? case 2:
??????????????????? $content = "你輸入了2";
??????????????????? break;
??????????????? case 3:
??????????????????? $content = "你輸入了3";
??????????????????? break;
??????????????? case "百度一下":
??????????????????? $content = "<a ;
??????????????????? break;
?????????? ?
??????????? }
??????????????????? $toUser = $postObj->FromUserName;
??????????????????? $fromUser = $postObj->ToUserName;
????????????? ??? ??? ?$createTime = time();
?????????????? ??? ?$msgType = 'text';
??????????????????? $template = '? <xml>
??????????????????????????????? <ToUserName><![CDATA[%s]]></ToUserName>
??????????????????????????????? <FromUserName><![CDATA[%s]]></FromUserName>
??????????????????????????????? <CreateTime>%s</CreateTime>
??????????????????????????????? <MsgType><![CDATA[%s]]></MsgType>
??????????????????????????????? <Content><![CDATA[%s]]></Content>
??????????????????????????????? </xml>';
??????????????????? echo sprintf($template, $toUser, $fromUser, $createTime, $msgType,$content);
??????? }
??? }
???? function http_curl(){
?? ??? ?? //通過php的curl工具采集某個url的內(nèi)容
??????? //1.初始化curl
??????? $ch = curl_init();
??????? $url = "http://www.baidu.com";
??????? //2.設(shè)置請求選項, 包括具體的url
??????? curl_setopt($ch,CURLOPT_URL,$url);//需要獲取的URL地址,也可以在curl_init()函數(shù)中設(shè)置
??????? curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//將curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。
??????? //3.采集內(nèi)容
??????? $response = curl_exec($ch);//執(zhí)行一個cURL會話
??????? //4.關(guān)閉CURL會話
??????? curl_close($ch);
??????? var_dump( $response );//判斷一個變量的類型與長度,并輸出變量的數(shù)值
?? ?}
?>
2017-04-12
首先要你的PHP環(huán)境開啟支持curl才成