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 相关文章推荐
PHP函数学习之PHP函数点评
Jul 05 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php使用session二维数组实例
Nov 06 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php简单实现MVC
Feb 05 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
WAF的正确bypass
Jan 05 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
php 的多进程操作实践案例分析
Feb 28 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
python中的字典详细介绍
2014/09/18 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
django中静态文件配置static的方法
2018/05/20 Python
详解python数据结构和算法
2019/04/18 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
四年大学生活的自我评价范文
2014/02/07 职场文书
2014年度培训工作总结
2014/11/27 职场文书
应届毕业生自荐信
2015/03/04 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android