
批改狀態(tài):合格
老師批語:
為了保障用戶賬號(hào)密碼安全,往往需要對(duì)用戶的賬號(hào)注冊(cè)、密碼等輸入內(nèi)容做一個(gè)檢測(cè)限制,如弱口令限制,驗(yàn)證碼防機(jī)器自動(dòng)腳本限制等,下面對(duì)用戶模擬注冊(cè)做一個(gè)簡(jiǎn)單的限制:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>用戶注冊(cè)頁(yè)面</title> <style> #main { /*讓div內(nèi)部文字居中*/ background-color: #fff; border-radius: 20px; width: 300px; height: 350px; margin: auto; position: absolute; top: 0; left: 0; right: 0; bottom: 0; } </style> </head> <body> <?php //顯示除去 E_NOTICE 之外的所有錯(cuò)誤信息 error_reporting(E_ALL & ~E_NOTICE); //制作驗(yàn)證碼 //聲明一個(gè)字符串集 $codes = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; //做一個(gè)四位的驗(yàn)證碼, for($i=0;$i<4;$i++){ $code .= "<span style='color:rgb(".mt_rand(0,255).",".mt_rand(0,255).",".mt_rand(0,255).")'>".$codes{mt_rand(0,strlen($codes)-1)}."</span>"; } ?> <div id="main"> <!-- 建立html輸入頁(yè)面 --> <form action="" method="post"> 請(qǐng)輸入賬號(hào):<input type="text" name="username" value="<?=$username?>" required><br> 請(qǐng)輸入密碼:<input type="password" name="password1" required value="<?=$password1?>"><br> 請(qǐng)確認(rèn)密碼:<input type="password" name="password2" required value="<?=$password2?>"><br> 請(qǐng)輸入驗(yàn)證碼:<?=$code?> <input type="text" name="code1"><br> <input type="text" name="code2" value = "<?=$code?>" hidden><br> <input type="submit" name="sub" value="注冊(cè)"> </form> </div> <?php //獲取POST提交的內(nèi)容 $username = $_POST["username"]; $password1 = $_POST["password1"]; $password2 = $_POST["password2"]; $sub = $_POST["sub"]; $code1 = $_POST['code1']; //將驗(yàn)證碼的內(nèi)容轉(zhuǎn)為小寫 $code2 = strip_tags($_POST['code2']); //將用戶名首位轉(zhuǎn)為大寫 $username = ucfirst($username); //數(shù)字連續(xù)字符弱口令判斷 $weak = strpos($password1,'012')===false?strpos($password1,'123')===false?strpos($password1,'234')===false?strpos($password1,'345')===false?strpos($password1,'456')===false?strpos($password1,'678')===false?strpos($password1,'789')===false?strpos($password1,'890')===false?:'':'':'':'':'':'':'':''; //檢測(cè)是否有點(diǎn)擊操作 if(isset($sub)): //strcasecmp($string1,$string2)不區(qū)分大小寫做判斷,判斷驗(yàn)證碼輸入是否正確 if(strcasecmp($code1,$code2)!=0) $mess = "<span style='color:red;'>驗(yàn)證碼輸入錯(cuò)誤</span>"; endif; //如果沒有報(bào)錯(cuò)且有點(diǎn)擊操作往下執(zhí)行 if(!$mess && isset($sub)): //判斷用戶名首位是否是字母 if(ord($username)<65 || ord($username)>90): echo "<span style='color:red;'>用戶名必須以字母開頭</span>"; else: //判斷是否是弱口令 if($weak!==false): echo "<span style='color:red;'>密碼過于簡(jiǎn)單,請(qǐng)重新輸入</span>"; else: //判斷兩次輸入密碼是否一致 if($password1 !== $password2): echo "<span style='color:red;'>兩次輸入密碼不一致</span>"; else: //判斷密碼長(zhǎng)度是否在6-12位 if(strlen($password1)<6 || strlen($password1)>12): echo "<span style='color:red;'>密碼長(zhǎng)度請(qǐng)?jiān)O(shè)置6-12位字符</span>"; //如果都符合條件返回注冊(cè)成功提示并將密碼加密方便后面?zhèn)鬏? else:$password3 = sha1($password1);$password4 = sha1($password2);echo "注冊(cè)成功,請(qǐng)返回登錄"; endif; endif; endif; endif; //如果有報(bào)錯(cuò)直接輸出報(bào)錯(cuò) else:echo $mess; endif; ?> </body> </html>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)