最近碰到一个基于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分析的程序可以放到入口文件里,也可以放到框架里,程序分析流程如下图: ![]() 主要代码示例参考如下:
domain.php是已开通城市的数组,内容如:
将城市标识ID除记录到cookie外,在PHP中使用define定义成常量,在前台显示商品与店铺等信息的SQL中,将该常量加入到检索条件,这样便实现了每个城市显示每个城市的信息。 |
|