ページの移動ができない原因

このQ&Aのポイント
  • データの保存とページ移動を同時にしたいのですが、データの保存はできても、ページの移動ができません。
  • 原因が分からないのですが、どこが問題でしょうか?
  • formタグのaction属性とmethod属性が適切に設定されていない可能性があります。また、PHPの条件分岐部分にも問題があるかもしれません。
回答を見る
  • ベストアンサー

ページの移動ができない原因

データの保存とページ移動を同時にしたいのですが、 データの保存はできても、ページの移動ができません。 原因が分からないのですが、どこが問題でしょうか? <body> <form action="" method="post"> <dl> <dt>TEST</dt> <dd> <ul> <li><input type="radio" name="test" value="goolge">google</li> <li><input type="radio" name="test" value="yahoo">yahoo</li> </ul> </dd> <input type="submit" value="送信" name="sousin" /> </dl> </form> </body> <?php if(isset($_POST['sousin'])){ $test = $_POST['test']; //ファイル $file = "date.html"; //ファイル操作 $aaa = fopen($file,"w"); flock($aaa, LOCK_EX); fputs($aaa,$test); flock($aaa, LOCK_UN); fclose($aaa); } if($test == google){ header('Location: https://www.google.co.jp/'); } elseif($test == yahoo){ header('Location: http://www.yahoo.co.jp/'); } ?>

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

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

headerより前に「ブラウザに何かを返す」処理があってはいけません。phpはブラウザに何か返すときには必ずhttpヘッダ(content-type: text/html)を返します(httpの仕組み上、当然ですね)。途中までhtmlソースを返したあとで、headerを使っても動作しません。 http://jp2.php.net/manual/ja/function.header.php ∴ 提示されているhtml部分はphp部分(POSTデータのチェック・データ保存・画面遷移)の後にしてください。

sasaki027
質問者

お礼

php部分を移動して解決できました。 回答ありがとうございます。

関連するQ&A

  • ページのジャンプ

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 ラジオボタンで選択してボタンを押すとジャンプするプログラムを作りたいのですが、 location.href = "http://www.yahoo.co.jp/"; でジャンプしません。 こちらがソースです。 <SCRIPT language="JavaScript"> function sopp(frm){ if(frm.go[0].checked){ location.href = "http://www.yahoo.co.jp/"; } if(frm.go[1].checked){ location.href = "http://www.google.com/"; } if(frm.go[2].checked){ location.href = "http://jp.msn.com/"; } } } </SCRIPT> <form name="pon" onSubmit="return sopp(this)"> <input type='radio' name='go' value='YAHOO!JAPAN'> YAHOO!JAPAN<br> <input type='radio' name='go' value='google'> google<br> <input type='radio' name='go' value='MSN'> MSN<br> <input type="submit" name="mol" VALUE="ウインドウを開く"> </form> どうかお分かりになる方ご教授お願いします。

  • textareaに改行を入れても、CSV上では一セルに収まる方法は?

    結論から言いますと、 textareaに改行を入れると、CSVファイルが下段に移ってしまいます。 やりたいとこ textareaに改行を入れても、CSV上では一セルに収まってほしいです。 いろいろ調べたのですが、以下のどこを書き換えればよいか分からないんです。 初心者なため困っております。宜しくお願い致します。 △△△△△△△△△△△△△△△△ ファイル名:input.php ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ <html> <head> <title>インプット</title> </head> <body> <h1 style="background:#cccccc">(書き込み)</h1> <form method="POST" action="write.php"> お名前: <input type="text" name="name" size="20" maxlength="30" /><br /> メッセージ: <textarea name="message" rows="4" cols="40">ここに感想を記入してください。</textarea> <br /> <input type="submit" value="送信" /> </form> </body> </html> △△△△△△△△△△△△△△△△ ファイル名:write.php ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ <?php $file=fopen("good.csv","a"); flock($file,LOCK_EX); $line =date("Y年 m月 d日 H:i:s")."\t"; $line.=$_POST['name']."\t"; $line.=$_POST['message']."\t"; fputs($file,$line."\n"); flock($file,LOCK_UN); fclose($file); header("Location: input.php"); ?>

    • ベストアンサー
    • PHP
  • フォームに入力したデータが消えてしまう

    フォームに入力された情報を、別のhtmlファイルに保存しているのですが、 フォームがあるページにアクセスするだけで、以前に保存していたデータが消去されていまいます。 原因が分からず悩んでいるのですが、何か解決策はありますか? ソース <body> <dl> <dt>テスト</dt> <dd><input name="test" type="text" id="name" size="20" maxlength="20"/></dd> <input type="submit" value="送信" /> </dl> </body> <?php $test = $_POST['test']; //ファイル $file = "date/date.html"; //ファイル操作 $abc = fopen($file,"w"); flock($abc, LOCK_EX); fputs($abc,$test); flock($abc, LOCK_UN); fclose($abc); ?>

    • ベストアンサー
    • PHP
  • パラメータが受け取れません。

    パラメータが受け取れません。 input.php と inputData.phpがあります。 input.phpには入力フォームと、登録ボタン押下時に 自画面を呼び出し、入力チェックを行っており、エラーの場合 エラーメッセージを表示、エラーではない場合、inputData.phpに 画面遷移しますが、パラメータが受け取れません。 *input.php if(empty($_POST["name"])){ $err ="えらー"; }else{ header("Location:http://localhost:8080/aaa/inputData.php"); } <form action="input.php" method="post"> <input type="text" name="name" value="aaa"> <input type="submit" name="name" value="bbb"> </form> このようなやり方はできないのでしょうか? お分かりになる方ご教授よろしくお願い致します。

    • ベストアンサー
    • PHP
  • テキストリンクでsubmitするには

    簡易的な検索システムを作ってみました。 検索フォームでは、エリアごとにボタンを設置し、ボタンをクリックすることで、該当するエリアの検索結果が表示されるというものです。 今回、この検索フォームのボタンをテキストリンクで表示できないかと思い、ご質問させて頂きました。 現在は、下記のようなフォームにしています。 <form name="" method="POST" action="result.php"> <ul> <li><input type="submit" name="area" value="新宿"></li> <li><input type="submit" name="area" value="銀座"></li> <li><input type="submit" name="area" value="渋谷"></li> <li><input type="submit" name="area" value="恵比寿"></li> <li><input type="submit" name="area" value="品川"></li> </ul> </form> ※例えば、新宿のボタンをクリックすると、新宿に該当する検索結果が表示されます。 このボタンをテキストリンクにする方法としては、どういった方法がありますでしょうか? アドバイスをいただければ幸いです。

    • ベストアンサー
    • HTML
  • ファイルの読み書きについて教えてください。

    フォームから投稿されてきた内容を、テキストファイルに書き込むphpを作っているのですが、 flock関数で、誰かが書き込んでいるときに他の人が書き込めないようにファイルをロックしたいと思っています。 以下のソースでLOCK_EXとLOCK_UNは正しく動作するでしょうか。 いまいち不安で困っています。 //ポストされてきた内容が$nameに入ります $name = $_POST['name']; $fh=fopen("test.txt","a+"); flock($fh, LOCK_EX); fwrite($fh,"$name \n"); flock($fh, LOCK_UN); fclose($fh); どなたか詳しい方教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数のラジオボタン項目でのテキスト入力欄の有効化

    調べながら手探りでソースを書いてみましたが、うまく動きません。 javascript初心者ですので、ものすごく初歩的な勘違いがあったり、または根本から全く間違っているかもしれません。 以下のソースのように、ラジオボタンで選択してもらう項目が3つある場合、それぞれ「なし」を選択した場合だけテキスト入力欄を非表示にしたいのですがうまく動きません。 ラジオボタンで選択する項目が1つずつだとうまくいくのですが、3つの場合どこを修正したらいいのでしょうか? よろしくお願いします。 【HTML】 <script type="text/javascript" src="sample.js" charset="UTF-8"></script> <ul> <li><input type="radio" name="AAA" id="nothing" value="なし" onClick="changeDisplay()"/>なし</li> <li><input type="radio" name="AAA" id="by_week" value="1週間ごと" onClick="changeDisplay()"/>1週間ごと</li> <li><input type="radio" name="AAA" id="by_month" value="1ヶ月ごと" onClick="changeDisplay()"/> 1ヶ月ごと</li> <li><input type="radio" name="AAA" id="by_year" value="1年ごと" onClick="changeDisplay()"/>1年ごと</li> </ul> <p id="AAA-text" style="display:none;"> <input type="text" name="XXX" size="15" > </p> <ul> <li><input type="radio" name="BBB" id="nothing" value="なし" onClick="changeDisplay()"/>なし</li> <li><input type="radio" name="BBB" id="by_week" value="1週間ごと" onClick="changeDisplay()"/>1週間ごと</li> <li><input type="radio" name="BBB" id="by_month" value="1ヶ月ごと" onClick="changeDisplay()"/> 1ヶ月ごと</li> <li><input type="radio" name="BBB" id="by_year" value="1年ごと" onClick="changeDisplay()"/>1年ごと</li> </ul> <p id="BBB-text" style="display:none;"> <input type="text" name="YYY" size="15" > </p> <ul> <li><input type="radio" name="CCC" id="nothing" value="なし" onClick="changeDisplay()"/>なし</li> <li><input type="radio" name="CCC" id="by_week" value="1週間ごと" onClick="changeDisplay()"/>1週間ごと</li> <li><input type="radio" name="CCC" id="by_month" value="1ヶ月ごと" onClick="changeDisplay()"/> 1ヶ月ごと</li> <li><input type="radio" name="CCC" id="by_year" value="1年ごと" onClick="changeDisplay()"/>1年ごと</li> </ul> <p id="CCC-text" style="display:none;"> <input type="text" name="ZZZ" size="15" > </p> 【sample.js】 function changeDisplay() { if ( document.mailform["AAA"][0].checked ) { document . mailform["XXX"] . disabled = true; document . getElementById('AAA-text') . style . display = "none"; } else { document . mailform["XXX"] . disabled = false; document . getElementById('AAA-text') . style . display = "inline"; } } window.onload = changeDisplay; //---------------------------------------------------------------------------- function changeDisplay() { if ( document.mailform["BBB"][0].checked ) { document . mailform["YYY"] . disabled = true; document . getElementById('BBB-text') . style . display = "none"; } else { document . mailform["YYY"] . disabled = false; document . getElementById('BBB-text') . style . display = "inline"; } } window.onload = changeDisplay; //---------------------------------------------------------------------------- function changeDisplay() { if ( document.mailform["CCC"][0].checked ) { document . mailform["ZZZ"] . disabled = true; document . getElementById('CCC-text') . style . display = "none"; } else { document . mailform["ZZZ"] . disabled = false; document . getElementById('CCC-text') . style . display = "inline"; } } window.onload = changeDisplay;

  • 大量のチェックボックス状態取得について

    質問させてください。 以下のようなHTML構造で連続している場合、 ID内全体のチェックボックスの状態を取得し、未チェックの物を非表示するにはどのようにすれば一番処理速度が速いのでしょうか? <div id="hoge1"> <ul> <li> <ul class="Parents"> <li class="child"><input type="checkbox" name="AAA"></li> <li class="child"><input type="checkbox" name="BBB"></li> <li class="child"><input type="checkbox" name="CCC"></li> <li class="child"><input type="checkbox" name="DDD"></li> </ul> </li> <li> <ul class="Parents"> <li class="child"><input type="checkbox" name="AAA"></li> <li class="child"><input type="checkbox" name="BBB"></li> <li class="child"><input type="checkbox" name="CCC"></li> <li class="child"><input type="checkbox" name="DDD"></li> </ul> </li> ~~~~~~~~~~~~    ※繰り返し ~~~~~~~~~~~~ </ul> </div> 現在はjQueryで$ (ul.Parents li.child)で全体をラップし、for文のループ内で$eq()で1件毎chekedを参照し、.hide()を行っています。 動作自体は問題ないのですが、処理速度の遅さが気になっています。 速い方法でればjQueryを使用しない方法でもかまいません。 どうかよろしくお願い致します。

  • li タグ全体をリンクに。

    <ul> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> <li><label><input type="radio" name="" value="" ><span>text</span></label></li> </ul> 上記ですが、リストのどこを押してもラジオがチェックされるようCSSで実装したいと、考えています。html 5 で 最新スマフォならというところです。 どうぞよろしくおねがいいたします。

    • ベストアンサー
    • HTML
  • submitではなくbuttonで送信

    事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。

専門家に質問してみよう