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与XML的PDF文档生成技术
Oct 09 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 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设置session(过期、失效、有效期)
2015/11/12 PHP
php排序算法实例分析
2016/10/17 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python矩阵的转置和逆转实例
2018/12/12 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
小学生放飞梦想演讲稿
2014/08/26 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技