PHP驗證碼產生與驗證例子

來源:互聯網
上載者:User

1 一個簡單的驗證碼執行個體

1.1 顯示驗證碼的圖片

 代碼如下 複製代碼

    <?php
    $num=intval(mt_rand(1000,9999));
    for($i=0 ; $i<4 ;$i++)
    {echo "<img src=img/yzm/".substr(strval($num),$i,1).".gif/>";}
    ?>

1.2 驗證過程

 代碼如下 複製代碼

    if (strval($inputyzm)!=strval($num))
    {
    echo "<script>alert('驗證碼錯誤!');history.go(-1);</script>";
    exit;
    }

2 一個漢字的驗證碼執行個體

2.1 顯示驗證碼的圖片

   

 代碼如下 複製代碼
<?php
    $str="漢","字","驗","證","碼"); //可以定義漢字的內容和個數
    $word=strlen($str));
    for ($i=0;$i<4;$i++)
    {
    $num=rand(0,$word);
    $img = $img."<img src='../images/yzm/".$num".gif'/>";
    $pic = $pic.$str[$num];
    }
    >

2.2 將產生的隨機字串賦給一個隱藏欄位

   

 代碼如下 複製代碼
<input type="hidden" name="yzm" value="<?php echo $pic; ?/>">

2.3 定義一個check()函數

 代碼如下 複製代碼

    <script language="javascript">
    function check(form)
    {
    if(form.yzm.value==""){
    alert("請輸入驗證碼");
    form.yzm.focus();
    return false;
    }
    if(form.yzm.vale!=form.yz.value)
    {alert("驗證碼錯誤");
    form.yzm.focus();
    return false;
    }
    }
    </script>

看一個完整的執行個體

php 驗證碼產生與調用的例子,平時開發中經常使用,記錄一下。

1、驗證碼組建檔案code.php

 代碼如下 複製代碼

    <?
    Header("Content-type:image/png");
    //定義header,聲明圖片檔案,最好是png,無著作權之擾;
    //產生新的四位整數驗證碼
    session_start();//開啟session;
    authnum_session = '';
    str = 'abcdefghijkmnpqrstuvwxyz1234567890';
    //定義用來顯示在圖片上的數字和字母;
    l = strlen(str); //得到字串的長度;
    //迴圈隨機抽取四位前面定義的字母和數字;
    for(i=1;i<=4;i++)
    {
    num=rand(0,l-1);
    //每次隨機抽取一位元字;從第一個字到該字串最大長度,
    //減1是因為截取字元是從0開始起算;這樣34字元任意都有可能排在其中;
    authnum_session.= str[num];
    //將通過數字得來的字元連起來一共是四位;
    }
    session_register("authnum_session");
    //用session來做驗證也不錯;註冊session,名稱為authnum_session,
    //其它頁面只要包含了該圖片
    //即可以通過_SESSION["authnum_session"]來調用

    //產生驗證碼圖片,
    srand((double)microtime()*1000000);
    im = imagecreate(50,20);//圖片寬與高;
    //主要用到黑白灰三種色;
    black = ImageColorAllocate(im, 0,0,0);
    white = ImageColorAllocate(im, 255,255,255);
    gray = ImageColorAllocate(im, 200,200,200);
    //將四位整數驗證碼繪入圖片
    imagefill(im,68,30,gray);
    //如不用幹擾線,注釋就行了;
    li = ImageColorAllocate(im, 220,220,220);
    for(i=0;i<3;i++)
    {//加入3條幹擾線;也可以不要;視情況而定,因為可能影響使用者輸入;
    imageline(im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),li);
    }
    //字元在圖片的位置;
    imagestring(im, 5, 8, 2, authnum_session, white);
    for(i=0;i<90;i++)
    {//加入幹擾象素
    imagesetpixel(im, rand()%70 , rand()%30 , gray);
    }
    ImagePNG(im);
    ImageDestroy(im);
    ?>

以上代碼,參考了如下的文章:
php圖片驗證碼
php產生驗證碼的例子
用php產生帶有雪花背景的驗證碼

2、調用驗證碼的頁面 sessionValidate.php

 代碼如下 複製代碼

    <?php
    session_start();
    //在頁首先要開啟session,
    //error_reporting(2047);
    session_destroy();
    //將session去掉,以每次都能取新的session值;
    //用seesion 效果不錯,也很方便
    ?>
    <html>
    <head>
    <title>session 圖片驗證執行個體</title>
    </head>
    <body>
    此例為session驗證執行個體
    <form action="" method="post">
    驗證碼:<input type="text" name="validate" value="" size=10> <img src="checkNum_session.php"><br>
    <input type="submit">
    </form>
    <?php
    //列印上一個session;
    echo "上一個session:<b>"._SESSION["authnum_session"]."</b><br>";
    validate="";
    if(isset(_POST["validate"])){
    validate=_POST["validate"];
    echo "您剛才輸入的是:"._POST["validate"]."<br>狀態:";
    if(validate!=_SESSION["authnum_session"]){
    //判斷session值與使用者輸入的驗證碼是否一致;
    echo "<font color=red>輸入有誤</font>";
    }else{
    echo "<font color=green>通過驗證</font>";
    }
    }
    /*
    //列印全部session;
    PrintArr(_SESSION);
    function PrintArr(aArray){
    echo '<xmp>';
    print_r(aArray);
    echo '</xmp>';
    }
    */
    ?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.