下記のように
- でpostの値を受け取り、その内容に問題がなければ
- $_SESSION['name']=$username;を格納し
- ページがリフレッシュされ、$_SESSION['name']が!is_nullではないのでb.phpに遷移する、一方で受け取った内容にエラーがあれば_SESSION['name']=$usernameされないので、 $_SESSION['name']=$username;画されず、a.php上でエラーメッセージが表示される
ということを期待してコードを書いたのですが、実際にはb.phpには遷移をしてくれません。
またエラー表示もされずに同じa.phpが表示されるのですが、そこからページをリロードすると
b.phpに遷移されます。
ここから考えられることはsubmitされてページが再度読み込まれた時点では
<?php session_start(); if(!is_null($_SESSION['name'])){//ログイン済みの場合はリダイレクト header('Location:b.php'); exit; } ?>が実行されていないということなのですが、この原因を解決方法についてアドバイスをいただけますでしょうか。
よろしくお願い申し上げます。
a.php
php
1<?php 2session_start(); 3 if(!is_null($_SESSION['name'])){//ログイン済みの場合はリダイレクト 4 header('Location:b.php'); 5exit; 6 } 7 8//POSTが成功した場合の処理 9if($_POST['category']==="posting_a" && $_POST['token']===$_SESSION['token']){ 10 //(中略)POSTされたデータの判定処理、もしエラーが含まれる場合には$error[]にエラーコードを格納 11 if(empty($error)){ 12 //(中略)ポストされたデータにエラーがなければの処理 13 //$username = $_POST['username']でユーザから受け取ったusernameをここでMYSQLに格納する処理をしています 14 $_SESSION['name']=$username;//ここで格納している 15 } 16 17} 18?> 19 20<form method="POST" id="posting" action=""> 21 <input type="text"> 22 <input type="hidden" name="category" value="posting_a"> 23 <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>"> 24 <button form="posting" type="submit"></button> 25</form> 26 27<div class="err_message"> 28 <?php if(!empty($error)):?> 29 <!--htmlでエラーメッセージの出力--> 30 <?php endif;?> 31</div> 32
回答1件
あなたの回答
tips
プレビュー