实现:多个小程序用一个https站点

  • • 发表于 8年前
  • • 作者 Roluce
  • • 4048 人浏览
  • • 1 条评论
  • • 最后编辑时间 8年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

背景:

1:win2008+IIS7环境只能搭建一个https站点
2:小程序后台必须用https搭建

ps:win2008+IIS有搭建多个https的偏方,不过得IIS修改配置文件,一重启IIS得重新配置,很不方便`


正常来说:
一个win2008+IIS服务器只能让一个小程序用


问题解决:

解决方法:让这个唯一的https站点做路由

1:https站点:接收小程序发来的请求参数,根据参数重新组织请求url
2:https站点:模拟http向真正的小程序后台发送请求
3:http站点:小程序后台接收参数、返回请求的数据
4:https站点:接收返回的数据
5:https站点:把数据返回给小程序


原理图:

实现源码

1:小程序请求接口

url:https://www.https.com/api.php?app=zcml&action=post&cat=17&count=2&page=1

app:小程序缩写
action:功能(获取文章,获取分类,获取幻灯片数据等)
cat:文章分类ID
count:每次获取数量
page:页数


2:https站点php代码(路由)
<?php

//每次请求必有参数(小程序名、功能)
$app = $_GET['app'];        //应用名称缩写
$action = $_GET['action'];  //功能

/********************
 * 1:拼装url
 ********************/
 switch($app){

    //《轴承名录》小程序
    case "zcml":

        //功能
        switch($action){

            //获取文章数据
            case "post":
            $cat=$_GET['cat'];      //分类id
            $count=$_GET['count'];  //每页数据量
            $page=$_GET['page'];    //页数
            $url = "http://www.http.com/xcxapi.php?action={$action}&cat={$cat}&count={$count}&page={$page}";
            break;

            //获取xx数据
            case "index":
            break;
        }

    break;

    //其他小程序(待)
    case "other":
    break;     

}


/********************
 * 2:模拟http获取数据
 ********************/

$timeout = 5; 
$ch = curl_init();                              //初始化curl   
curl_setopt($ch, CURLOPT_URL, $url);            //设置访问的url地址   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    //参数为1表示传输数据,为0表示直接输出显示。 
curl_setopt($ch, CURLOPT_HEADER, 0);            //参数为0表示不带头文件,为1表示带头文件  

/*curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);   //获取https需要加上此
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);   //获取https需要加上此*/

$output = curl_exec($ch);   //执行命令并把获取的数据赋值给$output
curl_close($ch);            //关闭URL请求

echo $output;

?>
3:http站点php代码(小程序后台)
<?php

/***wp框架************/ 
if ( !isset($wp_did_header) ) {
    $wp_did_header = true;
    // Load the WordPress library.
    require_once( dirname(__FILE__) . '/wp-load.php' );   
    // Set up the WordPress query.
    wp();
}
/***wp框架************/ 




//获取功能
$action = $_GET['action'];


switch($action){

    //获取文章数据
    case "post":

    //接收传参
    $cat=$_GET['cat'];
    $count=$_GET['count'];
    $page=$_GET['page'];


    //拼装筛选参数
    $args = array(    
        'posts_per_page' => $count,  //每页数量 
        'paged' => $page,            //第几页   
        'post_type' => 'dealer',      //自定义文章类型名称(可省略自动识别)
        'tax_query' => array(         //自定义分类(指定)
            array(
                'taxonomy' => 'cdealer',//自定义分类法名称
                'terms' =>$cat //id为64的分类。也可是多个分类array(12,64)
                ),
            )
        );

    //执行时筛选
    query_posts($args);  //本页不要这句,自定义分类才用

    $arr=[];
    //对文章数据进行重新封装
    while(have_posts()){
        the_post();
        $title = get_the_title();
        $sale = get_field("sale");
        $tel = get_field("tel");
        $addr = get_field("addr");

        $arr[] = ["title"=>$title,"sale"=>$sale,"tel"=>$tel,"addr"=>$addr];  
    }  

    echo json_encode($arr);


    break;




    //其他
    case "other":
    break;
}
分享到:
1条评论
Ctrl+Enter
作者

Roluce

Roluce

APP:0 帖子:50 回复:112 积分:3610

已加入社区[3026]天

山东_聊城_qq:635068

作者详情》
Top