php自动注册登录验证机制实现代码

时间:2024-04-30 08:48:12 

背景:

在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?>");
}
}

标签:自动注册,登录验证
0
投稿

猜你喜欢

  • 详解Pytorch如何利用yaml定义卷积网络

    2023-02-16 10:46:01
  • MySQL中使用or、in与union all在查询命令下的效率对比

    2024-01-16 02:28:45
  • SQL Server 安全检查列表全攻略

    2008-01-29 13:31:00
  • Python卸载模块的方法汇总

    2022-03-14 16:50:21
  • python+OpenCV人脸识别考勤系统实现的详细代码

    2021-11-01 01:28:44
  • 总结分析python数据化运营关联规则

    2021-06-07 22:22:05
  • 关于通过Java连接mysql对反斜杠”\\“转义的测试详解

    2024-01-27 06:52:59
  • Django给admin添加Action的步骤详解

    2022-10-12 00:59:40
  • vue项目使用md5加密、crypto-js加密、国密sm3及国密sm4的方法

    2024-04-27 15:47:47
  • sql server 编译与重编译详解

    2024-01-14 11:02:59
  • js调用AJAX时Get和post的乱码解决方法

    2024-05-09 10:38:11
  • ASP和SQL Server如何构建网页防火墙

    2024-01-16 06:01:06
  • asp采集常用的几个FUCTION

    2007-09-05 19:45:00
  • python构建基础的爬虫教学

    2023-09-28 04:24:38
  • Python使用定时调度任务的方式

    2021-03-10 01:40:24
  • Go语言原子操作及互斥锁的区别

    2024-04-26 17:23:45
  • Go逃逸分析示例详解

    2024-04-25 15:05:22
  • 详解PHP结构型设计模式之桥接模式Bridge Pattern

    2023-05-25 06:58:55
  • 解决Pandas的DataFrame输出截断和省略的问题

    2021-10-28 10:22:19
  • Golang标准库syscall详解(什么是系统调用)

    2024-05-28 15:23:35
  • asp之家 网络编程 m.aspxhome.com