下記のようなformを設置しているlogin.phpがあるのですが、
if($login_username==""||$login_pw=="")のようにサーバーサイドでも入力がない場合に
バリデーションをかけてエラーメッセージを吐き出すようにしています。
ここで、本ページ上に諸々の操作をした後にページを更新(リロード)すると<?php var_dump($_POST);?>の
値がリフレッシュされておらずリロード=submitのような挙動を示していることがわかりました。
本来の動作としては
if((/リロードではなくformをsubmitした場合/) && ($login_username==""||$login_pw==""))
と言う形で処理させたいのですが、このように動作してしまう原因と解決方法がわかりません。
調べたところ、このような記事を見つけました。
原因はブラウザ側の仕様とされているのですが詳細は載っていなく、また対処法の
if($_POST['submit']) {
/* 処理 */
header("Location: {$_SERVER['PHP_SELF']}");
exit;
}
についてもどの要素にname="submit"を設定すれば意図した動作なのかがわからず、解決に至ることができませんでした。buttonタグ等にname="submit" value="XX"等を設定しても、結局リロードがsubmitのような挙動をするので
実際にPOSTでもリロードでも$_POST['submit']は"XX"を返すので意図した動作になりません。
お力添えをお願い申し上げます。
php
1<form id="login" class="login-form" action="xx.php" method="POST"> 2 <input type="hidden" name="login" value="login_catch"> 3 <input type="hidden" name="token2" value=<?php echo htmlspecialchars($_SESSION['token2'],ENT_QUOTES,"UTF-8")?>> 4 <input type="text" name="loginname" id="login_username" class="register_text" placeholder="ユーザ名"/> 5 <input type="password" name="loginpw" id="login_pass" class="register_text" placeholder="パスワード"/> 6 <button form="login" class="login_button" type="submit" name="btn" value="check">ログインする</button><!--20190118--> 7 <div class="login-errmsgbox"> 8 <?php var_dump($_POST);?> 9 <?php if($login_username==""||$login_pw=="")){ 10 echo'<p id="er1" class="errmessage">メールアドレスとパスワードを記入して下さい</p>'; 11 }/*here*/?> 12 </div> 13 <p class="message message_wrapper" tabindex="0">無料でアカウントを作成する</p> 14</form>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/12 23:42
2019/06/12 23:57
退会済みユーザー
2019/06/13 00:09
2019/06/13 00:11
2019/06/13 01:17
2019/06/13 01:19
2019/06/13 01:20