国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > CMS > 織夢(mèng)DEDE > 正文

dedecms添加登錄管理認(rèn)證碼的方法

2024-07-12 08:24:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了dedecms添加登錄管理認(rèn)證碼的方法。分享給大家供大家參考。具體分析如下:

隨著dedecms用的人越來(lái)越多,也就引來(lái)各種關(guān)注,然后就各種漏洞、入侵,最近又爆出了一個(gè)堪稱(chēng)全版本都有的漏洞,的確,我googlehack了一下,基本上 5.5-5.7 的版本測(cè)試都可以,不過(guò)MD5是個(gè)硬傷,多余的話(huà)就不說(shuō)了.

其實(shí)就是在后臺(tái)登錄界面添加個(gè)表單驗(yàn)證而已,管理認(rèn)證,應(yīng)該知道吧,動(dòng)易、帝國(guó)的那種,本地字符驗(yàn)證,而不是數(shù)據(jù)庫(kù)驗(yàn)證,所以SQL查詢(xún)不了,入侵時(shí)碰到這種登錄最糾結(jié),最無(wú)奈的.

首先看看,我們要改的是這2個(gè)文件/(后臺(tái)路徑)/templets/login.htm 這是后臺(tái)登錄界面,/(后臺(tái)路徑)/login.php 登錄消息的處理文件.

我們先來(lái)改login.htm文件,可能大家的模板不一樣,不過(guò)自己改改吧,這是驗(yàn)證表單是否為空的代碼,可以直接放在html里,也可以link到JS文件里,代碼如下:

代碼如下:<script language="javascript">
<!--
var closestr=0;
function SetFocus() {
var df = document.form1;
if(df.userid.value == '')
df.userid.focus();
else
df.userid.select();
}
function CheckForm() {
var df = document.form1;
if(df.userid.value == '') {
alert('請(qǐng)輸入用戶(hù)名!');
df.userid.focus();
return false;
}
if(df.pwd.value == '') {
alert('請(qǐng)輸入密碼!');
df.pwd.focus();
return false;
}
if (df.validate.value == '') {
alert ('請(qǐng)輸入您的驗(yàn)證碼!');
df.validate.focus();
return(false);
}
if (df.vacodes.value == '') {
alert ('請(qǐng)輸入您的認(rèn)證碼!');
df.vacodes.focus();
return(false);
}
}
//-->
</script>
這是我的form框架和input提交,其實(shí)那個(gè)認(rèn)證碼的input 直接復(fù)制用戶(hù)名的 input或密碼的input就可以,改下name名就可以了,代碼如下:

代碼如下:<form name="form1" id="form1" method="post" action="login.php" onsubmit='return CheckForm();'>
<input type="hidden" name="gotopage" value="<?php if(!empty($gotopage)) echo $gotopage;?>" />
<input type="hidden" name="dopost" value="login"/>
<ul>
<li><span>用戶(hù)名:</span>
<input type="text" name="userid" class="input_out" maxlength="20" style="width:148px;" onfocus="this.className='input_on';this.onmouseout=''" onblur="this.className='input_off';this.onmouseout=function(){this.className='input_out'};" onmousemove="this.className='input_move'" onmouseout="this.className='input_out'"/>
</li>
<li><span>密&nbsp;&nbsp;碼:</span>
<input type="password" name="pwd" class="input_out" maxlength="20" style="width:148px;" onfocus="this.className='input_on';this.onmouseout=''" onblur="this.className='input_off';this.onmouseout=function(){this.className='input_out'};" onmousemove="this.className='input_move'" onmouseout="this.className='input_out'"/>
</li>
<li><span>認(rèn)證碼:</span>
<input type="password" name="vacodes" class="input_out" maxlength="20" style="width:148px;" onfocus="this.className='input_on';this.onmouseout=''" onblur="this.className='input_off';this.onmouseout=function(){this.className='input_out'};" onmousemove="this.className='input_move'" onmouseout="this.className='input_out'"/>
</li>
<li><span>驗(yàn)證碼:</span>
<input name="validate" type="text" id="vdcode" style="width:50px;text-transform:uppercase;" onfocus="this.className='input_on';this.onmouseout=''" onblur="this.className='input_off';this.onmouseout=function(){this.className='input_out'};" onmousemove="this.className='input_move'" onmouseout="this.className='input_out'" class="input_out"/>
<img id="vdimgck" src="../include/vdimgck.php" alt="看不清?點(diǎn)擊更換" align="absmiddle" style="cursor:pointer" onclick="this.src=this.src+'?'"/></li>
<span>&nbsp;</span>
<input name='Submit' type='image' style='width:60px; HEIGHT: 25px;' src='img/submit.gif' width='60' height='27'/>
</li>
</ul>
</form>
然后就是提交驗(yàn)證(/login.php)了,代碼第50行就有注釋 //登錄檢測(cè),我們把驗(yàn)證內(nèi)嵌在如下代碼:

代碼如下:if (!emptyempty($userid) && !emptyempty($pwd)) {
$res = $cuserLogin->checkUser($userid, $pwd);
//success
if ($res == 1) {
//里,如下。
if (!emptyempty($userid) && !emptyempty($pwd)) {
$res = $cuserLogin->checkUser($userid, $pwd);
//success
if ($res == 1) { //嵌套到這里面!
$uservacodes = $_POST['vacodes']; //取出vacodes內(nèi)容放入另一個(gè)變量
if ($uservacodes != '認(rèn)證碼自定義') { //自行修改認(rèn)證碼自定義內(nèi)容!
ResetVdValue();
ShowMsg('認(rèn)證碼不正確!', 'login.php', 0, 1000); //不等于跑這里
die;
} else { //等于就跑這里
$cuserLogin->keepUser();
if (!emptyempty($gotopage)) {
ShowMsg('成功登錄,正在轉(zhuǎn)向管理管理主頁(yè)!', $gotopage);
die;
} else {
$uservacodes = $_POST['vacodes'];
ShowMsg('成功登錄,正在轉(zhuǎn)向管理管理主頁(yè)!', 'index.php');
die;
}
}
解釋:先驗(yàn)證圖片驗(yàn)證碼,在驗(yàn)證用戶(hù)名,在驗(yàn)證密碼,最后驗(yàn)證認(rèn)證碼,以免認(rèn)證碼被爆破.

注意:if的塊語(yǔ)句{}一定要對(duì)應(yīng),不然會(huì)出錯(cuò),可以用Notepad++來(lái)修改.

也可以把認(rèn)證碼比較那里設(shè)置成變量,鏈接到包含的文件里,比如config文件,自己操作吧,個(gè)人博客我就不講究互動(dòng)性了,其他的網(wǎng)站源碼也大同小異,找到登錄界面和提交頁(yè)面,修改之即可.

希望本文所述對(duì)大家的dedecms建站有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 积石山| 盐津县| 安化县| 剑河县| 珠海市| 高淳县| 新河县| 民丰县| 吐鲁番市| 嘉义市| 万山特区| 阿拉善盟| 海口市| 奈曼旗| 北京市| 东海县| 双峰县| 那坡县| 三台县| 喜德县| 宕昌县| 来宾市| 青冈县| 平山县| 惠州市| 会同县| 建平县| 定日县| 平陆县| 威远县| 大荔县| 玉田县| 隆德县| 灵石县| 嘉义市| 兴山县| 甘德县| 濮阳县| 当雄县| 桐城市| 尉氏县|