分享

ShopNC 商城系统开发经验分享第八篇 二次开发之分地区开发

 shopnc 2015-11-30
最近碰到一个基于ShopNC商城系统二次开发成支持多城市运营的项目,客户其中一个需求就是总平台可以开设各城市分站,IP地址系统自动识别,游客或会员只能查看某一城市分站的商品店铺等信息,而不是全国的信息,各城市分站拥有自己的会员与店铺。开发过程与大家分享一下。

        第1步:搭建一个城市运营商使用的后台

        首先创建一个城市表city,主要字段包括:城市ID(主键),城市名称、城市二级名称、状态、城市管理员登录账号和密码。系统管理员可以对这个表进行CURD操作,也就是管理城市表。
      

       然后建立各城市分站后台,如命名后台目录为city_manage,复制现有admin目录中的入口文件index.php到city_manage目录,定义项目名称define('ProjectName','city_manage');,其它代码不需要改动。然后初化城市后台程序及目录结构(如control、include、language、templates)及所必需的文件(PHP文件、图片、样式文件)。
      

      然后完成登录、欢迎界面及修改密码功能,这三个功能相关的文件从admin目录复制相关文件稍做修改即可,不需要重新开发。当然城市运营商管员需要管理的信息还有很多,如店铺、商品、会员、订单、结算、统计等,但这些不是本次介绍的重点,不再赘述。

       第2步:IP来源分析与定位

       从网上下载一下较全的IP地址库,笔者这里下载的是QQIP地址库,IP地址信息都存放在qqwry.dat中,可以使用ip.exe工具进行解压为txt文件,查看里面的内容。
      

      然后使用PHP程序解析qqwry.dat文件,定位到哪个城市,百度一下“php 解析 qqwry.dat”,网上已经有了相关的程序大家可以参考,TP也提供了相关开源的解析IP类,有兴趣的可以学习一下。
     

      注意:网上下载的qqwry.dat是GBK编码(至少本人下载的是),如果项目中是UTF-8编码,需要进行转码才可以。
对qqwry.dat的解析,网上也已经有了C语言版的php扩展qqwry.so,据说效率比PHP高6到10倍(本人未测试),大家可以尝试一下。具体使用方法百度一下就可以了。

IP分析的程序可以放到入口文件里,也可以放到框架里,程序分析流程如下图:



主要代码示例参考如下:

  1. require(BasePath.'/framework/libraries/iplocation.php');
  2. $ip = new IpLocation(BasePath.'/data/area/qqwry.dat');
  3. $area = $ip->getlocation();    //$area内容如:河北省[font=微软雅黑]廊坊[/font]市
  4. $domain = require(BasePath.'/data/area/domain.php');
  5. //如果IP有定位并且该城市已开通,定位到该城市
  6. foreach ($domain as $k=>$v) {
  7. if (strpos($area,$k) !== false){
  8.     $dcity  = $domain[$k];
  9.     define('CITY_ID',$city[$dcity]['id']);
  10.     break;
  11. }
  12. }
复制代码

domain.php是已开通城市的数组,内容如:

  1. <?php
  2. //对应关系为 城市名称 => 域名
  3. return array('天津'=>'tj','北京'=>'bj','廊坊'=>'lf');
  4. ?>
复制代码

将城市标识ID除记录到cookie外,在PHP中使用define定义成常量,在前台显示商品与店铺等信息的SQL中,将该常量加入到检索条件,这样便实现了每个城市显示每个城市的信息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多