web development blog

> 编程 无限二级域名程序开发

最近主要开发无限二级域名程序,并要把它整合到一个分类网站里面,实现只要是网站注册会员,就可以自动申请一个属于自己的diy网站需求。而会员diy 网站,要实现用户自定的栏目,可以更换主题功能,diy功能操作简单化,不需要太复杂。

 

这次开发中,碰到不少问题,总结几点:

  • 1.会员域名前缀、数据、附件、主题切换之间的关系;
  • 2.iframe 自适应高度,iframe跨域通讯
  • 3.ckedit与ckfinder的整合,用户只能浏览自己上传的附件
  • 4.网站登录信息同步,跨域访问,ie下session冲突;
  • 5.paypal 在线支付自动升级授权用户

 

无限二级域名的实现:只要域名支持泛解析就可以,在域名解析那里添加一条A记录,*.youdomain.com。我们服务器由于历史遗留问题,一直是保留这iis+php运行环境。而在iis中要实现泛域名的绑定,只能是创建一个空主机头的网站空间,然后所有泛解析网站都会自动跳转到这个网站空间来。缺点就是,一台服务器只能做一个域名的泛解析。

 

网站架构:根据二级域名的前缀为突破口,读取对应的数据。这里需要先考虑,数据库选择,数据的存储规则,以及网站全局配置,和网站配置和用户自定义配置。栏目板块划分:单页面,普通分栏,新闻模块,产品图文模块,显示模版方式。网站主题风格制作。其中,从功能上,基于模块开发,划分为网站前台模块,网站后台管理模块,diy主题模版管理和用户申请自动生成diy网站模块,还内嵌了自动转换手机网站模块。

 

iframe自适应高度问题:当整合分类网站和无限二级域名程序的时候,分类网站为A站,无限域名程序为B站,中介代理为C。在A站iframe 进B站的模版列表页面,需要解决iframe自适应问题。因为A和B不是同域,所以不能通信操作。这时候就需要中介代理C,在B的模版页面iframe进C,这里C是比较特别的,C页面是属于A站的内容,而路径就是A站的域,这样AC就同域名,就可以在C中操作B了,这样就实现了跨域解决iframe自适应问题。

 

用户上传附件,内容编辑:用户上传的附件,为了方便管理,划分为:logo,banner,product,link,ck类型。其中,特殊的logo,加上加上用户域名做为前缀命名。而ck文件夹,则为用户新曾一个属于自己的文件夹,粗劣的解决ck文件浏览的时候看到不属于自己的我附件问题。

 

登录信息同步:这个问题比较头疼,因为分类网站,和无限二级域名程序都是在同一个服务器里面,就涉及到了sessionid相同的问题。在非ie浏览器下,给自登录都不会有任何问题,可是在ie下,就不能,当你先登入主域后,不能登录子域名,而子域的session也无缘无故丢失。基于ie的安全策略,开始以为是session cookies domain 的问题,在统一了session的domain域后,发现问题还是存在;接着就怀疑是p3p问题,在程序上加入header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");但是问题也没有解决,还是无法写入session信息。纠结于ie的这个bug,又不能一直卡在这里,只好放弃这种方式,重写了用户登录信息保存模块,用Memcache分布式内存对象缓存系统来解决同步登录问题。对此,表示对ie的安全策略表示无语。希望用户重构,能解决这个问题。

 

paypal在线支付自动升级授权用户:如果是会员申请diy网站后,没有付费升级成授权用户,在用户diy网站前台顶部,都会有一条Tip Bar,提示非授权用户。paypal的整合,就是基于api接口的整合开发。

 

开发总结:对这次的整合开发,对于自己码的两个不同时期的代码,相差还是有很大区别。对以前的那些,如果时间允许,真想重构一下。而这个两个不是从一开始整体考虑架构的,而是后天增添,除了找到一些必要的关联,都是偏于各自当独立的模块来开发,互相之间不存在过多的依赖性。这样就造成部分数据的重复,没有整体个规划,有点缺陷。还有一个就是没有考虑当用户独立域名,要如何绑定。如果某天说要这个功能的时候,我想有要重写下diy 网站前台模块,要关联域名,感觉上这些需求的加入,和这几个功能之间的整合的不够和谐,有点牵强。这里也给大家提个醒,以后开发的时候,多做一些假想,预留一些扩展空间,或者在一开始就考虑多一点,不要等有新功能加入的时候,就是强加,而是事先有个接口,可以方便扩展。

-留言评论-

  • 留言载入中...

-拍砖-

 

首页|前端技术|编程/php|生活|关于我

Copyright © 2012 wmhfly.com