-
/**デフォルトのホームページ **/ - class DefaultController extends AppController
- {
- public functionindex() {
- $len = 5;
- $str = "ABCDEFGHIJKLNMPQRSTUVWXYZ12; 3456789 " ;
$im = imagecreatetruecolor ( 70, 20 );
- $bgc = imagecolorallocate($im, 255, 255, 255);
- $bgtxt = imagecolorallocate($im, 220, 220 , 220);
//ランダムパレット
- $colors = array(
- imagecolorallocate($im, 255, 0, 0),
- imagecolorallocate($im, 0, 200, 0) ,
- imagecolorallocate($im, 0, 0, 255),
- imagecolorallocate($im, 0, 0, 0),
- imagecolorallocate($im, 255, 128, 0),
- imagecolorallocate($im, 255, 208, 0) ),
- imagecolorallocate($im, 98, 186, 245),
- );
//背景色を塗りつぶします
- imagefill($im, 0, 0, $bgc);< /p>
// 乱数を取得
- $verify = "";
- while (strlen($verify) < $len) {
- $i = strlen($verify); [rand(0, strlen($str))];
- $verify .= $random;
//背景テキストを描画
- imagestring($im, 6, ($i*10) +3, rand(0,6), $random, $bgtxt);
- //本文情報を描画
- imagestring($im, 6, ($i*10)+3, rand(0,6), $ランダム , $colors[rand(0, count($colors)-1)]);
- }
//ランダム ノイズを追加します
- for($i=0; $i$color = imagecolorallocate($im, rand(50,220), rand(50,220), rand(50,220));
- imagesetpixel($im, rand(0,70), rand(0,20), $ color);
- }
// $_SESSION に検証コードを保存
- sess("verify", $verify);
// 画像を出力キャッシュを解放します
- header('Content-type: image/png');
- imagedestroy($im)
- ?
-
-
-
- ;コード
-
-
例 2、ランダムな文字列と検証コードを生成するクラスの PHP インスタンス
ランダムな文字列と検証コードを生成するクラス。
次のコードの実装は、主に get_code() ともう 1 つの create_check_image() を区別することです。
セッションを使用する場合は、session_star() を最初に配置する必要があります。
完全なコード:
-
-
- class RandCheckCode
- {
- /*関数名: get_code()
- *関数: ランダムな文字列を取得します
- *パラメータ:
- 1. (int)$length = 32 #ランダムな文字の長さ
- 2. (int)$mode = 0 #ランダムな文字の種類、
- 0は大文字と小文字の英語と数字、1は数字、2は小文字、3は大文字、
- 4は大文字と小文字文字、5 は大文字と数字、6 は小文字と数字
- *Return: 取得した文字列
- */
- function get_code($length=32,$mode=0)//ランダムな認証コードを取得 function
- {
- switch ( $mode)
- {
- case '1':
- $str='123456789';
- Break;
- case '2':
- $str='abcdefghijklmnopqrstuvwxyz';
- Break;
- case '3':
- $str=' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- ブレーク;
- ケース '4':
- $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- ブレーク;
- ケース '5':
- $str='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234 5678 90';
- ブレーク;
- ケース '6':
- $str = 'abcdefghijklmnopqrstuvwxyz1234567890';
- ブレーク;
- デフォルト:
- $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
- ブレーク;
- }
- $checkstr='';
- $len = strlen($str)-1;
- for ($i=0 ; $i {
- //$num=rand(0,$len);//0 から $len までの乱数を生成します
- $num=mt_rand(0,$len) / /0 から $len までの乱数を生成します
- $checkstr.=$str[$num];
- }
- return $checkstr;
- }
-
- 関数:チェックコード画像の生成
- パラメータ:$checkcode:検証コード文字列
- 戻り値:画像を返す
- */
- function create_check_image($checkcode)//
- を生成します {
- $im=imagecreate(65,22);// 画像を生成します
- $black=imagecolorallocate($im, 0,0 ,0);//背景色
- $white=imagecolorallocate($im,255,255,255);//前景色
- $gray=imagecolorallocate($im,200,200,200);
- imagefill($im,30,30,$ grey); // $im 画像の座標 30,30 で $gray カラーで領域を塗りつぶします (画像の左上隅は 0,0) (つまり、30,30 にある同じ色の点と隣接する点はfill)
imagestring($im,5,8,3,$checkcode,$white);//$white color を使用して、表現された画像の 8,3 に文字列 $checkcode を描画します$im 座標による (これは文字列の左上隅の座標で、画像全体の左上隅は 0,0 です)、5 はフォント サイズです。フォントは 1、2、3、4 のみです。または 5、組み込みフォント
- を ($i =0;$i {
- $randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255) );
- imagesetpixel($im,rand()%70, rand()%30,$randcolor);//$randcolor カラーを使用して、$im 画像上の (rand()%70, rand()) に点を描画します%30) 座標 (画像の左上隅が 0,0)
- }
- header("Content-type:image/png");
- imagepng($im);// 画像をブラウザまたはファイルに出力しますPNG 形式
- imagedestroy($im);//画像 $im を破棄します
- }
- }
- /*
- $randcode=new RandCheckCode();
- $checkstring=$randcode->get_code(5,7);
- $image=$randcode->create_check_image($checkstring);
- echo $image ;
- */
- ?>
-
コードをコピー
|