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 06 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
php编写一个简单的路由类
Apr 13 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
php简单操作mysql数据库的类
Apr 16 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python实现井字棋小游戏
2020/03/04 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
英国足球店:UK Soccer Shop
2017/11/19 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
公司领导推荐信
2013/11/12 职场文书
学习十八大报告感言
2014/02/28 职场文书
活动策划求职信模板
2014/04/21 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
意向协议书
2015/01/27 职场文书
好好学习保证书
2015/02/26 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL