PHP 出力セッションの検証コードが画像と同期していません。画像は常に 1 つ先を行っています。解決してください。解決
PHP 出力セッションの検証コードが画像と同期していません。画像は常に 1 つ先を行っています。解決してください。
PHP 出力セッション検証コードが画像と同期していません。画像は常に 1 段階速くなります。解決してください。
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <? session_start(); function random($len) { $srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; mt_srand(); $strs=""; for($i=0;$i<$len;$i++){ $strs.=$srcstr[mt_rand(0,35)]; } return strtoupper($strs); } $str=random(4); $width = 50; $height = 25; @header("Content-Type:image/png"); $_SESSION["captcha"] = $str; //echo $str; $im=imagecreate($width,$height); $back=imagecolorallocate($im,0xFF,0xFF,0xFF); $pix=imagecolorallocate($im,187,230,247); $font=imagecolorallocate($im,41,163,238); mt_srand(); for($i=0;$i<1000;$i++) { imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix); } imagestring($im, 5, 7, 5,$str, $font); imagerectangle($im,0,0,$width-1,$height-1,$font); imagepng($im); imagedestroy($im); $_SESSION["captcha"] = $str; ?>
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <img src="captcha.php" width="60" height="22" border="1" onclick= "this.src='captcha.php?act=captcha&'+Math.random()" style="cursor: pointer; vertical-align:middle" title="看不清?点击更换!" />
------解決策解決策----------------------
この問題は非常に奇妙であり、最善の方法は分離することです。
これを試してください
checkcode.class.php
- PHP コード
<?php /*** 確認コードの生成 ※クラス利用について * $checkcode = 新しいチェックコード(); * $checkcode->doimage(); * //認証を取得する * $_SESSION['code']=$checkcode->get_code(); セッション開始(); './checkcode.class.php' を含めます; $checkcode = 新しいチェックコード('C:WINDOWSFontsARIAL.TTF'); $checkcode->doimage(); $_SESSION['code']=$checkcode->get_code();*/ クラスチェックコード { //検証コードの幅 パブリック $width=130; //検証コードが高い パブリック $height=50; //フォントのアドレスを設定する プライベート $font; //フォントの色を設定する パブリック $font_color; //ランダム生成係数を設定する public $charset = 'abcdefghkmnprstuvwyzABCDEFGHKLMNPRSTUVWYZ23456789'; //背景色を設定する パブリック $background = '#EDF7FF'; //認証コードの文字番号を生成 パブリック $code_len = 4; //フォントサイズ パブリック $font_size = 20; //検証コード プライベート $コード; //画像メモリ プライベート $img; //テキストの X 軸の開始位置 プライベート $x_start; 関数 __construct($fontpath) { $this->font =$fontpath; } /*** ランダムな認証コードを生成します。*/ 保護された関数 creat_code() { $コード = ''; $charset_len = strlen($this->charset)-1; for ($i=0; $icode_len; $i++) { $code .= $this->charset[rand(1, $charset_len)]; } $this->code = $code; } /*** 認証コードを取得する*/ パブリック関数 get_code() { return strto lower($this->code); } /*** 画像の生成*/ パブリック関数 doimage() { $code = $this->creat_code(); $this->img = imagecreatetruecolor($this->幅, $this->高さ); if (!$this->font_color) { $this->font_color = imagecolorallocate($this->img, rand(0,156), rand(0,156), rand(0,156)); } それ以外 { $this->font_color = imagecolorallocate($this->img, hexdec(substr($this->font_color, 1,2)), hexdec(substr($this->font_color, 3,2)), hexdec(substr($this->font_color, 5,2))); } //背景色を設定する $background = imagecolorallocate($this->img,hexdec(substr($this->background, 1,2)),hexdec(substr($this->background, 3,2)),hexdec(substr( $this->background, 5,2))); //キャビネットの形状を描画し、背景色を設定します。 imagefilledrectangle($this->img,0, $this->height, $this->width, 0, $background); $this->creat_font(); $this->creat_line(); $this->output(); } /*** テキストの生成*/ プライベート関数 creat_font() { $x = $this->width/$this->code_len; for ($i=0; $icode_len; $i++) { imagettftext($this->img, $this->font_size, rand(-30,30), $x*$i+rand(0,5), $this->height/1.4, $this-> ;font_color, $this->font, $this->code[$i]); if($i==0)$this->x_start=$x*$i+5; } } /*** 線を引く*/ プライベート関数 creat_line() { 画像の厚さ($this->img, 3); $xpos = ($this->font_size * 2) + rand(-5, 5); $width = $this->width / 2.66 + rand(3, 10); $height = $this->font_size * 2.14; if ( rand(0,100) % 2 == 0 ) { $start = rand(0,66); $ypos = $this->height / 2 - rand(10, 30); $xpos += ランド(5, 15); } それ以外 { $start = rand(180, 246); $ypos = $this->height / 2 + rand(10, 30); } $end = $start + rand(75, 110); imagearc($this->img, $xpos, $ypos, $width, $height, $start, $end, $this->font_color); if ( rand(1,75) % 2 == 0 ) { $start = rand(45, 111); $ypos = $this->height / 2 - rand(10, 30); $xpos += ランド(5, 15); } それ以外 { $start = rand(200, 250); $ypos = $this->height / 2 + rand(10, 30); } $end = $start + rand(75, 100); imagearc($this->img, $this->width * .75, $ypos, $width, $height, $start, $end, $this->font_color); } /***出力画像*/ プライベート関数の出力() { header("コンテンツタイプ:画像/pngrn"); imagepng($this->img); imagedestroy($this->img); } <div class="clear"></div>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ 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 では、 rand パッケージの関数を使用する前に乱数シードを設定する必要があるため、このエラーは通常、乱数ジェネレーターを使用する必要がある場合に発生します。この記事では、このエラーを解決する方法について説明します。 1. math/rand パッケージを導入する まず、math/rand パッケージをコードに導入する必要があります。存在する

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

Pygame のフォント テキストとフォント Pygame は、pygame.font モジュールを使用してフォント オブジェクトを作成し、テキストを描画するという目的を達成します。このモジュールの一般的に使用されるメソッドは次のとおりです。 名前 説明 pygame.font.init() フォント モジュールの初期化 pygame.font.quit() フォント モジュールの初期化解除 pygame.font.get_init() フォント モジュールが初期化されているかどうかを確認し、ブール値を返します。 pygame.font.get_default_font() は、デフォルトのフォントのファイル名を取得します。システム内のフォントのファイル名を返します pygame.font.get_fonts() はすべてを取得します

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

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

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Go 同時プログラミングでの乱数生成の同期: ミューテックス (sync.Mutex) を使用して、rand.Rand 乱数ジェネレーターへのアクセスを制御します。各ゴルーチンは乱数を生成する前にミューテックス ロックを取得し、生成後にミューテックス ロックを解放します。これにより、一度に 1 つの goroutine だけが乱数ジェネレーターにアクセスできるようになり、データ競合が排除されます。
