phpを使って、WEBを作っています。だいぶPHPを使えるようになってきて、今が一番楽しいときです。
実は以前から引っかかっていて、解決できないことがありますのでお助けください。
if文などで、条件を満たしたときに別のページに移動したいのですが、その移動のさせ方に下のようなソースを記入しています。
if($row==1){
header("location:********.php");
}
でも、どうもあまり良い方法ではないような気がしています。
(※*****はユーザー名やファイル名です。)
下のようなエラーが表示されました。
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/htdocs/******/public_html/******.php:17)
他のページにジャンプするような関数は何かないのでしょうか。
どなたか詳しい方宜しくご指導お願いいたします。
No.2ベストアンサー
- 回答日時:
そのエラーなんですが、
header("Location:xxxxx.hpp");
よりも先に、出力があるので出ています。
print とか、var_dumpとかしてませんか?
また、headerよりも前にrequire or includeしているファイルの
?>の後ろにスペースしていませんか?
これも出力とみなされて、エラーが出ます。
これ以外に処理をかませて自動で飛ばす場合、
javascriptとかで飛ばす方法を使うのが一般的ではないでしょうか?
ありがとうございます。
require もechoもどちらもあります^^。
JavaScriptを使うのですね。勉強になりました。
No.4
- 回答日時:
多少強引であるかもしれないですが、php.iniの設定で、output_bufferingを
output_buffering = On
と変更したらどうでしょうか?
ほかの回答者のように、ob_start()を使うのも手ですが。
No.3
- 回答日時:
se-nabeさんがおっしゃっている通り
header()の前に何らかの出力がされているとこのエラーがでます。
ただ、どうしてもリダイレクトの前に表示したい場合もあります。
この場合はob_start()を使ってやると出力の制御ができます。
セッションやクッキーなどを利用する場合も出力より先にしてやる必要がありますがこれを使えば出力があったあとでも利用することができます。
ありがとうございました。
テストのために、途中に確認用にprint文を2箇所ほどいれていましたが、それを削除しましたら上手く動作しました。
require文もあったので、ためしにと思い下の様にしてみました。
ob_start("require");
そして、
header("location:*****.php");
ob_end_flush();
でも、print文をとりましたら、特に何もしなくてもジャンプしましたので、ob_start()は消しました。
ob_start()の使い方は、よく分からないのですが、もし使うとすれば
上のような使い方で正しかったのでしょうか?
とても勉強になるアドバイスありがとうございました。
No.1
- 回答日時:
PHPはサーバ側がユーザへ送るhtml(とか)を(ユーザに判らないように「サーバ側で」)変化させるための仕掛け っていう認識は有る?
ユーザ側に送られてから何かやりたいならjavascriptか件のlocation(htmlでもできる従来の方法)になるね。
ユーザの入力(主にsubmit)があってからやってもいいというのなら読み出す物をそもそも変化させれば済むけど質問文だけではやりたいことが掴めないのでなんとも言えない・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHP ページング データベース 1 2022/06/16 10:30
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- PHP グローバルスコープはありますか? 1 2022/08/08 19:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リダイレクト元のURLの取得方法...
-
phpにcssを適応させたい...
-
phpでmysqlから画像パスを出力する
-
PHPで五角形、または多角形のグ...
-
XMLのロードに失敗する
-
PHPのif文でその処理を途中で抜...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
拡張子php画像をjpg画像等に変...
-
youtubeに音声のみのmp4ファイ...
-
PHPのMySQLモジュールのインス...
-
pixivのイラスト投稿の仕方を教...
-
javascriptからphpへ変数
-
PHPで作るフレーム、どんな風に...
-
PHPで外部プログラムのバックグ...
-
FTPでのファイルとディレクトリ...
-
ファイルアップロードの上限を...
-
フレームワークの選定について
-
ヒアドキュメントの中で別ファ...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
TCPDFについて
-
リダイレクト元のURLの取得方法...
-
PHPでダブルバッファリング(画...
-
ob_end_clean と ob_clean の違...
-
phpにcssを適応させたい...
-
PHPSpreadsheetによる書き出し...
-
PHPで`headers already sent`と...
-
PHPで取得したHTML内のdiv要素...
-
image関数でMS Pゴシックを使い...
-
PHP/phpMyAdmin/データベースな...
-
mPDFでのPDF出力がうまくいかな...
-
画像をDBに保存し、表示させ...
-
エクスプローラーでフォルダを...
-
json_encode日本語表示/PHP5.2.5
-
webroot以外の画像の表示
-
¥マークを出力したいがバック...
-
phpで数字の値を画像で表示した...
-
phpexcelにてsubmitボタンを押...
-
PHP header関数が使えない
おすすめ情報