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 Document 代码注释规范
Apr 13 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
Yii2框架加载css和js文件的方法分析
May 25 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
javascript 节点排序 2
2011/01/31 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python中文编码那些事
2014/06/25 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
python MySQLdb使用教程详解
2018/03/20 Python
python基于http下载视频或音频
2018/06/20 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Python函数装饰器实现方法详解
2018/12/22 Python
《祁黄羊》教学反思
2014/04/22 职场文书
设计师求职信
2014/07/01 职场文书
关于安全的广播稿
2014/10/23 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
先进单位申报材料
2014/12/25 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python