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 相关文章推荐
WINXP下apache+php4+mysql
Nov 25 PHP
php中的时间显示
Jan 18 PHP
PHP中文汉字验证码
Apr 08 PHP
PHPMailer 中文使用说明小结
Jan 22 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php导出CSV抽象类实例
Sep 24 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
php之可变变量的实例详解
Sep 12 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
JS实现留言板功能
2017/06/17 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
python中去空格函数的用法
2014/08/21 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
python对一个数向上取整的实例方法
2020/06/18 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
优秀村官事迹材料
2014/01/10 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
小学少先队活动方案
2014/02/18 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
创新型城市实施方案
2014/03/06 职场文书
服务宗旨标语
2014/07/01 职场文书
查摆问题整改措施
2014/10/24 职场文书
JavaScript流程控制(循环)
2021/12/06 Javascript
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL