国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php圖片驗證碼代碼

2024-09-04 11:44:21
字體:
來源:轉載
供稿:網友

在用戶驗證頁面,如注冊,登錄的時候,為了加強用戶登錄的安全性,添加驗證碼驗證代碼,下面我為各位朋友提供幾種不同同類型的php驗證代碼程序,最后一款是一款使用了驗證代碼的實例代碼,實例代碼如下:

  1. date_default_timezone_set('asia/shanghai'); 
  2.  function setcode($len
  3.  { 
  4.   $code = ''
  5.   for ($i=0;$i<$len;$i++)//生成隨機長度 
  6.   { 
  7.    $code .= chr(drand()); 
  8.   } 
  9.   return $code
  10.  } 
  11.  //生成一個隨機字符 
  12.  function drand() 
  13.  { 
  14.   $rand = mt_rand(0,2); 
  15.   $str = ''
  16.   switch ($rand
  17.   { 
  18.    case 0: $str = mt_rand(48,57);break;//數字 
  19.    case 1: $str = mt_rand(65,90);break;//大寫字母 
  20.    case 2: $str = mt_rand(97,122);break;//小寫字母 
  21.   } 
  22.   return $str
  23.  } 
  24.  $_session['checkcode'] = $code = setcode(5);  
  25.  
  26. //php圖片驗證碼原代碼,需支持gd2.dll擴展,需修改php.ini后重啟iis or ap 
  27.  
  28. session_start();  
  29. session_register('safecode'); 
  30. $type = 'gif'
  31. $width= 40; 
  32. $height= 16; 
  33. header("content-type: image/".$type); 
  34. srand((double)microtime()*1000000); 
  35. $randval = randstr(4,""); 
  36. if($type!='gif' && function_exists('imagecreatetruecolor')){  
  37.      $im = @imagecreatetruecolor($width,$height); 
  38. }else{  
  39.      $im = @imagecreate($width,$height); 
  40.      $r = array(225,211,255,223); 
  41.      $g = array(225,236,237,215); 
  42.      $b = array(225,236,166,125); 
  43.  
  44.      $key = rand(0,3); 
  45.    
  46.      $backcolor = imagecolorallocate($im,$r[$key],$g[$key],$b[$key]);//背景色(隨機) 
  47.      $bordercolor = imagecolorallocate($im, 0, 0, 0);//邊框色 
  48.      $pointcolor = imagecolorallocate($im, 255, 170, 255);//點顏色 
  49.  
  50.      @imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backcolor);//背景位置 
  51.      @imagerectangle($im, 0, 0, $width-1, $height-1, $bordercolor); //邊框位置 
  52.      $stringcolor = imagecolorallocate($im, 255,51,153); 
  53.  
  54.      for($i=0;$i<=100;$i++){  
  55.            $pointx = rand(2,$width-2); 
  56.            $pointy = rand(2,$height-2); 
  57.            @imagesetpixel($im$pointx$pointy$pointcolor); 
  58.      } 
  59.  
  60.      @imagestring($im, 3, 5, 1, $randval$stringcolor); 
  61.      $imagefun='image'.$type
  62.      $imagefun($im); 
  63.      @imagedestroy($im); 
  64.      $_session['safecode'] = $randval
  65. //產生隨機字符串 
  66. function randstr($len=6,$format='all') {  
  67.            switch($format) {  
  68.                  case 'all'
  69.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789www.111cn.net'break
  70.                  case 'char'
  71.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'break
  72.                  case 'number'
  73.                  $chars='0123456789'break
  74.                  default : 
  75.                  $chars='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';  
  76.                  break
  77.            } 
  78.      $string=""
  79.      while(strlen($string)<$len
  80.      $string.=substr($chars,(mt_rand()%strlen($chars)),1); 
  81.      return $string
  82.  
  83. //調用此頁面,如果下面的式子成立,則生成驗證碼圖片  
  84. if($_get["action"]=="verifycode")  
  85. {  
  86.     rand_create();  
  87. }  
  88. //驗證碼圖片生成  
  89. function rand_create()  
  90. {  
  91.     //通知瀏覽器將要輸出png圖片  
  92.     header("content-type: image/png");  
  93.     //準備好隨機數發生器種子   
  94.     srand((double)microtime()*1000000);  
  95.     //準備圖片的相關參數    
  96.     $im = imagecreate(62,20);  
  97.     $black = imagecolorallocate($im, 0,0,0);  //rgb黑色標識符  
  98.     $white = imagecolorallocate($im, 255,255,255); //rgb白色標識符  
  99.     $gray = imagecolorallocate($im, 200,200,200); //rgb灰色標識符  
  100.     //開始作圖      
  101.     imagefill($im,0,0,$gray);  
  102.     while(($randval=rand()%100000)<10000);{  
  103.         $_session["login_check_num"] = $randval;  
  104.         //將四位整數驗證碼繪入圖片   
  105.         imagestring($im, 5, 10, 3, $randval$black);  
  106.     }  
  107.     //加入干擾象素     
  108.     for($i=0;$i<200;$i++){  
  109.         $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));  
  110.         imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);  
  111.     }  
  112.     //輸出驗證圖片  
  113.     imagepng($im);  
  114.     //銷毀圖像標識符  
  115.     imagedestroy($im);  
  116. }  
  117. //檢驗驗證碼  
  118. function rand_check()  
  119. {  
  120.     if($_post["reg_rand"] == $_session["login_check_num"]){  
  121.         return true;  
  122.     } //開源代碼Vevb.com 
  123.     else{  
  124.         exit("驗證碼輸入錯誤");  
  125.     }  

驗證碼通過gd生成png圖片,并把$randval隨機數字賦給$_session['login_check_num'],在通過用戶輸入的$_post進行比較,來判斷是否正確,達到需要實現的功能,需要修改php.ini文件,使php支持gd庫.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾阳县| 洛隆县| 凤山市| 古田县| 策勒县| 伊通| 东港市| 宁阳县| 崇文区| 克什克腾旗| 仪征市| 长武县| 永福县| 册亨县| 无为县| 廉江市| 普安县| 衡阳县| 克什克腾旗| 平阴县| 晋江市| 灌南县| 东至县| 方山县| 黄陵县| 梨树县| 合阳县| 青铜峡市| 江孜县| 津南区| 云和县| 新干县| 库伦旗| 尼勒克县| 泰州市| 富源县| 淮南市| 敦煌市| 孝昌县| 彝良县| 嘉禾县|