ホームページ > バックエンド開発 > PHPチュートリアル > 認証コードが表示されないという難しい質問

認証コードが表示されないという難しい質問

WBOY
リリース: 2016-06-23 13:47:51
オリジナル
995 人が閲覧しました

通常、確認コードは表示されませんが、次の理由により問題はありません: 1. BOM ヘッダーがある、2. extension=php_gd2.dll が開かれていない (つまり、セミコロンが削除されている)

しかし、これは私は両方をチェックしたので、上記の 2 つの理由ではありません。
フォーラムには、ページの先頭に ini_set('display_errors', 'Off'); を追加するという解決策もあります (この投稿を参照してください: http://bbs.csdn.net/)。 topic/ 350011289) はまだ動作しません
しかし、私が使用している php のバージョンは PHP バージョン 5.3.28 です
他の cms プログラムが検証コードを表示するのは奇妙です
あるいは、これは難しい質問だと言うべきでしょうか。何が起こっているのでしょうか?


ディスカッションへの返信(解決策)

当たり前じゃないですか?これら 5 つの間違いを修正するだけで完了です

開きたいページは確認コードを生成するページではないでしょうか?それ以外の場合、エラー表示を有効にするとどうなりますか?

これは警告メッセージであり、検証コードとは関係ありません。もう 1 つは、error_reporting(E_ALL & ~E_NOTICE); を使用しても検証コードが表示されないことです。


コードを投稿してください!

あなたが問題を解決するつもりなのか、それとも私をからかっているだけですか?

私の質問が気に入らない場合は、私の投稿から離れてください。どれだけ私をからかうのに興味がありますか?お金をくれたら、まだ一緒にプレイすることを検討します!

私は誰も私の質問に答えてくれるとは思っていませんし、誰も私の質問に興味を持ってくれるとも思っていません。ドゥルオジ、鏡を見なかったら、あなたは誰ですか?この資格をお持ちですか?


コードを投稿してください!

あなたが問題を解決するつもりなのか、それとも私をからかっているだけなのかはわかりません
あなたの多くの返信から判断すると、あなたは php では三流か四流の人物であることがわかります。解けない奇妙な問題。とても簡単だと思っている問題が問題ではないとは思わないでください。あなたははるかに遅れています。本物の専門家の皆さん、あなたのような顔をしている人を見てください。あなたはせいぜい PHP を漠然と理解している程度の人で、私も同様ですが、私とあなたの違いは、私が非常に謙虚であるということです。


状況が異なれば、異なる分析が必要になります。
スクリーンショットには認証コードの画像が表示できないことが示されているだけであり、上記の通知と警告はlogin.phpの警告とプロンプトであり、認証コードとは何の関係もありません。

分析できるよう、検証コード画像の生成に使用したコードを投稿していただけますか?


状況が異なれば、異なる分析が必要になります。
スクリーンショットには認証コードの画像が表示できないことが示されているだけであり、上記の通知と警告はlogin.phpの警告とプロンプトであり、認証コードとは何の関係もありません。

分析できるよう、検証コード画像の生成に使用したコードを投稿していただけますか?

おっしゃるとおり、通知と警告は PHP を使用する際の警告であり、コードの実行には影響しません。これは、PHP を学習したばかりの人でも知っている常識です。
また、私の問題は実際には検証クラスの検証コード部分の問題です。最初はBOMヘッダーの問題だと思いましたが、BOMヘッダーなしで保存すると機能しませんでした。チュートリアルの例ですが、もちろん、講演者が使用している PHP のバージョンは低くても表示できます。私のは高いですが、高いものは低いものと互換性があります。
さらに、GDもオンになり、多くの方法を試しましたが無駄でした。この記事を投稿したのは、コードに関する内容が多いためです。投稿すると、人々は読む気にならないと思います。 また、投稿する場合もphpページに認証コードを投稿する必要がありますが、このページを見てみると非常に統一された書き方になっています。


検証コード

<?php	//验证码类	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 = ROOT_PATH.'/font/elephant.ttf';		}				//生成随机码		private function createCode() {			$_len = strlen($this->charset)-1;			for ($i=0;$i<$this->codelen;$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->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<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));				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 strtolower($this->code);		}			}
ログイン後にコピー


修正しましたが、問題ありません。主な問題は、フォントで ROOT_PATH が定義されていないため、$this->font = ROOT_PATH を取得できないことです。'/font/elephant.ttf ';
ROOT_PATH を変更する 現在のテスト ディレクトリは次のようになります。
test.php
font/elephant.ttf
test.php の ROOT_PATH は、define('ROOT_PATH', dirname(__FILE__)); に設定されています

完全なテストコードは次のとおりです:

//验证码类define('ROOT_PATH', dirname(__FILE__));//验证码类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 = ROOT_PATH.'/font/elephant.ttf';    }         //生成随机码    private function createCode() {        $_len = strlen($this->charset)-1;        for ($i=0;$i<$this->codelen;$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->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<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));            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 strtolower($this->code);    }     }$obj = new ValidateCode();$obj->doimg();
ログイン後にコピー

わかりました。私はそれを持っていません このソースコードをルートディレクトリに置いて作成してください、ありがとう、あなたはとても熟練しています🎜
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート