php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼
在phpwind站點(diǎn)后臺(tái)添加一個(gè)名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個(gè)“廣告管家”的應(yīng)用是通過iframe載入,載入的具體內(nèi)容根據(jù)不同站點(diǎn)顯示針對(duì)該站點(diǎn)的具體內(nèi)容,為了提高易用性,有以下的兩點(diǎn)要求:
1、首次進(jìn)入“廣告管家”頁(yè)面自動(dòng)注冊(cè)CNZZ賬戶
2、以后每次進(jìn)入“廣告管家”頁(yè)面默認(rèn)為首次注冊(cè)的CNZZ賬戶
設(shè)計(jì):

1、嘗試載入用戶帳號(hào)和密碼信息,此信息保存在數(shù)據(jù)庫(kù)或是文本緩存中
2、當(dāng)存在用戶名和密碼的情況下向cnzz發(fā)送一個(gè)請(qǐng)求用來(lái)獲取Token,將此Token值加入到iframe的地址中,如此就能載入針對(duì)該用戶的頁(yè)面
3、當(dāng)不存在用戶名和敏嗎的情況下待用cnzz的注冊(cè)接口,注冊(cè)成功后返回token,也同樣將此Token作為iframe地址的一部分用來(lái)載入頁(yè)面
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('傳遞參數(shù)為空或傳遞參數(shù)非數(shù)字');
}else if($token==-2){
adminmsg('傳遞參數(shù)password錯(cuò)誤');
}
}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('域名長(zhǎng)度有誤(1~64)');
} elseif($token==-3){
adminmsg('域名輸入有誤(比如輸入漢字)');
} elseif($token==-4){
adminmsg('域名插入數(shù)據(jù)庫(kù)有誤');
} elseif($token==-5){
adminmsg('IP用戶調(diào)用頁(yè)面超過閥值,閥值暫定為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實(shí)現(xiàn)用戶登錄注冊(cè)功能的詳細(xì)教程
- PHP實(shí)現(xiàn)登錄注冊(cè)之BootStrap表單功能
- PHP實(shí)現(xiàn)的注冊(cè),登錄及查詢用戶資料功能API接口示例
- php+redis實(shí)現(xiàn)注冊(cè)、刪除、編輯、分頁(yè)、登錄、關(guān)注等功能示例
- php+mysql實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)修改密碼網(wǎng)頁(yè)
- PHP實(shí)現(xiàn)的登錄,注冊(cè)及密碼修改功能分析
- php注冊(cè)和登錄界面的實(shí)現(xiàn)案例(推薦)
- 基于PHP實(shí)現(xiàn)用戶注冊(cè)登錄功能
- php注冊(cè)登錄系統(tǒng)簡(jiǎn)化版
- 基于PHP的登錄和注冊(cè)的功能的實(shí)現(xiàn)
相關(guān)文章
PHP7安裝Redis擴(kuò)展教程【Linux與Windows平臺(tái)】
這篇文章主要介紹了PHP7安裝Redis擴(kuò)展的方法,簡(jiǎn)單分析了Linux與Windows平臺(tái)Redis擴(kuò)展的安裝方法,并提供了一個(gè)實(shí)例進(jìn)一步分析了php操作Redis的相關(guān)技巧,需要的朋友可以參考下2016-09-09
PHP遞歸寫入MySQL實(shí)現(xiàn)無(wú)限級(jí)分類數(shù)據(jù)操作示例
這篇文章主要介紹了PHP遞歸寫入MySQL實(shí)現(xiàn)無(wú)限級(jí)分類數(shù)據(jù)操作,涉及mysql數(shù)據(jù)庫(kù)的創(chuàng)建以及php遞歸寫入、讀取數(shù)據(jù)庫(kù)分類相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運(yùn)行環(huán)境
這篇文章主要介紹了在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運(yùn)行環(huán)境,需要的朋友可以參考下2016-04-04

