ホームページ  >  記事  >  バックエンド開発  >  PHPランダム検証コード画像生成例の詳細説明

PHPランダム検証コード画像生成例の詳細説明

WBOY
WBOYオリジナル
2016-07-25 08:52:471039ブラウズ
  1. /**デフォルトのホームページ **/

  2. class DefaultController extends AppController
  3. {
  4. public functionindex() {
  5. $len = 5;
  6. $str = "ABCDEFGHIJKLNMPQRSTUVWXYZ12; 3456789 " ;

  7. $im = imagecreatetruecolor ( 70, 20 );

  8. $bgc = imagecolorallocate($im, 255, 255, 255);
  9. $bgtxt = imagecolorallocate($im, 220, 220 , 220);

  10. //ランダムパレット

  11. $colors = array(
  12. imagecolorallocate($im, 255, 0, 0),
  13. imagecolorallocate($im, 0, 200, 0) ,
  14. imagecolorallocate($im, 0, 0, 255),
  15. imagecolorallocate($im, 0, 0, 0),
  16. imagecolorallocate($im, 255, 128, 0),
  17. imagecolorallocate($im, 255, 208, 0) ),
  18. imagecolorallocate($im, 98, 186, 245),
  19. );

  20. //背景色を塗りつぶします

  21. imagefill($im, 0, 0, $bgc);< /p>
  22. // 乱数を取得

  23. $verify = "";
  24. while (strlen($verify) < $len) {
  25. $i = strlen($verify); [rand(0, strlen($str))];
  26. $verify .= $random;

  27. //背景テキストを描画

  28. imagestring($im, 6, ($i*10) +3, rand(0,6), $random, $bgtxt);
  29. //本文情報を描画
  30. imagestring($im, 6, ($i*10)+3, rand(0,6), $ランダム , $colors[rand(0, count($colors)-1)]);
  31. }

  32. //ランダム ノイズを追加します

  33. for($i=0; $i$color = imagecolorallocate($im, rand(50,220), rand(50,220), rand(50,220));
  34. imagesetpixel($im, rand(0,70), rand(0,20), $ color);
  35. }

  36. // $_SESSION に検証コードを保存

  37. sess("verify", $verify);

  38. // 画像を出力キャッシュを解放します

  39. header('Content-type: image/png');
  40. imagedestroy($im)
  41. ?

  42. ;コード
  43. 例 2、ランダムな文字列と検証コードを生成するクラスの PHP インスタンス ランダムな文字列と検証コードを生成するクラス。

    次のコードの実装は、主に get_code() ともう 1 つの create_check_image() を区別することです。 セッションを使用する場合は、session_star() を最初に配置する必要があります。

    完全なコード:

    1. class RandCheckCode
    2. {
    3. /*関数名: get_code()
    4. *関数: ランダムな文字列を取得します
    5. *パラメータ:
    6. 1. (int)$length = 32 #ランダムな文字の長さ
    7. 2. (int)$mode = 0 #ランダムな文字の種類、
    8. 0は大文字と小文字の英語と数字、1は数字、2は小文字、3は大文字、
    9. 4は大文字と小文字文字、5 は大文字と数字、6 は小文字と数字
    10. *Return: 取得した文字列
    11. */
    12. function get_code($length=32,$mode=0)//ランダムな認証コードを取得 function
    13. {
    14. switch ( $mode)
    15. {
    16. case '1':
    17. $str='123456789';
    18. Break;
    19. case '2':
    20. $str='abcdefghijklmnopqrstuvwxyz';
    21. Break;
    22. case '3':
    23. $str=' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    24. ブレーク;
    25. ケース '4':
    26. $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    27. ブレーク;
    28. ケース '5':
    29. $str='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 5678 90';
    30. ブレーク;
    31. ケース '6':
    32. $str = 'abcdefghijklmnopqrstuvwxyz1234567890';
    33. ブレーク;
    34. デフォルト:
    35. $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
    36. ブレーク;
    37. }
    38. $checkstr='';
    39. $len = strlen($str)-1;
    40. for ($i=0 ; $i {
    41. //$num=rand(0,$len);//0 から $len までの乱数を生成します
    42. $num=mt_rand(0,$len) / /0 から $len までの乱数を生成します
    43. $checkstr.=$str[$num];

    44. }
    45. return $checkstr;
    46. }

    47. 関数:チェックコード画像の生成
    48. パラメータ:$checkcode:検証コード文字列
    49. 戻り値:画像を返す
    50. */
    51. function create_check_image($checkcode)//
    52. を生成します {
    53. $im=imagecreate(65,22);// 画像を生成します
    54. $black=imagecolorallocate($im, 0,0 ,0);//背景色
    55. $white=imagecolorallocate($im,255,255,255);//前景色
    56. $gray=imagecolorallocate($im,200,200,200);
    57. imagefill($im,30,30,$ grey); // $im 画像の座標 30,30 で $gray カラーで領域を塗りつぶします (画像の左上隅は 0,0) (つまり、30,30 にある同じ色の点と隣接する点はfill)

    58. imagestring($im,5,8,3,$checkcode,$white);//$white color を使用して、表現された画像の 8,3 に文字列 $checkcode を描画します$im 座標による (これは文字列の左上隅の座標で、画像全体の左上隅は 0,0 です)、5 はフォント サイズです。フォントは 1、2、3、4 のみです。または 5、組み込みフォント

    59. を ($i =0;$i {
    60. $randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255) );
    61. imagesetpixel($im,rand()%70, rand()%30,$randcolor);//$randcolor カラーを使用して、$im 画像上の (rand()%70, rand()) に点を描画します%30) 座標 (画像の左上隅が 0,0)
    62. }
    63. header("Content-type:image/png");
    64. imagepng($im);// 画像をブラウザまたはファイルに出力しますPNG 形式
    65. imagedestroy($im);//画像 $im を破棄します
    66. }
    67. }
    68. /*
    69. $randcode=new RandCheckCode();
    70. $checkstring=$randcode->get_code(5,7);
    71. $image=$randcode->create_check_image($checkstring);
    72. echo $image ;
    73. */
    74. ?>

    コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。