$_SESSION['check_num']=$ランド
$image=imagecreatetruecolor(50,30);
$bg=imagecolorallocate($im,0,0,0);//パレットを初めて使用するときは、背景色
$te=imagecolorallocate($im,255,255,255);
画像文字列($image,6,rand(0,20),rand(0,2),$rand,$te);
ob_clean();//検証コードを生成する必要があるため、画像「http://localhost/**.php」が PHP Web ページに表示されますが、エラーがあるため表示できません
header("コンテンツタイプ:image/jpeg");
?>
画像に干渉線を描画するコード:
コードは次のとおりです |
コードをコピー |
for($i=0;$i<8;$i++)//複数の線を描画します
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//ランダムな色を生成します
イメージライン($im,rand(10,40),0,rand(10,40),20,$cg);
}
|
画像上に干渉点を描画するコード:
コードは次のとおりです
| コードをコピー
|
for($i=0;$i<80;$i++)//複数の点を描画します
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg);
}
|
画像コードにテキストを書き込みます:
コードは次のとおりです
コードをコピー |
|
$str=array('I','Me','Dear','Dear');//ストレージ表示漢字
for($i=0;$i<4;$i++)
{
$sss.=$str[rand(0,3)];//漢字をランダムに表示します
}
//$str=iconv("gb2312","utf-8",$str); //中国語の文字エンコード変換、私の場合は必要ないようです
imagettftext($im,10,0,rand(5,60),rand(5,60),$te,"simhei.ttf",$sss);//
| 最後に、実際の状況に基づいた完全な例を共有します
コードは次のとおりです |
コードをコピー |
/**
* 認証コード画像を生成
*
* @param String $word セッション内の認証コードの変数名
*/
関数valiCode($word='randcode'){
Header("Content-type: image/gif");
$border = 0; //ボーダーが必要かどうか 1 はい: 0 いいえ
$how = 4 //認証コードの桁数 ;
$w = $how*15 //画像の幅 ;
$h = 18 //画像の高さ ;
$fontsize = 10 //フォントサイズ ;
$alpha = "abcdefghijkmnpqrstuvwxyz"; //認証コードの内容 1: 文字
$number = "23456789"; //認証コードの内容 2: 番号
$randcode = "" //検証コード文字列の初期化 ;
srand((double)microtime()*1000000) //乱数シードを初期化します
$im = ImageCreate($w, $h) //検証用画像を作成します
/*
*基本フレームを描きます
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255) //背景色を設定します ;
ImageFill($im, 0, 0, $bgcolor); //背景色を塗りつぶします
if($border)
{
$black = ImageColorAllocate($im, 0, 0, 0) //境界線の色を設定します ;
ImageRectangle($im, 0, 0, $w-1, $h-1, $black);// 境界線を描画します
}
/*
* ランダムな文字を少しずつ生成します
*/
for($i=0; $i<$how; $i++)
{
$alpha_or_number = mt_rand(0, 1) //文字または数字 ;
$str = $alpha_or_number ? $alpha : $number;
$this = mt_rand(0, strlen($str)-1) //どの文字を取るか ;
$code = substr($str, $that, 1) // 文字を取得します ;
$j = !$i ? 4 : $j+15; // 文字の位置を描画します
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //文字に色が付きます
ImageChar($im, $fontsize, $j, 3, $code, $color3) // 文字を描画します
$randcode .= $code //認証コード文字列を少しずつ追加します
}
/*
*干渉を追加する必要がある場合は、コメントを削除してください
*
※以下のfor()ループは背景干渉線を描画するコードです
*/
/* + ------------------------背景干渉線の描画開始---------- - --------------------------------- + */
for($i=0; $i<5; $i++)//背景の干渉ラインを描画します
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干渉線の色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1);
}
/* + ----------------------------------背景干渉線描画終了------ --- ------------------------ + */
/*
*干渉を追加する必要がある場合は、コメントを削除してください
*
※以下のfor()ループは背景干渉点を描画するコードです
*/
/* + --------------------------------背景干渉点の描画開始----------- - ----------------------------- + */
for($i=0; $i<$how*40; $i++)//背景の干渉点を描画
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干渉点の色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2);
}
/* + ------------------------背景干渉点の描画終了----------- - -------------------------------- + */
// ログイン情報を送信するときに検証コードが正しいかどうかを確認しやすくするために、検証コード文字列をセッションに書き込みます。例: $_POST['randcode'] = $_SESSION['randcode']
$_SESSION[$word] = $randcode;
/*描画終了*/
Imagegif($im);
ImageDestroy($im);
/*描画終了*/
}
| 呼び出し方法も非常に簡単です。上記の例を img.php ファイルに保存し、呼び出したいページに移動します。
HTMLページは以下の通りです
コードは次のとおりです
| コードをコピー
|
<スクリプト言語="javascript">
関数refresh_code()
{
form1.imgcode.src="verifycode.php?a="+Math.random();
}
スクリプト>
| コードは次のとおりです
コードをコピー
セッション開始();
if((strtoupper($_POST["code"])) == strtoupper(($_SESSION["VerifyCode"]))){
print("検証コードは正しいです。");
}その他{ |
Print("認証コードエラー");
}
| ?>
これで認証コード画像の生成と利用までのプロセスが完了しました。これは、PHP の入門から認証コードの習得までを網羅していると考えられます。
http://www.bkjia.com/PHPjc/631625.html |
www.bkjia.com
true http://www.bkjia.com/PHPjc/631625.html技術記事 php ではグラフィック gd.dll ライブラリが提供されているため、php で検証コード イメージを生成するのは非常に簡単です。 gd グラフィック ライブラリを有効にするには、php.ini の php-gd の前に「;」を追加するだけです。 ...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |