ホームページ バックエンド開発 PHPチュートリアル PHP 検証コードの画像が表示されない場合の解決策

PHP 検証コードの画像が表示されない場合の解決策

Jun 13, 2016 pm 01:51 PM
gt image quot rand this

PHP 認証コードの画像が表示できません
PHP 認証コードの画像が表示できず、赤十字が表示されます。コードは次のとおりです:



image.php

PHP コード
 <br>  <?php <br /> 	session_start(); <br /> 	if(isset($_POST[&#39;submit&#39;])){ <br /> 		if(trim($_POST["test"])==$_SESSION[&#39;validationcode&#39;]){ <br /> 			echo &#39;提交成功 <br>'; <br> 		}else{  <br> 			echo ' <font color="red">验证码输入错误!! </font> <br>'; <br> 		} <br> 	} <br> ?> <br>  <html> <br> 	 <head> <br> 		 <title>Image </title> <br> 		 <meta http-equiv="content-type" content="text/html;charset=gb2312"> <br> 		 <script> <br> 			function newgdcode(obj,url) { <br> 				//后面传递一个随机参数,否则在IE7和火狐下,不刷新图片 <br> 				obj.src = url+ '?nowtime=' + new Date().getTime(); <br> 			} <br> 		 </script> <br> 	 </head> <br> 	 <body> <br> 		 <img src="imgcode.php" alt="看不清楚,换一张" style="cursor: pointer;" onClick="javascript: newgdcode(this,this.src);" /> <br> 		 <form method="POST" action="image.php"> <br> 			 <input type="text" name="test"> <br> <br> 			 <input type="submit" name="submit" value="提交"> <br> 		 </form> <br> 	 </body> <br>  </html> <br> 
ログイン後にコピー



imgcode.php
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
    session_start();
    require_once('ValidationCode.php');

    $image = new ValidationCode(60,20,4);    

    $image->showImage();
    $_SESSION['validationcode'] =$image->getCheckCode(); 
?>

ログイン後にコピー



ValidationCode.php
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
     /* クラス ValidationCode は、Validationcode.php という名前のファイルで宣言されています */
     /* このクラスのオブジェクトを通じて、検証コード画像と検証コード文字列を動的に取得できます */
    クラス ValidationCode {
        private $width; // 検証コード画像の幅
        private $height; //検証コード画像の高さ
        private $codeNum //検証コードの文字数
        private $checkCode //検証コード文字;
        private $image //検証コードキャンバス;

        /* コンストラクターは検証コード オブジェクトをインスタンス化し、一部のメンバー属性を初期化するために使用されます */
        /* パラメータ幅: 検証コード画像の幅を設定します。デフォルトの幅値は 60 ピクセルです */
        /* パラメーターの高さ: 検証コード画像の高さを設定します。デフォルトの高さの値は 20 ピクセルです */
        /* パラメータ codeNum: 検証コードの文字と数字の数を設定します。デフォルトの数は 4 です */
        function __construct($width=60, $height=20, $codeNum=4) {
            $this->width=$width //メンバー属性の幅を初期化します。
            $this->height=$height; //メンバー属性の高さを初期化します。
            $this->codeNum=$codeNum; //メンバー属性 codeNum を初期化します。
            $this->checkCode=$this->createCheckCode() //メンバー属性 checkCode を初期化します。
        }
        function showImage(){ //このメソッドにアクセスして画像をブラウザに出力します
            $this->getCreateImage(); //内部メソッドを呼び出してキャンバスを作成し、初期化します
            $this->outputText(); //ランダムな文字列を画像に出力します。
            $this->setDisturbColor(); //画像に干渉ピクセルを設定します。
            $this->outputImage(); // 対応する形式で画像を生成して出力します
        }
        function getCheckCode(){ //このメソッドにアクセスして、ランダムに作成された検証コード文字列を取得します
            return $this->checkCode //メンバー属性 $checkCode によって保存された文字列を返します。
        }
        private function getCreateImage(){ //画像リソースの作成と背景の初期化に使用されます
            $this->image=imageCreate($this->幅,$this->高さ);
            $back=imageColorAllocate($this->image, 255, 255, 255);
            $border=imageColorAllocate($this->image, 0, 0, 0);
            imageRectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
        }
        private function createCheckCode(){ //ユーザーが指定した数の文字列をランダムに生成します
            for($i=0;$icodeNum;$i++) {
                $number=rand(0,2);
                スイッチ($number){
                    ケース 0: $rand_number=rand(48,57); //数値
                    ケース 1: $rand_number=rand(65,90); //大文字
                    ケース 2: $rand_number=rand(97,122); //小文字
                }
                $ascii=sprintf("%c",$rand_number);
                $ascii_number=$ascii_number.$ascii;
            }
            $ascii_number を返します;
        }
        private function setDisturbColor() { //干渉ピクセルを設定し、異なる色の 100 ポイントを画像に出力します
            for ($i=0;$iimage, rand(0,255), rand(0,255), rand(0,255));
                    imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->height-2),$color);
            }
        }
        private function OutputText() { //ランダムな色、ランダムな配置、ランダムな文字列を画像に出力
            for ($i=0;$icodeNum;$i++) {
                    $bg_color = imagecolorallocate($this->image, rand(0,255), rand(0,128), rand(0,255));
                    $x = フロア($this->width/$this->codeNum)*$i+3;
                    $y = rand(0,$this->height-15);
                 imagechar($this->image, 5, $x, $y, $this->checkCode[$i], $bg_color);
               }
        }

        private function OutputImage(){ //GD がサポートする画像タイプを自動的に検出し、画像を出力します
            if(imagetypes() & IMG_GIF){ //GIF 形式の画像を生成する関数が存在するかどうかを判断します
                header("Content-type: image/gif"); //ヘッダー情報を送信し、MIME タイプを image/gif に設定します
                imagegif($this->image); //画像をGIF形式でブラウザに出力します。
            }elseif(imagetypes() & IMG_JPG){ //JPG形式の画像を生成する関数が存在するかどうかを判定
                header("Content-type: image/jpeg"); //ヘッダー情報を送信し、MIME タイプを image/jpeg に設定します
                imagejpeg($this->image, "", 0.5); //画像をJPEN形式でブラウザに出力します。
            }elseif(imagetypes() & IMG_PNG){ //PNG 形式の画像を生成する関数が存在するかどうかを判断します
                header("Content-type: image/png"); // ヘッダー情報を送信し、MIME タイプを image/png に設定します
                imagepng($this->image); //画像をPNG形式でブラウザに出力します。
            }elseif(imagetypes() & IMG_WBMP){ //WBMP形式の画像を生成する関数が存在するかどうかを判定
                 header("Content-type: image/vnd.wap.wbmp"); // ヘッダーを image/wbmp として送信します
                 imagewbmp($this->image); //画像をWBMP形式でブラウザに出力します。
            }else{ //サポートされている画像タイプがない場合
                die("PHP はイメージの作成をサポートしていません!"); //イメージを出力せず、エラー メッセージを出力してプログラムを終了します。
            }
        }
        function __destruct(){ //オブジェクトの終了時に画像リソースを破棄し、メモリを解放します
             imagedestroy($this->image); // GD ライブラリのメソッドを呼び出して画像リソースを破棄します
        }
    }
?>

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

golangの「unknown: rand.Seed」エラーを解決するにはどうすればよいですか? golangの「unknown: rand.Seed」エラーを解決するにはどうすればよいですか? Jun 25, 2023 am 08:34 AM

Golang を使用する開発または学習のプロセス中に、unknown:rand.Seed というエラー メッセージが表示されることがあります。 Golang では、 rand パッケージの関数を使用する前に乱数シードを設定する必要があるため、このエラーは通常、乱数ジェネレーターを使用する必要がある場合に発生します。この記事では、このエラーを解決する方法について説明します。 1. math/rand パッケージを導入する まず、math/rand パッケージをコードに導入する必要があります。存在する

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

Bing Image Creatorを無料で使用する方法 Bing Image Creatorを無料で使用する方法 Feb 27, 2024 am 11:04 AM

この記事では、無料の BingImageCreator を使用して高品質の出力を取得する 7 つの方法を紹介します。 BingImageCreator (現在は ImageCreator for Microsoft Designer として知られています) は、優れたオンライン人工知能アート ジェネレーターの 1 つです。ユーザーのプロンプトに基づいて、非常にリアルな視覚効果を生成します。プロンプトがより具体的、明確、創造的であればあるほど、より良い結果が得られます。 BingImageCreator は、高品質の画像の作成において大きな進歩を遂げました。 Dall-E3 トレーニング モードを使用するようになり、より高いレベルの詳細とリアリズムが表示されます。ただし、一貫して HD 結果を生成できるかどうかは、高速な処理などのいくつかの要因によって決まります。

Xiaomi 携帯電話から画像を削除する方法 Xiaomi 携帯電話から画像を削除する方法 Mar 02, 2024 pm 05:34 PM

Xiaomi 携帯電話で画像を削除する方法? Xiaomi 携帯電話で画像を削除できますが、ほとんどのユーザーは画像の削除方法を知りません. 次に、編集者が提供する Xiaomi 携帯電話での画像の削除方法に関するチュートリアルです。ぜひご参加ください。 Xiaomi 携帯電話で画像を削除する方法 1. まず Xiaomi 携帯電話の [アルバム] 機能を開きます; 2. 次に、不要な写真を確認して右下の [削除] ボタンをクリックします; 3. 次に、[アルバム] をクリックします。上部にある特別な領域に入り、[ごみ箱]を選択します; 4. 次に、下図に示すように[ごみ箱を空にする]を直接クリックします; 5. 最後に[完全に削除]を直接クリックして完了します。

PHPのrand関数を使用して同じ乱数を生成する問題を解決する方法 PHPのrand関数を使用して同じ乱数を生成する問題を解決する方法 Mar 23, 2023 am 09:17 AM

rand() 関数は、各呼び出しで同じ初期シードを使用します。デフォルトの初期シードはオペレーティング システムの時間から取得されますが、精度はマイクロ秒のみです。つまり、非常に短い期間内に、多くの rand() 関数呼び出しで同じ初期シードが使用され、同じ乱数が生成されます。では、この問題をどうやって解決すればよいでしょうか?

Imagemagic のインストール Centos と Image のインストール チュートリアル Imagemagic のインストール Centos と Image のインストール チュートリアル Feb 12, 2024 pm 05:27 PM

LINUX はオープン ソース オペレーティング システムです。その柔軟性とカスタマイズ性により、多くの開発者やシステム管理者が最初に選択します。LINUX システムでは、画像処理は非常に重要なタスクであり、Imagemagick と Image は 2 つの非常に人気のある画像処理ツールです。この記事では、Centos システムに Imagemagick と Image をインストールする方法を紹介し、詳細なインストール チュートリアルを提供します。 Imagemagic のインストール Centos チュートリアル Imagemagick は、コマンド ラインでさまざまな画像操作を実行できる強力な画像処理ツールセットです。Centos システムに Imagemagick をインストールする手順は次のとおりです: 1

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

See all articles