php 検証コードの画像が表示できません
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)];
}
}
//背景を生成
プライベート関数 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;$icodelen;$i ) {
$this->fontcolor = imagecolorallocate($this-> ;img,mt_rand(0,156),mt_rand (0,156),mt_rand(0,156));
imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$ i mt_rand(1,5),$ this->高さ / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
}
}
//ラインを生成、Snowflake
プライベート関数 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->高さ ),mt_rand(0,$this->幅),mt_rand(0,$this->高さ),$color);
}
//スノーフレーク
for ($i=0; $i<100;$i ) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->幅),mt_rand(0,$this->高さ),'*',$color);
}
}
//出力
プライベート関数 outPut() {
header('Content-type:image/png');
imagepng($this->img );
imagedestroy($this ->img);
}
//外部で生成
public function doimg() {
$this->createBg();
$this->createCode();
$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();
//まず第一にページ上 Open session,
//error_reporting(2047);
session_destroy();
//毎回新しいセッション値を取得できるようにセッションを削除します;
//効果セッションの使い方も良いですね とても便利です
?>