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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
PDO::commit讲解
Jan 27 PHP
php 实现银联商务H5支付的示例代码
Oct 12 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中实现一次性加载多个view的方法
2015/03/20 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
原生JS进行前后端同构
2018/04/22 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
关于国庆节的演讲稿
2014/09/05 职场文书
个人剖析材料范文
2014/09/30 职场文书
高三数学教学反思
2016/02/18 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers