php自动注册登录验证机制实现代码


Posted in PHP onDecember 20, 2011

背景:

在phpwind站点后台添加一个名为“广告管家”(广告管家为CNZZ的一款广告投放的应用)的应用,整个“广告管家”的应用是通过iframe载入,载入的具体内容根据不同站点显示针对该站点的具体内容,为了提高易用性,有以下的两点要求:
1、首次进入“广告管家”页面自动注册CNZZ账户
2、以后每次进入“广告管家”页面默认为首次注册的CNZZ账户

设计:

php自动注册登录验证机制实现代码
1、尝试载入用户帐号和密码信息,此信息保存在数据库或是文本缓存中
2、当存在用户名和密码的情况下向cnzz发送一个请求用来获取Token,将此Token值加入到iframe的地址中,如此就能载入针对该用户的页面
3、当不存在用户名和敏吗的情况下待用cnzz的注册接口,注册成功后返回token,也同样将此Token作为iframe地址的一部分用来载入页面
4、Token值有效期只有一次,即使被截取了也能保证安全性
代码:

$urls = parse_url($db_bbsurl); 
$domain = $urls['host']; 
include_once (R_P .'require/admvclient.php'); 
$adm_oem= new Cnzz_Adm_Oem(); 
//判断config文件是否存在用户密码 
pwCache::getData(D_P . "data/bbscache/adm_config.php");//用户名密码 配置文件 
if (isset($adm_user) && isset($adm_pwd)) { 
$request = array("adm_user"=>$adm_user,"adm_pwd"=>$adm_pwd,'cms'=>'pw'); 
$token = $adm_oem->get_appkey_once($request); 
if ($token<0){ 
if($token==-1){ 
adminmsg('传递参数为空或传递参数非数字'); 
}else if($token==-2){ 
adminmsg('传递参数password错误'); 
} 
}else{ 
$apikey = $token['adm_key']; 
} 
}else{ 
$Key = md5($domain.'KclGiq7H'); 
$request = array('cms'=>'pw','domain'=>$domain,'key'=>$Key); 
$token = $adm_oem->reg_user_once($request); 
if ($token<0){//异常 
if($token==-1){ 
adminmsg('key有误'); 
} else if($token==-2){ 
adminmsg('域名长度有误(1~64)'); 
} elseif($token==-3){ 
adminmsg('域名输入有误(比如输入汉字)'); 
} elseif($token==-4){ 
adminmsg('域名插入数据库有误'); 
} elseif($token==-5){ 
adminmsg('IP用户调用页面超过阀值,阀值暂定为10'); 
} 
} elseif (is_array($token) && isset($token)){ 
$adm_user = $token['adm_user']; 
$adm_pwd = $token['adm_pwd']; 
$apikey = $token['adm_key']; 
pwCache::setData(D_P.'data/bbscache/adm_config.php',"<?php\r\n\$adm_user=".$adm_user.";\r\n\$adm_pwd=".$adm_pwd."\r\n?>"); 
} 
}
PHP 相关文章推荐
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
Oct 15 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
zf框架db类的分页示例分享
Mar 14 PHP
php中spl_autoload详解
Oct 17 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHP使用QR Code生成二维码实例
Jul 07 PHP
php4与php5的区别小结(配置异同)
Dec 20 #PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 #PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 #PHP
PHP定时执行计划任务的多种方法小结
Dec 19 #PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 #PHP
php安全配置 如何配置使其更安全
Dec 16 #PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 #PHP
You might like
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
python 文件操作删除某行的实例
2017/09/04 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python3中property使用方法详解
2019/04/23 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Python爬取网页信息的示例
2020/09/24 Python
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
交通事故调解协议书
2014/04/16 职场文书
社区健康教育工作方案
2014/06/03 职场文书
书法大赛策划方案
2014/06/04 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
初中班主任心得体会
2016/01/07 职场文书