認証コードが表示されないという非常に難しい質問です。
一般に、次の状況では検証コードは表示されません
1. GD ライブラリが開かれていない、 2. メモ帳でファイルを開いた結果、BOM ヘッダーが表示されました
3. < の前にスペースがある;?
しかし、私の検証コードは表示されません
をチェックしましたが、それでも表示されないため、表示は上記の 3 つとは何の関係もありません。インスタンス化には問題ありません。
でも、まだ表示されません。考えてもわかりません。
私の検証コードが elephant.ttf ファイルをロードするのは問題ですか?それで、それを解決する方法
ディスカッションに返信(解決策)
つまり、間違ったパスで検証コード ファイルを導入したことになります
つまり、間違ったパスで検証コード ファイルを導入したことになります
そうです、このようにインポートしました
//网站根目录define('ROOT_PATH',dirname(__FILE__));public function __construct() { $this->font = ROOT_PATH.'/font/elephant.ttf'; }
それとも、この ttf ファイルは win8 システムをサポートしていませんか? 私のローカル環境は win8 64 ビットです
忘れてください、この検証コード クラスをアップロードしてください
<?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); } } ?>
いくつかの可能性がありますこの問題
次に、パスの問題です。 , ですが、上記の設定で問題ありません、従来の書き方はこのように書きます。
GD ライブラリのオープンなどについては、BOM ヘッダーも含めて除外されていますが、その理由は何ですか?
これが私のローカル環境での GD ライブラリのオープンであることを見ると、そうです
。
検証コードを導入したファイルへのパスがまだ間違っている可能性がありますか?
フォント elephant のファイル名は elephnt.ttf です。斜体のものは elephnti.ttf です。フォント ファイルが原因かどうかを慎重に確認してください
。ブラウザを使用して検証コード プログラムを直接実行できます
フォント elephant のファイル名は elephnt.ttf です。斜体のファイル名は elephnti.ttf です。フォントが原因であるかどうかを確認してください。ブラウザを使用して検証コード プログラムを直接実行できます
それが原因ではありません。実際のファイル名が書き込まれたファイルと一致している限り、フォント ファイル名は任意に付けることができます。 php ページでは、この可能性は排除されます。
フォントファイルの原因を取り除くことができれば、プログラムに問題はありません
フォント ファイルが原因であるかどうかの判断は、ブラウザを使用して確認コード プログラムを直接実行できます
確認コード ファイルを実行するときは http://127.0.0.1/config/ code.php では、ページには何も表示されず、空白になります。おそらくこれを見たら、認証コードに何か問題があるに違いないと口走ってしまうでしょう。問題がなければ、質問は投稿しません。
単独で実行する場合、ROOT_PATH は定義されていません。定義する必要があります
ROOT_PATH という単語を定義するシステム定数ファイルが導入されているため、定義されています。
ただし、投稿したプログラムではこれが表示されません
また、エラーメッセージがあるかどうかを確認するには、php のエラー表示機能をオンにすることができます
検証コードプログラムを単独で実行する場合、エラーが発生した場合が発生し、エラーが表示されます 機能がオンになっていない場合は、空白のページが表示されます (これは実際には 500 エラーの現れです)
バツ印が表示された場合は、プログラムに致命的ではないエラーがあることを意味し、この時点で header 関数をコメントアウトする必要があります。文字化けに混ざったエラーメッセージを元にトラブルシューティング
ただし、投稿したプログラムではこれが表示されません
また、エラーメッセージがあるかどうかを確認するには、phpのエラー表示機能をオンにすることもできます
実行してくださいコードプログラムを検証する際、エラーが発生し、エラー表示機能がオンになっていない場合、空白のページが表示されます (これは実際には 500 エラーの現れです)
バツ印が表示される場合は、プログラムにエラーがあることを意味します致命的ではないエラーなので、この時点でヘッダー関数をコメントアウトする必要があります。文字化けしたコードに混ざったエラーメッセージを基にトラブルシューティングを行います
ネットワークディスクを変更して見てください
看得到,下不下了
你换个网盘看看
本来想传到百度云了,没想到百度云网盘出问题了,这一扫黄,百度云一直不好用了。把正常人使用的环境也破坏了
传到360网盘中了
http://yunpan.cn/cAkyJ6ddksXJJ (提取码:a62a)
很正常。
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();
如果出现空白,可以看看apache error log,看看有什么错误提示。
如果是elephant.ttf文件问题,可以下载一个新的elephant.ttf文件试试。
我测试的是用 http://www.font5.com.cn/font_download.php?id=8944&part=1279954173这个的,可以换这个试试。
很正常。
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();
如果出现空白,可以看看apache error log,看看有什么错误提示。
提示这个:
[Sun Nov 23 11:07:43 2014] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function fetch_object() on a non-object in D:\\APMServ5.3.0\\www\\htdocs\\model\\Model.class.php on line 43
如果是elephant.ttf文件问题,可以下载一个新的elephant.ttf文件试试。
我测试的是用 http://www.font5.com.cn/font_download.php?id=8944&part=1279954173这个的,可以换这个试试。
用你这个也不能显示,路径是没有问题的,我试了,都正常,比如我把code.php换一个图片就能显示,说明路径是正确的.
字体文件也没 有坏,能打开。
http://yunpan.cn/cAkZubfk5Ikte (提取码:03d7)
我把我用的服务器集成环境发上来吧,里面也有源码,你们在你们的操作系统环境中能正常显示验证吗,也许是我的系统有问题?
提示这个:
[Sun Nov 23 11:07:43 2014] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function fetch_object() on a non-object in D:\\APMServ5.3.0\\www\\htdocs\\model\\Model.class.php on line 43
单独运行验证码的页面,会有这个提示?
代码中根本就没有调用Model.class.php
好奇怪的情况
把你的 config/code.php 改成这样
<?phprequire substr(dirname(__FILE__),0,-7).'/init.inc.php';ob_clean(); //加上这句$_vc = new ValidateCode();$_vc->doimg();$_SESSION['code'] = $_vc->getCode();?>
这样可以使其他任何输出都不会影响到图片
当然错误显示还是要打开的(php.ini 中 display_errors = On),这个开关很重要,他可以帮助你写出健壮的程序
你的这个系统有很多毛病,比如
model/NavModel.class.php 中的
//拦截器(__set) private function __set($_key, $_value) { $this->$_key = Tool::mysqlString($_value); } //拦截器(__get) private function __get($_key) { return $this->$_key; }
config/profile.inc.php (用于系统初始化设定)中有
define('PREV_URL',$_SERVER["HTTP_REFERER"]);
这就导致直接浏览器访问时会有使用未定义下标的警告
另外 include/Tool.class.php 至少有两处因参数不合法引起的非致命错误
这都是在直接浏览器访问 config/code.php 时能看到的错误
想必其他部分都会有类似错误
我把你的 CMS 项目改名为 CMS_1
并按 #25 修改了 code.php
我把你的 CMS 项目改名为 CMS_1
并按 #25 修改了 code.php
改成这样
<?phprequire substr(dirname(__FILE__),0,-7).'/init.inc.php';ob_clean(); //加上这句$_vc = new ValidateCode();$_vc->doimg();$_SESSION['code'] = $_vc->getCode();?>
错误日志中提示 [Sun Nov 23 15:31:45 2014] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function fetch_object() on a non-object in D:\\APMServ5.3.0\\www\\htdocs\\model\\Model.class.php on line 43
看来还是Model.class.php这个类没有加载进来,那么怎么加载呢
次のようにプロンプトを出します:
[Sun Nov 23 11:07:43 2014] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function fetch_object() in a non-object in D:\APMServ5.3.0 \www\htdocs\model\Model.class.php の 43 行目
検証コードを個別に実行すると、このプロンプトが表示されますか?
Model.class.php がコード内でまったく呼び出されません
ここで解決する方法
php.ini でエラー プロンプトをオンにした後、127.0.0.1/config/code.php ページに入りました。これはプロンプトでした
注意: 未定義のインデックス: D:APMServ5.3.0wwwhtdocsconfigprofile.inc.php の 26 行目の HTTP_REFERER 警告: マジック メソッド __set() はパブリック可視性を持つ必要があり、D:APMServ5.3.0wwwhtdocsmodelNavModel.class で静的にすることはできません.php (12 行目) 警告: マジック メソッド __get() はパブリックな可視性を持つ必要があり、D:APMServ5.3.0wwwhtdocsmodelNavModel.class.php の 17 行目で静的にすることはできません。 致命的なエラー: 非インターフェイスでのメンバー関数 fetch_object() の呼び出しD:APMServ5.3.0 wwwhtdocsmodelModel.class.php の 43 行目のオブジェクト
ここで解決する方法がわかりません
いいえ、私はあなたのプログラムを使用しており
、あなたのパッケージでカバーしただけなので
できますまずステップバイステップで実行してください。表示されるすべてのエラーメッセージを変更してください
いいえ、私はあなたのプログラムを使用しています
あなたのパッケージでそれをカバーしただけです
まずステップバイステップですべてのエラーを変更できます変更後はメッセージが表示されます
忘れてください。これは Li Yanhui という人が作成した PHP チュートリアルの元のコードです。当初は彼のソース コードの構造を学ぶふりをしたかったのですが、しかし、このようなチュートリアルが販売されるとは予想していませんでした。どれだけの人を見逃したかわかりません。これはまだ学んでいないので、まず訂正しましょう(笑)。
なんとも奇妙な状況です
この事件を通して私の気持ちを伝えたいのですが、このソースコードは Li Yanhui という人物によって作成された PHP チュートリアルであることが判明しました。それは PHP シーズン 2 と呼ばれます。彼はチュートリアルの作成と販売を専門としています。私は学生のふりをしたかったのですが、予想外だったのは、彼自身が多くの問題を抱えているということでした。すべての間違いが修正されたら、戻って学習することができます。ほら、私が黒幕であることがわかりました (笑)
もう 1 つの感情は、元々は、みんなが一緒に勉強してコミュニケーションできるように、Baidu Cloud を通じてソース コードを投稿したかったということです。 、しかし、今日Baidu Cloudが発作を起こして突然アップロードを停止するとは予想していませんでしたBaidu Cloudがオンライン反ポルノキャンペーンの標的になっていることは誰もが知っていますが、この種の反ポルノキャンペーンは意図的または意図せずに、次のような人々をブロックしました。通常、百度クラウドを使用します。これは、中国で何かをするのは本当に簡単ではありません
を変更してください。ネットワークディスクを見て見てください
何かを学びました、ありがとう 66666666666666666666666

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
