PHP驗證碼產生與驗證例子_PHP教程

來源:互聯網
上載者:User
驗證碼是一個現在WEB2.0中常見的一個功能了,像註冊、登入又或者是留言頁面,都需要註冊碼來驗證當前操作者的合法性,我們會看到有些網站沒有驗證碼,但那是更進階的驗證了,下面我們來看常用的驗證碼產生與使用方法。

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

1.1 顯示驗證碼的圖片

代碼如下 複製代碼

$num=intval(mt_rand(1000,9999));
for($i=0 ; $i<4 ;$i++)
{echo "";}
?>

1.2 驗證過程

代碼如下 複製代碼

if (strval($inputyzm)!=strval($num))
{
echo "";
exit;
}

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

2.1 顯示驗證碼的圖片

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

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

代碼如下 複製代碼

2.3 定義一個check()函數

代碼如下 複製代碼

看一個完整的執行個體

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

代碼如下 複製代碼

session_start();
//在頁首先要開啟session,
//error_reporting(2047);
session_destroy();
//將session去掉,以每次都能取新的session值;
//用seesion 效果不錯,也很方便
?>


session 圖片驗證執行個體


此例為session驗證執行個體

//列印上一個session;
echo "上一個session:"._SESSION["authnum_session"]."
";
validate="";
if(isset(_POST["validate"])){
validate=_POST["validate"];
echo "您剛才輸入的是:"._POST["validate"]."
狀態:";
if(validate!=_SESSION["authnum_session"]){
//判斷session值與使用者輸入的驗證碼是否一致;
echo "輸入有誤";
}else{
echo "通過驗證";
}
}
/*
//列印全部session;
PrintArr(_SESSION);
function PrintArr(aArray){
echo '

';<br /> print_r(aArray);<br /> echo '';
}
*/
?>

http://www.bkjia.com/PHPjc/632824.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632824.htmlTechArticle驗證碼是一個現在WEB2.0中常見的一個功能了,像註冊、登入又或者是留言頁面,都需要註冊碼來驗證當前操作者的合法性,我們會看到有些網...

  • 聯繫我們

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