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代码把全角数字转为半角数字
Dec 10 PHP
php获取mysql版本的几种方法小结
Mar 25 PHP
php下连接mssql2005的代码
Jan 17 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php生成扇形比例图实例
Nov 06 PHP
PHP常用的小程序代码段
Nov 14 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
PHP PDOStatement::errorCode讲解
Jan 31 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 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
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
python实现上传下载文件功能
2020/11/19 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python sys.argv[]用法实例详解
2018/05/25 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
物业管理求职自荐信
2013/09/25 职场文书
大学生志愿者感言
2014/01/15 职场文书
协议书样本
2014/04/23 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
人才市场接收函
2015/01/30 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
Python基础之pandas数据合并
2021/04/27 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python