一个大公司的内部应用,可能面对着这样的需求,当一个应用部署好后,用户和角色管理希望通过本机的域账户自动登录和识别。这样,用户的信息可以统一进行管理,而且,免得每个人都还去进行注册或者让管理员做角色分配。想象一下,如果公司几天就出一个应用供内部人员使用,当员工数超过5000人时,这个工作量是何其的大,所以将应用支持域认证是首选方案。具体做法如下:
首先,域服务器少不了,apache里面也得配置好。具体配置就不说了。google一下就知道。这儿主要是说怎么在现有的php应用里面或者还未开发好的php应用里面进行域认证。
如果是一个开源的php项目,如discuz,wordpress,taskfreak等这些开源的项目。由于他们的角色分配和登录验证页面已经全部做好了。难道是去改源代码?说实话,一开始我还真这么做的,一行行看代码,把filter干掉,自己往session里面写东西。这其实是很低效的,不仅会造成很多无法预料的错误,而且还会破坏程序原有的设计理念。具体要怎么做呢?
其实,我们只需要在应用的index.php里面include或者require一个我们自己写的php文件即可。include进来的内容只需要干这几件事:
  • 1.首先从apache改变的header里面拿到域信息。具体取header里面哪个值要看apache的配置或者干脆直接把header全部print_r出来看一下。
  • 2.得到信息后判断该应用所在的用户数据库中是否有该条信息,有则暂时不用理会,没有就写入数据库。具体怎么写,要看数据库表或者直接看该应用提供的注册接口。这儿其实直接用mysql语句直接写更高效,想去调用原来的接口,除非你把代码了解到一定程度,这样其实是很浪费时间的。用户的权限什么的都可以默认为一个值或者按不同的用户进行不同的角色分配。
  • 3.关键的一步了。将页面进行跳转到login.php(名字可能不是这个,其实就是登录界面)。等一等,跳转过去没有数据怎么办?index.php里面得到的域信息可以用$_REQUEST传过去。在login.php里面找到该登录页面提交数据name或者id。在$_POST里面写入相应的数据。写入后,login.php就以为是页面上输入了信息,这样验证通过后就直接再进行跳转。这儿又有个问题,如果login.php不跳转到index.php还好,要跳转到index.php那不就一直跳来跳去的吗?这儿又有个新问题产生了。
  • 4.我们可以用session来控制index.php是否跳转,在login.php里面把session写一个值,在index.php里面判断一下就OK。或者让login.php再提交一个参数过来,index.php通过这个参数决定是否跳转。这样就解决了循环跳转的问题。
  • 5.最后,当然是去除无用的用户注册,用户登录、登出这些无用链接了。看各应用需要。
  • 参考函数:$headers['xxx']:从header里面取出名字为xxx的变量的值。$header("Location: URL");跳转页面到URL。或者直接写javascript。用window.location.href跳转。$_POST['xxx']='abc';给post参数表的xxx变量赋值为abc。$_REQUEST['username']:通过GET方法从url里面取得传过来的变量username的值。
  • 转自http://zengjianjay.iteye.com/blog/710166

 青春就应该这样绽放  游戏测试:三国时期谁是你最好的兄弟!!  你不得不信的星座秘密
posted on 2013-03-27 20:40  钦草弟  阅读(1036)  评论(0编辑  收藏  举报