• 締切済み

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

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

  • nkmyr
  • お礼率67% (403/600)
  • PHP
  • 回答数3
  • ありがとう数3

みんなの回答

回答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% (767/2786)
回答No.1

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

nkmyr
質問者

お礼

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

関連するQ&A

  • リロードすると直るParse error

    はじめまして 現在 FreeBSD 4.7 Apache/1.3.33 PHP 4.3.10 でwebアプリケーションを作成しているのですが タイトル通り、リロードすると直るParse errorが出てきて困っています。 リロードすると直るので、文法等の間違いはないと思うのですが・・・・ http://okweb.jp/kotaeru.php3?q=1261486 でも同じような現象だったみたいですが・・・PHP5みたいだったので、新たに質問させてもらいました。 解決方法ご存知の方よろしくお願い致します

    • ベストアンサー
    • PHP
  • ログインシステムをPHPで作る(複数のIDとパス)

    https://www.web-officer.com/php/make-login-system-with-php.php 上記のサイトを参考にしています。 ID「webtan」 パスワード「webtan_pass」 です。 複数のIDとパスワードでログインする方法を教えて下さい。 例 ユーザー1 ID「webtan」 パスワード「webtan_pass」 ユーザー2 ID「webtan2」 パスワード「webtan_pass2」 ・ ・ ・

    • ベストアンサー
    • PHP
  • PHP エラーだけどリロードすると元通りになる件

    質問させてください。 PHPを自作で作成して設置しているのですが、度々下記のエラーに悩まされております。 Call to undefined function ファンクション名 とか syntax error, unexpected '}' など。それぞれこの後にファイル名と行数が表示される。 このエラーが出た後に、一度もしくは数回リロード(更新)すると問題なく表示されるのですが、どうも気になります。 エラーの意味はインターネットで見て分かったのですが、 示している行を見ても、どこも間違っているところはないようです。 実際、数回ブラウザのリロードを押すと普通に表示されるようになります。 またこれと関係あるのか分かりませんが、稀に文字化けのように、 「..../TD>」な感じで、いち部分がおかしく表示されることがあり、 これもリロードをすると戻ります。 文字コードもファイルのエンコードもEUCを使用しているのですが。。。 先月サーバーを変えて、PHPのバージョンが変わり、 PHP 5.* (忘れました・・・)からPHP 5.2.6になってから、 このような現象が増えたような気がしますが、定かではありません。 また以前のサーバーは専用サーバーを使用していたのですが、 今は共有サーバーでスペックは以前よりは良くないのですが、 その辺りも関係するのでしょうか? 同じような経験をお持ちの方いらっしゃいませんか? 原因・解決方法があれば教えてください。

    • ベストアンサー
    • PHP
  • ブラウザでメッセージの音が出ない

    OS:Windows10 メイン:Chromeとサブ:Firefoxを使っています。 サイトのPHPなどの機能で"Webからのメッセージ"がポップアップで通知されるのですが ChromeでもFirefoxでも音が出ずに困っています。 確認した限りではサウンドのメッセージ(警告)がブラウザのメッセージと紐づいていないようです。 ※Slepnir2.9.19は音が出ました。 こちらを紐づける方法を教えてもらえますか?

  • PHP初心者です。何処がエラーなのかさっぱり解りません。

    超初心者です。 PHPの勉強を始めたばかりで、いきなりつまずいています。 下記の表示になりエラーになっているのですが、何処がエラーなのか意味が解りません。 Parse error: syntax error, unexpected $end in C:\xampp\htdocs\phplesson\03\login.php on line 31 どなたか教えてください。 よろしくお願いします。 ----------------- <?php session_start(); $error_message = ""; //ログインボタンが押されたかを判定 if (isset($_POST["login"])) { if ($_POST["member_name"] == "php" && $_POST["password"] == "password") { //ログインが成功した証拠をセッションに保持 $_SESSION["login_name"] = $_POST["member_name"]; //管理者専用画面へWebブラウザをリダイレクトさせる $login_url = "http://{$_SERVER["HTTP_HOST"]}/phplesson/03/anq_result.php"; header("Location: {$login_url}"); exit; } $error_message ="メンバー名かパスワードを間違えています。"; } ?> <html> <body> <?php if ($error_message) { print '<font color="red">' .$error_message. '</font>'; } ?> <form action="/phplesson/03/login.php" method="post"> メンバー名:<input type="text" name="member_name" value="" /><br /> パスワード:<input type="password" name="password" value="" /><br /> <input type="submit" name="login" value="ログイン" /> </form> </body> </html>

    • ベストアンサー
    • PHP
  • ブラウザリロードでの書き込みを防ぐ

    説明が上手くできないので 分かりにくくなりますが申し訳ございません。 練習で書いた構文の動作自体は問題ないようなのですが ブラウザをリロードさせると 直前に入力した内容が実行されてしまいます。 ---------------------------------------- <html> <body> <form action="" method="post"> <p>掲示板</p> <p>名前:<input type="text" name="name"></p> <p>内容:<br><textarea name="coment" cols=50 rows=4></textarea></p> <p><input type="submit" name="submit" value="送信"></p> </form> <?php error_reporting(1); function Aa($str){ return htmlspecialchars($str, ENT_QUOTES); } $now = date("Y年n月j日 H:i:s"); $name = Aa($_POST["name"]); $coment = nl2br(Aa($_POST["coment"])); $data = "名前:$name - $now <br>\r\n内容:<br>$coment </p>\r\n"; if($_POST["submit"]){ if(empty($name) || empty($coment)){ echo "<p>未入力があります。</p>"; }else{ $fp = fopen("test.txt", "a"); flock($fp, LOCK_EX); fputs($fp, $data); flock($fp, LOCK_UN); fclose($fp); } } $fp = fopen("test.txt", "r"); if($fp){ if(flock($fp, LOCK_SH)){ while(!feof($fp)){ $get = fgets($fp); echo $get; } }else{ echo "ファイルロック失敗"; } fclose($fp); } ?> </body> </html> ---------------------------------------- フォームに入力がない時に送信ボタンを押して 「未入力があります。」のエラーを出しておけば その状態でブラウザのリロードボタンをおしても ファイルに書き込み処理部分が実行されず それ以上ファイルに書き込みはされないのですが 入力成功した場合、ブラウザをリロードさせると 直前に入力した動作内容がそのまま実行され リロードさせるたび同じ内容が 繰り返し繰り返し書き込まれてしまいます。 条件分岐で何とかできそうなのですが なかなか上手くいきません。 リロードで同じ処理を繰り返させないよう なにか簡単で分かりやすい条件分岐方法がありますでしょうか? よろしくお願いいたいます。

    • ベストアンサー
    • PHP
  • ブラウザ終了時にセッションを削除する方法

    ログイン入力画面を作成し、以下の動作を確認しています。 (1)正常にログインしてブラウザを終了する。 (2)再びブラウザを起動してログイン後の画面を表示する。 (3)セッションがないため自動的にログイン入力画面へ移動する。 IEだとセッションが消えてログイン入力画面へ移動しますが、 Firefoxではセッションが消えず、ログイン入力画面へ移動しません。 Firefoxでもブラウザ終了後にセッションを消す方法はないでしょうか? 下記のプログラムで確認しました。 -------------------------------------------------------------------- login.php <?php session_start(); $error_message = ""; if(isset($_POST["login"])){ if($_POST["member_name"] == "php" && $_POST["pass"] == "pass"){ $_SESSION["login_name"] = $_POST["member_name"]; $login_url = "http://{$_SERVER["HTTP_HOST"]}/admin/anq_result.php"; header("Location: {$login_url}"); exit; } $error_message = "メンバー名かパスワードが間違ってます。"; } ?> <html> <body> <?php if($error_message){ print '<font color="red">'. $error_message. '</font>'; } ?> <form name="form1" method="post" action="login.php"> <p>メンバー名 <input type="text" name="member_name" value=""> <br> パスワード <input type="password" name="pass" value=""> <br> <input type="submit" name="login" value="ログイン"> </p> </form> </body> </html> ------------------------------------------------------------------------------------------------------------------------- anq_result.php <?php session_start(); if (!isset($_COOKIE["member_name"])) { unset($_SESSION["login_name"]); } if (!isset($_SESSION{"login_name"})) { $no_login_url = "http://{$_SERVER["HTTP_HOST"]}/admin/login.php"; header("Location: {$no_login_url}"); exit; } else { print "ログイン成功です。"; } ?>

    • ベストアンサー
    • PHP
  • たまにエラーになる現象

    特定のWEBサーバでPHPがたまにエラーになります。 よく見かけるPHPのエラーが表示されるのです。 リロードすれば直りますし、一回のリロードではまた同じエラーが表示されて、2度目のリロードで直ることもよくあります。 GETやPOSTに関係ないPHPファイルでもそうです。 エラーはPHPのファイルにより様々です。 例えば、katatumuriという文字を使った行でエラーが起きた時、katttumuriのように文字が変化してエラー表示されたこともありました。 その一例から、このエラーの原因は、たまに内部処理でデータが一部壊れて解釈されることがあって、その時にエラーになるようなんですが、同じようなことになった方はいませんか?

    • ベストアンサー
    • PHP
  • エラーメッセージが出てしまいます。

    困っています。 メールを送信しようとすると以下のエラーメッセージが出て送信に失敗します。 「メールサーバーは以下のように応答しました。<相手のアドレス>Relaying Denied Authenticate with POP First メッセージの宛先を確認してやり直してください。」   ブラウザはネスケを使っています。 プロバイダーはBIGLOBEとZEROを使っていますがどちらで 繋げても結果は同じです。 送信できなくてほとほと困っています。 どうかよろしくお願いいたします。

  • mb_convert_kanaを使うと出るエラー

    環境:Win32/Apache2.4.0/5.3.9RC3(C:\apache\php) mb_convert_kanaを使おうとするとエラーが出てしまいます。 Fatal error: Call to undefined function mb_convert_kana() in C:\apache\htdocs\test1.php on line 9 ネットで調べてみるとphpの再インストールが必要で bin/mkphp.shに下記インストール用スクリプトを書いて make cleanをすると良いとのことですが、mkphp.shがありません。 ------------------------------------------------------ make clean ./configure --with-apxs2=/usr/local/apache/bin/apxs \ --with-pgsql=/usr/local/pgsql \ --enable-mbstring \ --enable-mbregex \ --enable-gd-native-ttf \ --enable-memory-limit \ --enable-zend-multibyte \ --with-openssl \ --with-gd \ --with-ttf \ --with-freetype-dir \ --with-jpeg-dir \ --with-xpm-dir \ --with-zlib-dir \ --with-java \ && make && make install ------------------------------------------------------ また、参考になるか分かりませんが、 php.infoをブラウザで見たときに Configuration File (php.ini) Path には、C:\Windowsと表示されています。 <?php echo mb_internal_encoding(); phpinfo(); ?> とecho mb_internal_encoding();を追加してブラウザでみるとエラーが出てしまいます。 ヒントだけでも教えて下さい。

    • ベストアンサー
    • PHP

専門家に質問してみよう