- ベストアンサー
PHPで特定のURLにジャンプする方法
こんにちは。HTMLファイル上のText(mytext)から受け取ったデータに基づいて、特定のURLにジャンプさせる方法を探しています。 以下のようなコードを作りました。しかし、これだとエラーになります。 header("Location: ") の使い方自体に問題があるのか、それ以外に問題があるのかわかりません。 アドバイスをいただきたく、よろしくいお願いいたします。 <?php if ($_POST['mytext'] == "google") { header("Location: http://google.co.jp"); } else { header("Location: http://yahoo.co.jp"); } ?>
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
なるほどですね。エラーを見るとヘッダーが既に読み込まれていますと出ていますね。既に読み込まれているのにまたヘッダーを読み込もうとした際に出力されるエラーです。header関数を読み込む位置が間違っているだけです。どこで読み込んでいるのでしょうか?ロジックを載せていただければわかりやすいのですが。
その他の回答 (5)
- livrekun
- ベストアンサー率47% (9/19)
<?php の前に改行も含めてはいけません。 1行目に <?php を記述してみてください。
補足
ありがとうございます。 言われたとおりにやってみました。 localhostの中では とりあえずリダイレクトしているようですので 成功したのだと思います。 ありがとうございます。
- 11spec0
- ベストアンサー率83% (10/12)
こちらのサーバーでは問題なく動作するんですけどね・・・遷移元のロジックはどうなっていますでしょうか??
補足
遷移元のロジックと言いますと、HTMLのことでしょうか? 一応、以下のとおりです。 <html> <head> <title>test</title> </head> <body> <form name="myform" method="post" action="header-location-new.php"> <input type="text" name="mytext"> <input type="submit" value="click"> </form> </body> </html> 何か問題があったらご指摘ください。
- 11spec0
- ベストアンサー率83% (10/12)
まず、<HTML></HTML>のタグ内でheader関数を記述することが間違っております。headerで飛ばすだけならその<HTML></HTML>タグは省き、 <?php コード ?> のみで実行してみてください。
補足
ありがとうございます。 おっしゃられたとおりに <HTML></HTML> のタグをはずしてみましたが、やはり headers already sent by というメッセージが出ます。 ひょっとして、このphpに飛ばす元のHTMLの記述にも問題があるのでしょうか? いずれにしろ、何かアドバイスがあればよろしくお願いいたします。
#1の回答と同様にエラーの内容も明記すれば原因がわかるかと思うのですが・・・ header関数の前にechoなどで出力していませんか? header関数を使う際よく引っかかってしまう事があるのでこれが 原因では?
補足
レスありがとうございます。 以下のようなエラーが表示されます。 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\header-location-new.php:3) in C:\xampp\htdocs\header-location-new.php on line 7 ------------------------------- また、コードは以下のとおりです。 <html> <?php if ($_POST['mytext'] == "google") { header("Location: http://google.co.jp"); } elseif ($_POST['mytext'] == "yahoo") { header("Location: http://yahoo.co.jp"); } else { } ?> </html> 何かまずい点がありましたら、ご指摘願います。 よろしくお願いします。
- 11spec0
- ベストアンサー率83% (10/12)
こんばんは。 <?php if($_POST['mytext'] == "google"){ header("Location:http://google.co.jp"); }else{ header("Location:http://yahoo.co.jp"); } ?> こちらでもエラーが発生するでしょうか?もしエラーが出力されましたら、その内容を教えてください。
補足
レスありがとうございます。 やはりエラーになります。 上にエラーとコードを投稿しました。 何かまずい点がありましたら。ご指摘願います。 よろしくお願いします。
補足
レスありがとうございます。 >header関数を読み込む位置が間違っているだけです。 >どこで読み込んでいるのでしょうか? すみません。header関数を読み込む位置というのがよくわかりません。 下に示したコードの通りです。 それともこれ以外に何か示したほうがよいものがあれば、ご教示ください。 無知ですみません。