验证码
class validateImage
{
var $x;
var $y;
var $numChars;
var $Code;
var $Width;
var $Height;
var $BG;
var $colTxt;
var $colBorder;
var $numCirculos;
//构造関数数、初值
function validateImage()
{
$this->x = $x;
$this->y = $y = "6" ;
$this->numChars = $numChars = "4"; //コードの数
$this->Code = $Code;
$this->Width = $Width = "80"; //画像の幅
$this->高さ = $Height = "25"; //画像の高さ
$this->BG = $BG = "255 255 255"; //背景のRGB色
$this->colTxt = $colTxt = "0 0 0 0"; //コードのRGB色
$this->Border = $colBorder = "100 100 100"; //枠線のRGB色
$this->numCirculos = $numCirculos = "800"; //ランダムな点の数
}
//ベース画像を作成
function createImage()
{
//画像を作成
$im = imagecreate ($this->Width, $this->Height) or die ("新しい GD イメージ ストリームを初期化できません");
//RGB カラー コードを取得します
$colorBG =explode(" ", $this->BG);
$colorBorder =explode(" ", $this- >Border);
$colorTxt =explode(" ", $this->colTxt);
//画像に背景色を置きます
$imBG = imagecolorallocate ($im, $colorBG[0], $ colorBG[1], $colorBG[2]);
//画像に境界線を置きます
$Border = ImageColorAllocate($im, $colorBorder[0], $colorBorder[1], $colorBorder[2]);
$imBorder = ImageRectangle($im, 0, 0, $this->Width-1,$this->Height-1, $Border);
//画像にコードカラーを配置します
$imTxt = imagecolorallocate ($im, $colorTxt[0], $colorTxt[1], $colorTxt[2]);
//800 ポイントをドロップ
for($i = 0; $i numCirculos; $i++)
{
$imPoints = imagesetpixel($im, mt_rand(0,80), mt_rand(0,80), $Border);
}
//image にコードを配置します
for($i = 0 ; $i < $this->numChars; $i++)
{
//$x の位置を取得
$this->x = 21 * $i + 5;
//コードを取得
double) microtime() * 1000000*getmypid());
$this->Code.= (mt_rand(0, 9));
$putCode = substr($this->Code, $i, "1 ");
//コードを入力します;
$Code = imagestring($im, 5, $this->x, $this->y, $putCode,$imTxt);
}
return $ im;
}
//コードを次のページに転送
function transferCode()
{
//コードを取得
$this->createImage();
$vCode = $this->Code;
session_start();
session_register(vCode);
$_SESSION['validate_code'] = $vCode;
return $vCode;
}
//画像を表示
function show()
{
header ("Content-type:image/png");
Imagepng($this->createImage());
Imagedestroy($this->createImage());
}
}
?>