PHP検証コード実装原則
乱数や文字を生成してセッションに保存し(認証コードを検証するときに使用します)、生成した数字や文字を描画して目の前に提示します
検証コードを更新する: js を使用して検証コード画像のパラメーターを変更し、ブラウザーがキャッシュされた画像を読み取らないようにします。これにより、検証コードを更新する効果が得られます。
コード例
$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890";-
- $image=imagecreate(50,25);
- imagecolorallocate($image,mt_rand(0,125),mt_rand(0,125),mt_rand( 0,125));
- $ color = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- for($i=1;$i<=4;$i++) {
- $date=$str[mt_rand( 0,strlen($str)-1)];
- $code.=$date;
- }
- session_start();
- $_SESSION['code'] = $code;
- imagestring($image,4,8,4 ,$code,$color);
- for($i=1;$i<=30;$i++) {
- imagesetpixel($image,mt_rand(0,50),mt_rand(0,25),mt_rand(125,200) );
- }
- for($i=1;$i<=mt_rand(1,5);$i++) { imageline($image,mt_rand(0,50),mt_rand(0,25),mt_rand(0, 50),mt_rand(0,25),mt_rand(100,150)); } header("content-type:image/png"); imagepng($image); ?>
- 数字 + 文字確認コード (各文字には別の色 ):
-
- $str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890";
- $image=imagecreate(50,25);
- imagecolorallocate($image,mt_rand(0,125), mt_rand( 0,125),mt_rand(0,125));
- $color[0] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- $color[1] = imagecolorallocate($image ,mt_rand (200,255),mt_rand(200,255),mt_rand(200,255));
- $color[2] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- $color[3] ] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- for($i=0;$i$date=$str[mt_rand(0) ,strlen ($str)-1)];
- $code.=$date;
- imagestring($image,5,6+$i*10,4,$code[$i],$color[$i]) ;
- }
- session_start();
- $_SESSION['code'] = $code;
- for($i=1;$iimagesetpixel($image,mt_rand(0,50) ,mt_rand (0,25),mt_rand(125,200));
- }
- for($i=1;$iimageline($image,mt_rand(0,50) ), mt_rand(0,25),mt_rand(0,50),mt_rand(0,25),mt_rand(100,150));
- }
- header("content-type:image/png");
- imagepng($image );
-
コードをコピー
出典: PHP 検証コードの実装原則
|