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常用代码
Nov 23 PHP
PHP4中session登录页面的应用
Jul 25 PHP
smarty section简介与用法分析
Oct 03 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
浅析php单例模式
Nov 25 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
微信公众号开发之获取位置信息php代码
Jun 13 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
Django保护敏感信息的方法示例
2019/05/09 Python
解决yum对python依赖版本问题
2019/07/05 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
某公司面试题
2012/03/05 面试题
出纳岗位职责模板
2013/11/27 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
通知的写法
2015/04/23 职场文书
运动会广播稿100字
2015/08/19 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
筑梦中国心得体会
2016/01/18 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
oracle索引总结
2021/09/25 Oracle