• 締切済み

エラーメッセージがブラウザリロードしても消えない

https://www.web-officer.com/php/make-login-system-with-php.php エラーメッセージが出たあと、ブラウザをリロードしても消えないままです。 リロードしたら消える方法を教えて下さい。

みんなの回答

回答No.3

<?php session_start(); if(!isset($_SESSION["user_name"])) { $no_login_url = "index.php"; header("Location: {$no_login_url}"); exit; } ソースをちゃんと読んでみるとわかります。 リロードで最後のPOSTが再度送られていると 言ったと思います。 if(!isset($_SESSION["user_name"])) { なので、この部分は、 user_nameが「なければ」~「中の処理」です。 「あった」場合には機能していませんよ。 なので、これを記載したこと自体は無意味だったのです。 そこを直せばOKでしょう。 また、 login.php -> login_success.php login_error.php にどちらにしても、ジャンプするようにしておけば 最初からこの問題は起きなかったんですがね。

nkmyr
質問者

お礼

すみません。 PHPは初心者で少しは分かると思ったのですが、この説明では理解できませんでした。

回答No.2

リロードの場合、最後に送ったPOSTデータも再度送るのも込みで 「リロード」しているために起こる現象です。 ですので、同じページなどにジャンプする方がいいでしょう。 参考サイトで書いている <?php session_start(); if(!isset($_SESSION["user_name"])) { $no_login_url = "index.php"; header("Location: {$no_login_url}"); exit; } ?> この部分がそれです。 もう一つのやり方は、 エラーが出たら、現在のセッションデータを消してしまうやり方。 これならリロードしても、既存セッションは既に存在しないので、 新規扱いにできます。 または、エラーが出たときセッションにエラーが出たことを 格納しておき、リロード時すでにエラーが出たフラグが立っていたら 別の処理をするなど。

nkmyr
質問者

お礼

ありがとうございます。 以下追加しましたが、エラーメッセージは消えませんでした。どこが違うのでしょうか? <?php session_start(); $error_message = ""; if(isset($_POST["login"])) { if($_POST["user_name"] == "webtan" && $_POST["password"] == "webtan_pass") { $_SESSION["user_name"] = $_POST["user_name"]; $login_success_url = "login_success.php"; header("Location: {$login_success_url}"); exit; } $error_message = "※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。"; } ?> <?php session_start(); if(!isset($_SESSION["user_name"])) { $no_login_url = "index.php"; header("Location: {$no_login_url}"); exit; } ?>

  • q4330
  • ベストアンサー率27% (768/2786)
回答No.1

どんなエラーが出るのですか? ブラウザーを変えるとどうですか? Firefoxではエラーなく見えます。

nkmyr
質問者

お礼

ありがとうございます。 Firefoxでもエラーメッセージが消えませんでした。

関連するQ&A

専門家に質問してみよう