プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。HTMLファイル上のText(mytext)から受け取ったデータに基づいて、特定のURLにジャンプさせる方法を探しています。
以下のようなコードを作りました。しかし、これだとエラーになります。
header("Location: ") の使い方自体に問題があるのか、それ以外に問題があるのかわかりません。
アドバイスをいただきたく、よろしくいお願いいたします。

<?php

if ($_POST['mytext'] == "google")
{
header("Location: http://google.co.jp");
}
else
{
header("Location: http://yahoo.co.jp");
}


?>

A 回答 (6件)

こんばんは。


<?php

if($_POST['mytext'] == "google"){
header("Location:http://google.co.jp");
}else{
header("Location:http://yahoo.co.jp");
}

?>
こちらでもエラーが発生するでしょうか?もしエラーが出力されましたら、その内容を教えてください。

この回答への補足

レスありがとうございます。
やはりエラーになります。
上にエラーとコードを投稿しました。
何かまずい点がありましたら。ご指摘願います。
よろしくお願いします。

補足日時:2008/07/27 19:05
    • good
    • 0

#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>


何かまずい点がありましたら、ご指摘願います。
よろしくお願いします。

補足日時:2008/07/27 19:03
    • good
    • 0

なるほどですね。

エラーを見るとヘッダーが既に読み込まれていますと出ていますね。既に読み込まれているのにまたヘッダーを読み込もうとした際に出力されるエラーです。header関数を読み込む位置が間違っているだけです。どこで読み込んでいるのでしょうか?ロジックを載せていただければわかりやすいのですが。

この回答への補足

レスありがとうございます。

>header関数を読み込む位置が間違っているだけです。
>どこで読み込んでいるのでしょうか?

すみません。header関数を読み込む位置というのがよくわかりません。
下に示したコードの通りです。
それともこれ以外に何か示したほうがよいものがあれば、ご教示ください。
無知ですみません。

補足日時:2008/07/27 22:01
    • good
    • 1

まず、<HTML></HTML>のタグ内でheader関数を記述することが間違っております。

headerで飛ばすだけならその<HTML></HTML>タグは省き、
<?php
コード
?>
のみで実行してみてください。

この回答への補足

ありがとうございます。
おっしゃられたとおりに <HTML></HTML>
のタグをはずしてみましたが、やはり
headers already sent by
というメッセージが出ます。

ひょっとして、このphpに飛ばす元のHTMLの記述にも問題があるのでしょうか?

いずれにしろ、何かアドバイスがあればよろしくお願いいたします。

補足日時:2008/07/27 23:20
    • good
    • 0

こちらのサーバーでは問題なく動作するんですけどね・・・遷移元のロジックはどうなっていますでしょうか??

この回答への補足

遷移元のロジックと言いますと、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>

何か問題があったらご指摘ください。

補足日時:2008/07/28 23:42
    • good
    • 0

<?php


の前に改行も含めてはいけません。

1行目に
<?php

を記述してみてください。

この回答への補足

ありがとうございます。
言われたとおりにやってみました。
localhostの中では とりあえずリダイレクトしているようですので
成功したのだと思います。
ありがとうございます。

補足日時:2008/07/28 23:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!