通常、確認コードは表示されませんが、次の理由により問題はありません: 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); を使用しても検証コードが表示されないことです。
コードを投稿してください!
私の質問が気に入らない場合は、私の投稿から離れてください。どれだけ私をからかうのに興味がありますか?お金をくれたら、まだ一緒にプレイすることを検討します!
私は誰も私の質問に答えてくれるとは思っていませんし、誰も私の質問に興味を持ってくれるとも思っていません。ドゥルオジ、鏡を見なかったら、あなたは誰ですか?この資格をお持ちですか?
コードを投稿してください!
状況が異なれば、異なる分析が必要になります。
スクリーンショットには認証コードの画像が表示できないことが示されているだけであり、上記の通知と警告はlogin.phpの警告とプロンプトであり、認証コードとは何の関係もありません。
状況が異なれば、異なる分析が必要になります。
スクリーンショットには認証コードの画像が表示できないことが示されているだけであり、上記の通知と警告はlogin.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();
わかりました。私はそれを持っていません このソースコードをルートディレクトリに置いて作成してください、ありがとう、あなたはとても熟練しています🎜