アプリ版:「スタンプのみでお礼する」機能のリリースについて

【PHP?】header("location : ・・・")が作動しない
PHPに関して質問させていただきます。

--------------------------------------------
<html>
<head>
<title></title>
</head>
<body>
<?php
if($_POST['pay'] == credit) {
header("Location : creditinfo.php");
} else {
print("ただいま制作中です\n");
}
?>
</body>
</html>
--------------------------------------------
というコーディングを行い、
・前ページでのpostで[credit]というデータが返ってくると別ページへ移動
・それ以外のデータが帰ってきたら「ただいま制作中です」というテキストを表示
ということを行いたいのですが、
それを実行すると

Warning: Cannot modify header information - headers already sent by (output started at C:・・・.php:6) in C:・・・.php on line 8

というエラーが返ってきてしまい、そのページから先に進めなくなってしまいます。
様々なページで解決方法を探りましたが、解決できずにいます。

ちなみに、elseの方の「ただいま制作中です」は表示できます。

どなたかご教授をお願いします。

A 回答 (3件)

Locationヘッダの前に<html>~~等の出力があるからでは?



<?php
if($_POST['pay'] == "credit") {
header("Location : creditinfo.php");
} else {
$msg = "ただいま制作中です";
}
?>

<html>
<head>
<title><title>
</head>
<body>
<?php
echo $msg;
?>
</body>
</html>

と、してみてください。
    • good
    • 0
この回答へのお礼

お礼が遅れてしまい申し訳ございませんでしたが、早い回答ありがとうございました。
buraruさんのソースを使い、また

header("Location : creditinfo.php");
の部分を
header("Location:creditinfo.php");
と、コロンの前後の半角スペースを消すことで正常に作動できました。

これで作業が進みます。本当にありがとうございました。

お礼日時:2010/06/28 11:07

> header("Location : creditinfo.php");



以下のようにすればどうでしょうか?

header("Location: http:./creditinfo.php");
exit();
    • good
    • 1
この回答へのお礼

早い回答ありがとうございます&お礼が遅くなり申し訳ございませんでした。

>exit();

これも忘れていました(汗

exit文も付け加えさせていただきます。
ありがとうございました。

お礼日時:2010/06/28 11:09

すでに回答がでていますが、httpの基本を理解していないためにおこっている現象です。



http://ja.wikipedia.org/wiki/Http

httpはhtmlの文字列を表示する(送信する?)前にサーバーとユーザーのブラウザの間で
さまざまなデータのやり取りをしています。
ご質問のヘッダロケーションもhtml本文より前にやりとりしなくてはいけないルールです。
今回文中にヘッダを表記したことで、httpの基本ルールがやぶられており
サーバーからエラーが出力されているわけです。

対処方法はすでに出ているようなheaderの出力箇所をhtml本文出力前におくか、
(できればheader出力後exitしてしまうのが効率的)
場合によってはmetaタグで飛ばすなども検討してみてはどうでしょうか?

<meta http-equiv="refresh" content="0;URL=creditinfo.php">
    • good
    • 0
この回答へのお礼

回答ありがとうございます&お礼が遅くなってしまい申し訳ございませんでした。

PHP自体は、1年前に使用していたので、そのときにこのheaderの分岐も使っていたのですが、
完全にルール等の使い方を忘れてしまっていたので焦っていましたが、
それに関する指摘や説明など詳しく書いていただいて、本当に助かります。

今後は気をつけてプログラミングの腕を磨いていきます。ありがとうございました。

お礼日時:2010/06/28 11:12

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