//検証コードクラス
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789' //ランダム係数
private $code; // 検証コード
private $codelen private $width = 130; //グラフィックスリソースハンドル
private $font; // フォントの指定
private $fontsize = 20; // フォントのサイズの指定
// コンストラクターの初期化
public function __construct() {
$this- >font = ROOT_PATH.'/font/elephant.ttf';
}
// ランダムコードを生成
private function createCode() {
$_len = strlen($this->charset)-1; ($i=0;$i<$this->codelen;$i++) {
$ this-& gt; charSet [mt_rand (0, $ _ len)]; $this->width, $this->height);
$color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255)); - >img,0,$this->height,$this->width,0,$color);
}
// テキストを生成
private function createFont() 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->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
private function createLine() {
for ($i=0;$i $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156 ) ); imageline($this->img,mt_rand(0,$this->幅),mt_rand(0,$this->高さ),mt_rand(0,$this->幅),mt_rand(0,$ this->height),$color); ($ i = 0; $ i&lt; 100; $ i ++){
$ color = imagecolorallocate($ this-&gt; img、mt_rand(200,255)、mt_rand(200,255)、mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
}
}
//出力
private function 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);
}
}
?>
個別にファイルが表示されるのは通常であり、mvc モードでのメソッド中に表示される図片就xx了です。
require 「./core/ValidateCode.class.php」; //最初にクラスを含め、実際のパスは状況に応じて変更されます。
$_vc = new ValidateCode(); //实例化一对オブジェクト
$_vc->doimg();
$_SESSION['code'] = $_vc->getCode();//SESSION 中に保存されます
?>
表示x的:
class UsersController extends Controller {
public function login(){
$this->smarty->display( 'login.html' );
}
public function verifi(){
$_vc = new ValidateCode(); //实例化一对オブジェクト
$_vc->doimg();
//$_SESSION['code'] = $_vc->getCode();//验证码はSESSION中に保存されます
}
}
?>
回论论(解決案)
代コード一の访问、次のBOM を検査します。
代码一样的话、检查、一下检查bom头头头