最近在學習html編程,今天學習了如何用html實現登錄動態驗證碼功能。下面是我編寫的代碼:
首先在HTML中,我們需要用一個form標簽創建一個表單,用于收集用戶的登錄信息,如下圖所示:
<form name="login" method="post" action="login.php"> <input type="text" name="username" placeholder="請輸入用戶名"> <input type="password" name="password" placeholder="請輸入密碼"> <input type="text" name="code" placeholder="請輸入驗證碼"> <img id="code" src="getCode.php" onclick="this.src='getCode.php?'+Math.random()" alt="驗證碼"> <input type="submit" value="登錄"> </form>
上面的代碼中,我們可以看到,form標簽中包含了3個input標簽,分別用于輸入用戶名、輸入密碼和輸入驗證碼。其中驗證碼的輸入框用來創建。
接下來,我們需要在標簽中調用一個PHP文件,用于生成驗證碼。如下圖所示:
<img id="code" src="getCode.php" onclick="this.src='getCode.php?'+Math.random()" alt="驗證碼">
由于驗證碼是動態生成的,因此每次刷新頁面都會生成一個新的驗證碼。為了防止緩存,我們需要在標簽后面加上一個隨機數。
最后一步,我們需要編寫PHP文件來生成驗證碼,如下代碼所示:
<?php session_start(); header("Content-Type:image/png"); $width=100; $height=30; $img=imagecreate($width,$height); $bgcolor=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255)); $fontcolor=imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100)); $randcode=""; for($i=0;$i<4;$i++){ $fontsize=6; $x=rand(5,10)+$i*$fontsize; $y=rand(5,10); $num=rand(0,9); $randcode.=$num; imagestring($img,$fontsize,$x,$y,$num,$fontcolor); } $_SESSION['code']=$randcode; for($i=0;$i<50;$i++){ $x1=rand(0,$width); $x2=rand(0,$width); $y1=rand(0,$height); $y2=rand(0,$height); imageline($img,$x1,$y1,$x2,$y2,$fontcolor); } imagepng($img); imagedestroy($img); ?>
上面的代碼中,我們使用了PHP的GD庫來生成驗證碼圖片。首先創建了一個圖像,然后隨機生成背景顏色和字體顏色,并在圖像中畫出驗證碼和一些干擾線,最后將生成的圖像輸出到瀏覽器中。
這樣,我們就成功地實現了登錄動態驗證碼功能。現在,每次用戶登錄時都需要輸入驗證碼,可以有效地防止惡意攻擊。