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中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
php批量修改表结构实例
May 24 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 PHP
在Laravel 中实现是否关注的示例
Oct 22 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
咖啡的传说和历史
2021/03/03 新手入门
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
python编程羊车门问题代码示例
2017/10/25 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
介绍Java的内部类
2012/10/27 面试题
学生的自我鉴定范文
2013/10/24 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
西安兵马俑导游词
2015/02/02 职场文书
安全守法证明
2015/06/23 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Redis中一个String类型引发的惨案
2021/07/25 Redis
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS