PHP驗證碼產生例子

來源:互聯網
上載者:User

使用PHP的GD庫擴充類製作驗證碼的基本步驟:
啟用php.ini設定檔中的extension=php_gd2.dll擴充(開啟php.ini設定檔,去掉行首的分號後重啟Apache即可);
下面是PHP產生驗證碼的代碼:

 代碼如下 複製代碼

<?php
for($i=0;$i<5;$i++){
    $suijishu.=dechex(rand(1,15));//使用迴圈產生一個十六進位格式的五位元
}
setcookie("useryzm",$suijishu);//建立一個名為useryzm、值為$suijishu的cookie
$img=imagecreatetruecolor(100,30);//建立一個寬100高30的圖片驗證碼
$bg=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//定義驗證碼的背景顏色
$sc=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));//定義驗證碼字型的顏色
imagestring($img,5,rand(0,50),rand(0,15),$suijishu,$sc);//定義字型的位置(左上方為座標原點)
for($k=0;$k<10;$k++){
    imageline($img,rand(1,100),rand(1,100),rand(1,100),rand(1,100),$sc);//在驗證碼上繪製直線(擾亂作用)
    imagesetpixel($img,rand(1,100),rand(1,30),$sc);//在驗證碼上繪製點(擾亂作用)
}
ob_clean();//清空輸出緩衝區(這句很重要)
header("Content-type:image/jpeg");//定義輸出圖片的格式(image/後面可以是jpeg或png或gif等圖片格式)
imagejpeg($img);//輸出圖象
imageDestroy($img);//釋放記憶體,完成建立
?>

下面是HTML中調用驗證碼的代碼:

 代碼如下 複製代碼

<html>
...
<script language="javascript">
function changeyzm(){
    var img = document.getElementById("yzmimg").src = "gdyzm.php?id="+Math.random()*10;
    return ;
}
</script>
...
<img src="gdyzm.php" name="yzmimg" width="100" height="30" id="yzmimg" title="點擊重新整理" onclick="changeyzm();" />
...
</html>

如果出現"映像“XXXX”因其本身有錯無法顯示"的錯誤,很可能是漏了ob_clean();這句,或是檔案的物理編碼出了問題(修改物理編碼的方法可以參考PHP建立utf8檔案)
如果沒有加ob_clean();這句,在本地測試且物理編碼為ANSI時沒問題,物理編碼為UTF-8時則會報錯(映像“XXXX”因其本身有錯無法顯示)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.