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 相关文章推荐
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php一些错误处理的方法与技巧总结
Aug 10 PHP
php使用json_encode对变量json编码
Apr 07 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
PHP date()格式MySQL中插入datetime方法
Jan 29 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
python实现2048小游戏
2015/03/30 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
Python实现元素等待代码实例
2019/11/11 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
运动会口号大全
2014/06/07 职场文书
排查整治工作方案
2014/06/09 职场文书
创先争优公开承诺书
2014/08/30 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2014年导购员工作总结
2014/11/18 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
《正比例》教学反思
2016/02/23 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python