フォームで「戻る」と入力内容が消えてしまいます

このQ&Aのポイント
  • メールフォームページを作成中で、PHPの知識が無いため、下記のスプリクト利用させていただこうと設定中です。
  • IE(9)でフォームに入力し、確認画面から「戻る」ボタンをクリックすると、入力内容が消えてしまいました。
  • 項目の多いフォームページの為、このまま進めるわけにはいかず、困っております。
回答を見る
  • ベストアンサー

フォームで「戻る」と入力内容が消えてしまいます

メールフォームページを作成中で、PHPの知識が無いため、下記のスプリクト利用させていただこうと設定中です。機能的には理想に近いスプリクトなのですが、IE(9)でフォームに入力し、確認画面から「戻る」ボタンをクリックすると、入力内容が消えてしまいました。 項目の多いフォームページの為、このまま進めるわけにはいかず、困っております。 何か解決方法はございませんでしょうか…。 または、無料・有料にこだわらず(できれば無料…)、オススメのメールフォームがございましたらお教えいただけませんでしょうか。 ■同現象はIE9(windows7)で起こりました。IE6/7/8(IE TESTER)では起こらないようです。  Chrome/Firefox/Safariでは問題ありません。(Mac版も) ■スプリクト配布いただいているサイト  http://www.sapphirus.biz/php/sformmail2/ ■同様の質問 ・http://okwave.jp/qa/q6491971.html  こちらの方はセッションが切れていたということで解決されたようですが、IEを落としたり、再起動したりで試してみましたが解決いたしませんでした…。 一人で困り果て、はじめてOKWaveを利用させていただきます。 不慣れで、情報不足かもしれませんが、何卒ご了承ください。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

リンク先におよそ二年前の自分の回答があって、コーラ噴出しそうになりました。 いまだにそうですが、キャラ固まってない頃で顔文字とか使ってて、軽くめまいがしました。 ちなみに、そちらの質問の件も 『「戻る」ボタンを押した時の動きが、onclick="history.back()" 』 なんですよねぇ。。 実は、二年前の見る前に、こっちのソースを見て「history.back()かぁ~JavaScript絡みか~設定とかかなぁ~」とか思ってたら、二年前も同じ事言ってたっていう。。。 さて、無意味な無駄話が長くてすみません。 まぁ、正直な所 原因はわかりません。 ↓ここで見つけたんですけど、 http://d.hatena.ne.jp/visia_creators/20110413/1302678165 ↓これ追加するとどうでしょう? <meta content="86400" http-equiv="Expires"/> 『原因はキャッシュにあるようで、メタに明示的にキャッシュの記述をしてあげると、この現象を回避できるようです。』 と書かれてます。

A_KWMT
質問者

お礼

ご回答有難うございます!! 私もビックリしました!飲んでたのはコーヒーでしたがw 同じ質問を探していたとき、この方に回答いただけたら良いのになぁ。と思っていたので嬉しいです!! ご指摘いただきました件は、試してみたのですが私の入れ方が悪いのか、解決できませんでした…。スプリクトによっても変わってくるのでしょうか。 恐れながら、他方面でも同様の質問をし、 「sformmail.phpの267行目あたりのsession_cache_limiter('nocache');をコメントアウト」という回答で、問題の現象は改善されました。 IE6ではエラー画面から戻れなくなり、ウィンドウを閉じて再度メールフォームを開くと先ほどのエラー画面が表示されるという現象がありましたが、IE6ということで、気付かなかったことにします…。 恐らく同じ様な内容で困っている方も居ると思い、失礼を承知で転記いたしました。 何卒ご了承ください。 ご回答いただき、本当に有難うございました!

関連するQ&A

  • フォームの「戻るボタン」で内容が消えてしまう・・・

    PHPを勉強しながら、ブログをやってみたいと考えている素人です。 ネット上のフリーのフォームを利用させて頂き、問合せページを作ってみたのですが 確認ページの戻るボタンを押すと、入力が消えて、始めからやり直しになってしまいます。 session を利用しているようなのですが、素人ゆえsessionの仕組みが何とか解る程度で どこを修正して良いのか解りません。 「session_cache_limiter(‘none’);」 と言うものが、キーポイント?のようなのですが、色々と試しておりますが 一向にうまく行きません、何卒ご指導お願い致します。 以下、利用させて頂いているフォームの一部 配布元のサイト様(http://www.sapphirus.biz/php/sformmail/) 処理の流れ sformmail.html(入力) ≫ sformmail.php(入力チェック) ≫ confirm.php(確認) ≫ sformmail.php(送信[template.php/reply.php]) ≫ completion.html(完了) ○sformmail.php(入力チェック) // 設定 $mail_to = 'sample@mail.address'; // フォームデータを受け取るメールアドレス $mail_subject = 'S.B.フォームメール送信'; // 受け取る時のSubject(件名) $reply_subject = 'S.B.フォームメールより自動返信です'; // 送信者へ自動返信のSubject(件名) $mail_bcc = ''; // BCCで受け取りが必要な場合は設定 $internal_enc = 'UTF-8'; // 文字エンコード // メイン session_start(); if (!extension_loaded('mbstring')) Err('マルチバイト文字列関数が利用できません'); if (!$mail_to) Err('受取先メールアドレスが設定されてません'); if (!$_POST) Err('POSTデータがありません'); mb_language('ja'); mb_internal_encoding($internal_enc); $x_mailer = 'Sapphirus.Biz Formmail Ver. 1.40 (PHP/' . phpversion() . ')'; $mode = $_POST['mode']; switch ($mode) { case 'SEND': // メール送信 if (!$_SESSION) Err('セッションデータがありません'); // メールヘッダ if (!$_SESSION['email']) $mail_from = 'S.B.Formmail'; else $mail_from = $_SESSION['email']; $mail_header = "From: {$mail_from}\n"; if ($mail_bcc) $mail_header .= "Bcc: {$mail_bcc}\n"; $mail_header .= "X-Mailer: {$x_mailer}"; --------------文字制限のため以下省略---------------- ○confirm.php(確認) <?php //セッションを利用するのでここは削除しないで下さい session_start(); if (SID) Err('Cookieを有効にして下さい'); if (!$_SESSION) header('Location: completion.html'); function Err($err) { echo <<< EOM <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>エラー:$err</title></head> <body style="font-size: 12px; line-height: 1.8em;"> <strong>エラー : </strong>$err<br> <input type="button" value="戻る" onclick="history.back();"> ----以下省略--- 他にも、入力用や送信完了用のhtmlファイル等ありますが 上記が関連しているコードだと思います。どうぞよろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 問い合わせフォームの確認画面

    sformmailでフォームを作っていますが、IE6だけ確認画面から入力画面に戻らないだけど原因わかりますか?

    • 締切済み
    • PHP
  • PHP入力フォームについて

    現在入力フォームを作っています。 流れとしてはDBに入っている会員情報をフォーム上に呼び出して(各inputにはDB内の会員の情報が表示される)各会員が自分の情報を編集できるというフォームです。 ここで質問なのですが、会員の人が自分の入力内容を変更した際に入力漏れがあるとフォーム画面に戻るのですがその際に入力した内容が表示されるのではなくDB内のデータが表示されてしまいます。 これをDB内のデータではなく入力した内容にしたいのですが、どうしたらよろしいでしょうか? ソースは下記になります。 form.php <?php DB呼び出し・・・ $_SESSION['name'] = $row['name']; ・・・ ?> <?php echo $_SESSION['err_name']; ?> <input type="text" name="name" value="<?php echo $_SESSION['name']; ?>" /> confirm.php <?php $name = htmlspecialchars($_REQUEST['name']); if(!strlen($name)) { $_SESSION['err_name'] = '氏名を入力してください。'; $errFlag = true; } else { unset($_SESSION['err_name']); } エラーの時はform.phpに戻る ?> <?php echo $name; ?> としています。 とても省略していますが、お分かりの方がいらっしゃいましたら教えていただけると助かります。

    • 締切済み
    • PHP
  • Safari でフォーム入力ができない

    Mac OSX 10.6.8 Safari 5.1にて、Googleのテキストボックスとか、他のお問い合せフォーム等に、日本語で入力しようとすると、どのキーをたたいても、ページが再読み込みみたいになり、入力ができません。Firefoxで行うと問題ないので、Safariの問題かと思うのですが、この現象の解決策を教えていただけないでしょうか。 ※ちなみに、日本語入力は、ATOK 2008を使ってます。

    • ベストアンサー
    • Mac
  • フォームの構築

    phpで以下のような流れのフォームをつくっています。 基盤となる流れで問合せでも会員登録でもフォームの流れは共通です。 1:入力ページ 2:確認ページ 3:送信完了ページ ※入力ページと確認ページでは、自分自身にPOSTしてます 入力ページで送信ボタンを押すとデータチェック(未入力や妥当性)を行います。 ここでエラーがあればエラーメッセージを各フォームの項目の下に表示しページ移管しません。 エラーがない場合にはPOST値をSESSIONに格納し確認ページへリダイレクトします。 ※確認ページの各項目の表示値はSESSION値を利用 確認ページのボタンは送信ボタンのみで戻るボタンは用意していません。必要であればブラウザの戻るで戻ります。 送信ボタンを押すと送信完了ページへリダイレクトしメール送信等の必要な処理を行います。 いちいちSESSIONを利用しないでPOSTで済ませるべきという意見もあるのですが一般的にどちらがいいのでしょうか? 確かにSESSIONを利用しない場合、処理は楽になる事もあるのですがPOSTした瞬間に ページ移管してしまうので各フォームの下にエラーメッセージの表示はできないですよね? また、hiddenを使う事によって目には見えないもののソース上では見れるので セキュリティ的にもあまりよくないという事もあるのでどちらがいいものか迷っております。 問題なく動作はしているので構築方法についてアドバイスやいい方法がありましたら教えてください!

    • ベストアンサー
    • PHP
  • フォームに入力された内容を,次ページのフォームへ活かすには

     初心者ですのでよろしくお願いします。  現在 php と MySQL でデータ検索システムを制作しております。  データベースの検索は完成したのですが,利用者のために次のようなフォームを利用したいと思っています。 (1)フォームから検索語を入力したとします(例えば”北海道 小樽”)。 (2)するとデータベースから条件にあった内容が返されます(例えば小樽駅の写真など)。検索結果の上部には,検索入力フォームが配置しています(←ここがポイント)。 (3)しかし,検索結果が多すぎるため,新たに検索語を追加して検索しようとします。 (4)その時に,入力フォームには何も文字が入っていない状況になっています。ここに,今回の例であれば”北海道 小樽”というキーワードが残っていて,追加のキーワード入力を可能にしたいです。  グーグルなどの検索エンジンでも,検索した後も入力フォームに検索キーワードが残っていますよね?それをしたいのですが,簡単そうでいろいろと本を調べても見つかりませんでした。どなたかご指導よろしくお願いします。  ちなみに,HTMLだけで済めば良いのですが,phpでも勉強しますので,よろしくおねがいします。

    • ベストアンサー
    • PHP
  • フォームの入力値のセッション破棄は?

    Aフォームがありまして、入力して確認ボタンを押し、セッションに入力値が格納されたけど、途中でBフォームへ行ってしまった、という場合、いつまでもAフォームの入力値をセッションに格納しておいても使わないですし、セッション変数名が競合して予期しない動作をしても困るので、他のページへ遷移した時点でAフォームの入力値セッションを削除するようにしたいのですが、実装方法としては、URLまたは絶対パスをセッションに入れといて、画面遷移するごとにそのセッションとURLまたは絶対パスを突き合わせ、一致しなければ削除、というやり方で問題ないでしょうか? ロードバランサ使ってても同一ページなら絶対パスは変わらないのでしょうか??詳しくないんですが…。 美しい実装方法をご教示ください…。

    • ベストアンサー
    • PHP
  • HTMLでフォームを作ってPHPで受け取ることができません。

    プログラミング超初心者です。本でPHPを勉強中です。HTMLでフォームを作成しPHPでフォームに入力された内容を受け取るというところでつまづいてます。本に紹介されているサンプルスクリプトをローカルホストでブラウザで試しているのですがうまくいきません。 フォーム内に入力しSUBMITのボタンを押してもPHPの方のページが表示されません。2つのファイル名はform.html と form.php 名のですが、ブラウザのアドレスバーが http://localhost/form.html から http://localhost/form.html/form.php に替わりHTMLが再表示されるだけです。 環境は os windows XP SP1 ブラウザ IE6 php 4.2.2 です。 スプリクト載せると800字超えてしまいますので回答に載せます。 お解りになる方いらっしゃいましたらよろしくお願いいたします。

    • 締切済み
    • PHP
  • あらかじめフォームに内容を入力させたい

    こんにちは。フォーム入力に関することで質問させていただきます。 1つのページに10個の商品を置き、それぞれの説明の横に 「お問い合わせはこちら」というリンクを貼っています。(リンク先は全て同じ) ですが、問い合わせのページ自体は全て同じなので、一体どの商品についての問い合わせなのか分かりません。 なので、問い合わせのページに一緒に商品番号を入力する欄を作ったのですが、わざわざお客様に商品番号を入力させるのは手間です。 なので、リンクをクリックして問い合わせページに移ったときに、あらかじめ商品番号が入力されている形にしたいのです。 <a href="contact.html?商品番号=123123123">お問い合わせはこちら</a> のような感じです。 しかし具体的にどうやればいいかわかりません。javascriptで再現できるでしょうか? phpやcgiの知識はまったくないので、どうぞよろしくお願いします。

  • PHPでメール送信する際、SMTPを利用するメリッ

    PHPでメール送信する際、SMTPを利用するメリットについて教えてください。 ログイン認証でメールを送信したいのですが、 SMTPを利用した方がよいか、判断がつきません。 例えば、 http://www.sapphirus.biz/php/sformmail2/ http://www.sapphirus.biz/php/sformmail2s/ では、SMTPの方は「認証」が必要なので、 それだけ大変そうなのですが、 SMTPを利用する、しない場合の、 「メリット」「デメリット」を教えてください。 また、SMTPを利用しないやり方(メールアドレスを書いてmail関数を利用)は、 何方式と呼ぶのでしょうか? WEBメール方式? 環境) レンタルサーバ 現状) SMTPを利用せずにメールは送れるのですが、    どういう仕組みで届くか理解できてません

    • ベストアンサー
    • PHP

専門家に質問してみよう