データベースアクションを実行するページを設計しようとしています。ユーザーにリダイレクトされたページが表示されます。問題は、データベースに接続するためにrequire()
関数を使用しているため、ヘッダーがすでに送信されていることです。メタタグは、出てきたページからすべてのプロセスが完了したように見えるようにしたいので、問題ありません。任意のヒント? require()
とheader()
を使用する方法はありますか、それとも削除する必要がありますか? header()
の代替手段はありますか?ヘッダー()またはメタのないPHPリダイレクト
答えて
Artefactoが指摘したように、データベースへの接続は出力を必要とすべきではありません。あなたが含むもの(例えば、database_connect.php)を出力しないように修正してください。 「ヘッダ送信済み」の問題のthis searchを参照してください。これは「隠れた」出力を見つけるのに役立ちます。
あなたは絶対に正しいです。私は必要なファイルにphpタグを置いた後に余分なスペースを見つけました。 – Yoshiyahu
一部のコンテンツが既に送信された後は、ヘッダーを送信できません。 header()
コールをrequire()
コールの前に移動します。
スクリプトがリダイレクトした後、何らかのデータベース動作を行わなければならないため、不可能です。 – Yoshiyahu
一部のコンテンツが送信される前にheader()
を送信できない場合は、ob_start();
を何か送信する前にob_start();
を配置して使用してください(output buffering)。この方法では、すべてのコンテンツがバッファに格納され、スクリプトの最後まで、または手動でバッファの内容を送信するまで送信されません。
もう1つの注意点として、単純にrequire
は、含まれているスクリプトがそれらを送信しない限り、別のファイルを生成してもヘッダー/コンテンツを生成しません。これの最も一般的な「隠された」原因は、<?php ?>
タグの前後に気付かれない空白です。
ああ、それはバッファがするものなのです。私は決して知りませんでした。 – think123
データがクライアントに送信された後にヘッダーを送信することはできません。
ただし、require
を使用すると、何かを出力することはできません。私があなたの権利を理解していれば、データベースファイルを組み込み、クエリを実行してから、ユーザーをリダイレクトすることができます。これは完全に有効です。
出力を送信する必要がある場合(リダイレクトを行う必要があるのはなぜですか?)、出力バッファリングを使用することもできます。出力バッファリングを使用すると、ブラウザにデータをエコーするときにデータを送信するのではなく、バッファに格納します。 ob_end_flushに電話するか、スクリプトの最後に到達すると、データが送信されます。 ob_end_flushの後、新しいヘッダーを送信することはできません。 ob_startで出力バッファリングを開始します。
出力を送信しません。 'require()'はヘッダーを自動的に送るようです。出力テキストはありません。 – Yoshiyahu
ob_start(); // start output buffering
echo "<html......"; // You can even output some content, it will still work.
.
.
.
.
.
header("Location: mypage.php");
ob_flush(); //flush the buffer
この場合、出力はすべてバッファリングされます。これは、ヘッダーが最初に処理された後、出力が再生されることを意味します。
header()
をrequire()
と出力バッファリングを使用すると使用できます。つまり、スクリプト全体がバッファリングされ、スクリプトが終了したときに最初に送信されます。
私はこの
ob_start("ob_gzhandler"); //begin buffering the output
require_once('/classes/mysql.php');
// Some code where I access the database.
header('/somepage.php');
exit;
ob_flush(); //output the data in the buffer
- 1. メタまたはJavaScriptリダイレクト
- 2. PHPリダイレクト - HTMLヘッダー
- 3. Javascriptのリダイレクト(ヘッダーまたはセッションID)
- 4. ヘッダーがphpで設定された後のページのリダイレクト
- 5. HTTPリダイレクトでヘッダーを伝播しない
- 6. PHPページのリダイレクトの問題 - ヘッダー情報を変更できない
- 7. は、メタのhttp-当量= REFRESHのCONTENT =時間なしで、数秒後にPHPでページをリダイレクトする方法
- 8. PHPヘッダー()がリダイレクトで機能しません
- 9. ヘッダー( '場所:')はリダイレクトされません
- 10. PHPヘッダー( "場所:")機能でリダイレクトしようとしています
- 11. リダイレクトwgetヘッダー出力
- 12. 高速リダイレクト、PHPまたはhtaccess?
- 13. PHPヘッダー関数引数の受け渡しをリダイレクト
- 14. ヘッダーを作成する方法phpフッターphpまたはsidebar.php
- 15. メタフォアまたはメタを使用して比率をメタ分析する
- 16. PHPヘッダー、コンテンツタイプpngが機能しない
- 17. PHPのリダイレクトが機能しない
- 18. iOS 4.3.x上のNSURLCacheがLast-ModifiedヘッダーまたはEtagヘッダーをチェックしない
- 19. http、ヘッダー、メタ、およびボディを含むJSON応答
- 20. リダイレクト:ヘッダーとスクリプト - どのように違いますか?
- 21. ヘッダー(場所:) AJAX経由でリダイレクトしない
- 22. PHPヘッダが変数をリダイレクトしない
- 23. php mysqlリダイレクトが動作しない
- 24. PHP cURLリクエストがリダイレクトされない
- 25. ページがPHPでヘッダーを使用して適切にリダイレクトされていないこと
- 26. コードリダイタはリダイレクトでHTTPSをリダイレクトしないでリダイレクトします
- 27. facebook og:メタが認識されない
- 28. 私はどのヘッダーを使用しますか? XMLHTTPRequestヘッダーまたはSOAPヘッダー
- 29. ヘッダーのリダイレクトとセッションとセキュリティの維持
- 30. ヘッダーの場所とIE9キャッシュを使用したリダイレクトの問題
をすることによってそれを行っているどのようにデータベースへの接続には、ヘッダが送信されますでしょうか? – Artefacto