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利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
php实现36进制与10进制转换功能示例
Jan 10 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
php回调函数处理数组操作示例
Apr 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 Pear 安装及使用
2009/03/19 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python rsa 加密解密
2017/03/20 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python 星号(*)的多种用途
2020/09/21 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
教师专业自荐书范文
2014/02/10 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015感人爱情寄语
2015/02/26 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js