ホームページ >php教程 >php手册 >PHP 検証コード コード (最新の修正、完全にカスタマイズされました!)

PHP 検証コード コード (最新の修正、完全にカスタマイズされました!)

WBOY
WBOYオリジナル
2016-06-13 12:13:001041ブラウズ

Authnum.class.php ダウンロード

コードをコピー コードは次のとおりです:


session_start();
class Authnum {
//画像オブジェクト、幅、高さ、検証コードの長さ
private $im
private $; im_width;
private $im_height;
private $len>//ランダムな文字列、y 軸の座標値、
private $y; $randcolor;
//背景色は赤、緑、青、デフォルトはライトグレーです
public $green=238;
/ **
* オプションの設定: 検証コードの種類、干渉点、干渉線、Y 軸のランダム化
* 無効にするには false に設定します
**/
//デフォルトは大文字と小文字の数字の組み合わせです。1 2 3 はそれぞれ小文字、大文字、数字を表します
public $ext_num_type='' ;
public $ext_pixel = false; //干渉点
public $ext_line = false; //Y軸ランダム
関数=4,$im_width='',$im_height =25) {
// クラス
$this->len = $len; をインスタンス化するときに、検証コードの長さ、画像の幅、高さが必要なデータです。 im_width = $len * 15;
$this->im_width = $im_width;
$this->im_height; );
}
// 画像の背景色を設定します。デフォルトは明るい灰色の背景です
function set_bgcolor () {
imagecolorallocate($this->im,$this->red, $this->green,$this->blue ; an3 = '0123456789';
if ($this->ext_num_type == '') $str = $an1.$an2.$an3; >if ($this->ext_num_type == 1) $ str = $an1;
if ($this->ext_num_type == 2) $str = $an2; ext_num_type == 3) $str = $an3;
for ($i = 0; $i < $this->len; $i ) {
$start = rand(1,strlen($str) ) - 1);
$randnum .= substr( $str,$start,1);
$this->randnum = $_SESSION[an] = $ this->randnum;
}
/ / 検証コード画像の Y 軸を取得します
function get_y () {
if ($this->gt;ext_rand_y) $this-> y = rand(5, $this->im_height/5);
else $this->y = $this->im_height / 4 ;
}
// ランダムな色を取得します。 🎜>function get_randcolor () {
$this->randcolor = imagecolorallocate( $this->rand(0,100),rand(0,150),rand(0,200));
}
/ / 干渉点の追加
function set_ext_pixel () {
if ($this ->ext_pixel) {
for($i = 0; $i <100; $i ){
$this ->get_randcolor();
imagesetpixel($this->im, rand() 0, $this->randcolor);
}
}
}
// 干渉ラインを追加
function set_ext_line () {
if ($this->ext_line) {
for($j = 0; $j $rand_x = rand(2, $this->im_width);
$rand_y = rand(2, $this->im_height);
$rand_x2 = rand(2, $this->im_width) );
$rand_y2 = rand(2, $this->get_randcolor();
imageline($this->im, $rand_y, $rand_x2, $rand_y2, $this->randcolor);
}
}
}
/**検証コード画像を作成します:
* キャンバスを作成します (__construct 関数)
* キャンバスの背景を設定します ($this->set_bgcolor();)
* ランダムな文字列を取得します ($this->> get_randnum () ;)
* 画像にテキストを書き込みます (imagestring 関数)
* 干渉点/線を追加します ($this->set_ext_line(); $this->set_ext_pixel();)
* 画像を出力
**/
function create () {
$this ->set_bgcolor();
$this->get_randnum ( );
for($i = 0; $i < $this->len; $i ){
$font = rand(4,6);
$x = $i/$ this->len * $this->im_width rand(1, $this->len); ();
$this->get_randcolor();
imagestring($this->im, $font, $x, $this->y, substr($this->randnum, $ i ,1), $this->randcolor);
$this->set_ext_line();
$this->set_ext_pixel(); :image/png");
imagepng($this->im);
imagedestroy($this->im); //画像リソースを解放します
}
}//終了クラス
/**検証コード クラスを使用するメソッド:
* $an = new Authnum (検証コードの長さ、画像の幅、画像の高さ);
* パラメーターなしでインスタンス化された場合、デフォルトは 4 桁の通常サイズの 60* 25 認証コード画像
* フォームページ上の認証コードを検出するメソッド、$_SESSION[an] が $_POST[認証コード テキストボックス ID] と等しいか比較
* オプション設定:
* 1. 認証コード型: $an->ext_num_type=1; 値 1 は小文字型、2 は大文字型、3 は数値型
* 2. 干渉点: $an->ext_pixel = false ; false の値は干渉が追加されないことを意味します。Point
* 3. 干渉ライン: $an->ext_line = false; false の値は干渉ラインが追加されないことを意味します
* 4. Y 軸ランダム化: $an->ext_rand_y = false; false の値は、画像の Y 軸のランダム化をサポートしません
* 5. 画像の背景: 3 つのメンバー変数 $ の値を変更します。赤、$green、$blue
**/
$an = new Authnum();
$an->gt;ext_num_type=''; ; //干渉点
$an->ext_line = false; //干渉線
$an->ext_rand_y= true; //Y軸ランダム
$an->green = 238 ;
$an->create()


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。