- ベストアンサー
header("Location: ")でページ移動しない;
<?php $image_no = $_GET['image_no']; if($image_no == ""){ $image_no = 0; } if($image_no == 10){ header("Location: http://www.test/i/"); } ?> <img src="../img/test<?php echo $image_no;?>.jpg"> <?php echo $image_no;?> <br/> <a href="test.php?image_no=<?php echo $image_no + 1;?>">次へ</a> こんなカンジで、『次へ』のリンクをクリックすると、画像が切り替わるものを書いたんですが、$image_no == 10になったら、別のページへジャンプしたいんですが、うまくいきません。 10回目でエラーになってしまいます。 どうやったらうまく違うページへジャンプできるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そのエラーは、「header の前に 何か出力されちゃってるよエラー」ですので、 何か 出力されていないかご確認ください。 #3さん ご指摘の改行もそうですし、半角スペースなど 目に見えないものでもNGです。 ob_start()を使って回避する方法もありますが、これは根本的な解決ではありません。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
文字コードはUTF? BOMを吐いていたり、いらない改行などはいっているのでは? 当然ながらhttpのヘッダーは文字を送る前に設定する必要があります。
- bm_hiro
- ベストアンサー率51% (200/388)
さっきのアルバムの方ですね。 回答しようかと思ってたら質問が消えてて、吹きました。 > header("Location: http://www.test/i/"); 文法上は問題ないと思います。 どんなエラーが出たのですか?
補足
いかにもさっきのアルバムの人です。 自力でなんとかやったらできました。 せっかく回答していただこうとしたのに、もうしわけありません! 今回の質問は、そのアルバムの続きです Warning: Cannot modify header information - headers already sent by (output started at /home/admin/test.php:10) in /home/admin/test.php on line 29 エラー文をそのまま書きました。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 if($image_no == 10){ header("Location: http://www.test/i/"); exit; } exitを入れてみてください。
補足
ありがとうございます。 さっそくやってみましたが、上の補足同様、エラーがでて、結果は変わりませんでした
お礼
ありがとうございます。 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> の下に書いていれば、エラーになって当然ですね!できました。本当にありがとうございます。