PHP編寫登錄驗(yàn)證碼功能 附調(diào)用方法
來源:易賢網(wǎng) 閱讀:752 次 日期:2016-08-20 13:41:19
溫馨提示:易賢網(wǎng)小編為您整理了“PHP編寫登錄驗(yàn)證碼功能 附調(diào)用方法”,方便廣大網(wǎng)友查閱!

本文實(shí)例為大家分享了一個(gè)PHP寫的登錄驗(yàn)證碼功能,供大家參考,具體內(nèi)容如下

ShowKey.php

<?php

session_start();

//設(shè)置COOKIE或Session

function esetcookie($name,$str,$life=0){

//本函數(shù)將字符串 str 全部變小寫字符串使驗(yàn)證碼輸入不區(qū)分大小寫----在提交表單進(jìn)行session比較同樣需要次函數(shù)轉(zhuǎn)化

 $_SESSION[$name]=strtolower($str);

}

//獲取隨機(jī)字符 此函數(shù)區(qū)分字符大小寫 如果不區(qū)分大小寫可加入函數(shù)strtolower

function domake_password($len) 

  $chars = array( 

    /*"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 

    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", 

    "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 

    "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", 

    "S", "T", "U", "V", "W", "X", "Y", "Z",*/ "0", "1", "2", 

    "3", "4", "5", "6", "7", "8", "9"

  ); 

  $charsLen = count($chars) - 1; 

  shuffle($chars);// 將數(shù)組打亂

  $output = ""; 

  for ($i=0; $i<$len; $i++) 

  { 

    $output .= $chars[mt_rand(0, $charsLen)]; //獲得一個(gè)數(shù)組元素

  } 

  return $output;

//顯示驗(yàn)證碼

function ShowKey(){

 $key=domake_password(4);//獲取隨機(jī)值

 $set=esetcookie("checkkey",$key);//將隨機(jī)值寫入cookie或session

 //是否支持gd庫

 if(function_exists("imagejpeg")) 

 {

  header ("Content-type: image/jpeg");

  $img=imagecreate(47,20);

  $blue=imagecolorallocate($img,102,102,102);

  $white=ImageColorAllocate($img,255,255,255);

  $black=ImageColorAllocate($img,71,71,71);

  imagefill($img,0,0,$blue);

  imagestring($img,5,6,3,$key,$white);

  for($i=0;$i<90;$i++) //加入干擾象素

  {

   imagesetpixel($img,rand()%70,rand()%30,$black);

  }

  imagejpeg($img);

  imagedestroy($img);

 }

 elseif (function_exists("imagepng"))

 {

  header ("Content-type: image/png");

  $img=imagecreate(47,20);

  $blue=imagecolorallocate($img,102,102,102);

  $white=ImageColorAllocate($img,255,255,255);

  $black=ImageColorAllocate($img,71,71,71);

  imagefill($img,0,0,$blue);

  imagestring($img,5,6,3,$key,$white);

  for($i=0;$i<90;$i++) //加入干擾象素

  {

   imagesetpixel($img,rand()%70,rand()%30,$black);

  }

  imagepng($img);

  imagedestroy($img);

 }

 elseif (function_exists("imagegif")) 

 {

  header("Content-type: image/gif");

  $img=imagecreate(47,20);

  $blue=imagecolorallocate($img,102,102,102);

  $white=ImageColorAllocate($img,255,255,255);

  $black=ImageColorAllocate($img,71,71,71);

  imagefill($img,0,0,$blue);

  imagestring($img,5,6,3,$key,$white);

  for($i=0;$i<90;$i++) //加入干擾象素

  {

   imagesetpixel($img,rand()%70,rand()%30,$black);

  }

  imagegif($img);

  imagedestroy($img);

 }

 elseif (function_exists("imagewbmp")) 

 {

  header ("Content-type: image/vnd.wap.wbmp");

  $img=imagecreate(47,20);

  $blue=imagecolorallocate($img,102,102,102);

  $white=ImageColorAllocate($img,255,255,255);

  $black=ImageColorAllocate($img,71,71,71);

  imagefill($img,0,0,$blue);

  imagestring($img,5,6,3,$key,$white);

  for($i=0;$i<90;$i++) //加入干擾象素

  {

   imagesetpixel($img,rand()%70,rand()%30,$black);

  }

  imagewbmp($img);

  imagedestroy($img);

 }

 else

 {

  //不支持驗(yàn)證碼

  header("content-type:image/jpeg\r\n");

  header("Pragma:no-cache\r\n");

  header("Cache-Control:no-cache\r\n");

  header("Expires:0\r\n");

  $fp = fopen("data/vdcode.jpg","r"); 

 }

}

ShowKey();

?>

調(diào)用方法:

代碼如下:

<img src="ShowKey.php" name="KeyImg" id="KeyImg"  onClick="KeyImg.src='ShowKey.php?'+Math.random()"> 

以上就是本文的全部內(nèi)容,希望對(duì)大家學(xué)習(xí)php程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP編寫登錄驗(yàn)證碼功能 附調(diào)用方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)