0

私のクラスベースのサイトの1つでは、すべてがindex.phpページを介して制御され、すべてのページはそのclassインデックスページを介して呼び出される独自のページです。

これらのクラスの1つには、サイトのすべてのページに対して呼び出されるログインヘッダーとログアウトヘッダーの両方があり、どちらもサイトAdの上部に表示されるを呼び出します。

問題は、ページにリダイレクトがある場合は常に、そのページのクラスが呼び出されるまで発生しないことです。これは、ヘッダーが既に呼び出されたに発生します。つまり、ページがリダイレクトで終了したため、表示されません。

これにより、広告のクリック率(CTR)が低下するため、広告のパフォーマンスに悪影響を及ぼします。

ページのクラスが読み込まれるまでページがリダイレクトされたことを知る方法がない場合、ページがリダイレクトされたときに広告呼び出しが行われないようにするにはどうすればよいですか?

私が考えることができる唯一の「すぐに使える」解決策は、出力バッファを使用して最初にそのページのクラスをロードし、次にバッファの先頭に到達した場合は、バッファの先頭にヘッダーを追加することです。リダイレクトはありませんが、それが機能するかどうか、またはどのように実行するかはわかりません。

何か案は?

編集:

明確にするために、リダイレクトはすでにHTTPヘッダーを介して行われており、すべての出力は現在バッファリングされています。ただし、各ページにはリダイレクトの独自の理由がある可能性があるため、各ページによって制御されます。たとえば、1つのページがメッセージの送信を処理し、メッセージが送信されると、メッセージをデータベースに保存した後、ユーザーを受信トレイにリダイレクトします。別のページでは、ログアウトしたユーザーは許可されていないため、特定のページはユーザーがログインしているかどうかを確認し、ログインしていない場合はユーザーをログインページにリダイレクトします。

ただし、完全な出力バッファリングが有効になっていて、個々のクラスページ内のheader()関数を介してリダイレクトが行われている場合でも、バッファリングはヘッダーリダイレクトを実行する前にAd呼び出しを実行するようです。

4

1 に答える 1

0

リダイレクトは、HTMLメタタグやJavascriptトリックなどを使用せずに、HTTPヘッダーで行う必要があります。HTTPヘッダーは、何よりも先に出力する必要があります。そのため、そして単にそれが理にかなっているという理由で、アプリケーションは、HTMLを出力しようとする前に、ユーザーをリダイレクトするかどうかを決定する必要があります。したがって、まったく問題はないはずです。

現在のアプリケーションロジックが、ユーザーのリダイレクトを決定するにHTML(広告をトリガーする)を出力または準備している場合は、単にアプリケーション構造が正しくありません。それを変更。これは次のように機能するはずです。

...

if ($userNeedsToBeRedirected) {
    header('Location: http://example.com/other/url');
    exit;
}

// output HTML and ads here
// never triggered on a redirect
于 2012-11-26T13:45:06.867 に答える