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编码规范的深入探讨
Jun 06 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python语法快速入门指南
2015/10/12 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
电子商务实训报告总结
2014/11/05 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
初婚初育证明范本
2015/06/18 职场文书
世界文化遗产导游词
2019/08/07 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang