ホームページ >バックエンド開発 >PHPチュートリアル >ページに入ったときにPHPの認証コードを自動的に更新する方法
ページがログイン ページに直接入った場合、$_SESSION["auth"] 値は確認コードを 1 回更新することによってのみ取得できます。ユーザーがアクセスしたときに確認コードを自動的に更新するにはどうすればよいですか?アドバイスをください。 。 。
すごいです
$_SESSION["auth"] 値はどこで取得しますか?
<div class="item fore3"> <span>验证码</span> <div class="item-ifo"> <input type="text" maxlength="4" class="text" name="randcode" id="randcode" tabindex="3" /> <img onclick="get_randfunc(this);" src='<{$config.weburl}>/includes/rand_func.php'/> <{if $smarty.get.erry=="-3"}> <font color="red"><{$lang.codeerr}></font> <{/if}> </div> </div>
$_SESSION[" auth"] は rand_func.php によって生成されます
直接入力すると、送信されないため検証コードは表示されません
更新後に検証コードが送信されるのはなぜですかそれは一度ですか?ログイン インターフェイスにログインして送信するにはどうすればよいですか?
Buzhuが言ったように、ユーザーがページをダウンロードした後に確認コードの画像をリクエストすると、セッション設定が発生します。 もちろん、PHPをリクエストするときに初めて確認コードを見ることはできません〜
そして、あなたの質問に対する私の理解は少しです。曖昧です... ログイン ページに初めてアクセスしたときにセッションを取得したいですか、それとも初めて確認コードを送信したときにセッションを取得したいですか?
また、jsを使って認証コードの画像を変更する機能も含めて、キャッシュを防ぐために認証コードのURLに乱数を付加するのがベストです
おそらく画像のキャッシュの問題です。
af205bbe1b1ef6e3279c60e2443533ee/includes/rand_func.php ?{time()}'/>
これを変更します。
ログイン ページにアクセスすると、$_SESSION["auth"] の値が空になります
以下は確認コードです
if(!empty($_GET["action"])) $post=$_GET;else $post=$_POST;if(!empty($_GET['forward'])&&strpos($_GET['forward'],'script')>0) header("Location:login.php");//全if(!empty($post["action"])&&$post["action"]=="submit"){ include_once("includes/global.php"); include_once("includes/smarty_config.php"); include_once("config/reg_config.php"); if(strtolower($_SESSION["auth"])!=strtolower($post["randcode"])&&empty($post['first_index'])&&empty($post['connect_id'])) { header("Location: login.php?erry=-3");//证 exit(); }
ログイン ページにアクセスすると、$_SESSION["auth"] の値が空になります初めて、表示を更新するまで変化しません。 。 。
$_SESSION['auth'] = $randcode;
$_GET['w']?$_GET['w']:"80"; の 75 行目と 76 行目を削除します。 ]?$_GET['h']:"33";
が
$width = isset($_GET['w']) に変更されました ? $_GET['w'] : " 80"; $_GET['h']) ? $_GET['h'] : "33";
まだ動作しません。 。 。 。
ValidationCode クラスは別のファイルに配置され、別のメソッド a を使用して検証コードが生成されます。
必要に応じてメソッド a を必ず削除してください。クラス。
ファイルに BOM ヘッダーが含まれているかどうかを確認します