ValidateCode.class.php コードは以下の通りです
//検証コード class
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//ランダム係数
private $code;//検証コード
private $ codelen = 4;//検証コードの長さ
private $width = 130;//幅
private $height = 50;//高さ
private $img;//グラフィックリソースハンドル
private $font;//指定されたフォント
private $ fontsize = 20;//フォントサイズを指定
private $fontcolor;//フォントカラーを指定
//コンストラクターメソッドの初期化
public function __construct() {
$this->font = dirname(__FILE__).'/font/ elephant .ttf';//フォントパスは正しく書かれていなければ画像が表示されないことに注意してください
}
//ランダムコードを生成します
private function createCode() {
$_len = strlen($this-> charset)-1;
for ($i=0;$icodelen;$i++) {
$this->code .= $this->charset[mt_rand(0,$_len) ];
}
}
//背景を生成する
private function createBg() {
$this->img = imagecreatetruecolor($this->width, $this->height)
$color = imagecolorallocate($) this->img, mt_rand (157,255), mt_rand(157,255), mt_rand(157,255));
imagefilledrectangle($this->img,0,$this->height,$this->width,0, $color); }
// テキストを生成
private function createFont() {
$_x = $this->width / $this->codelen;
for ($i=0;$i<$this- >codelen;$i++) {
$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imagettftext($this->img); ,$this->フォントサイズ,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->高さ / 1.4,$this->フォントカラー,$this->; font,$this-> code[$i]);
}
}
// 線と雪の結晶を生成する
private function createLine() {
// Line
for ($i=0;$i<6;$) i++) {
$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($this->img,mt_rand(0,$this->) ;width),mt_rand(0 ,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
//スノーフレーク
for ($i=0 ;$i<100;$i++) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); this->img,mt_rand (1,5),mt_rand(0,$this->幅),mt_rand(0,$this->高さ),'*',$color); //出力
プライベート関数outPut () {
header('Content-type:image/png')
imagedestroy($this->img); /外部で生成
public function doimg () {
$this->createBg();
$this->createLine();
$this->createFont();
$this->outPut ();
}
//検証コードを取得する
public function getCode() {
return strto lower($this->code)
}
}
captcha.phpコードは次のとおりです
session_start();
require './ValidateCode.class.php'; //最初にクラスをインクルードし、実際の状況に応じて実際のパスを変更します。
$_vc = new ValidateCode(); // オブジェクトをインスタンス化します
$_vc->doimg();
$_SESSION['authnum_session'] = $_vc->getCode();// 検証コードを SESSION に保存します
Index.php コードは次のとおりです
session_start();
//最初にセッションを開く必要があります
//error_reporting(2047);
session_destroy();
//セッションを削除して、毎回新しいセッション値を取得できるようにします。// seesion を使用するとうまく機能し、非常に便利です