私は推測していませんが、出力先にob_start()
を入れずにPHPでクッキーを設定する方法はありますか?ob_startなしで出力後にクッキーを設定する
私の問題は、他にもクッキーを設定する必要があるクラスを開発していることです。今私はそれを使用する人に "あなたが出力を作る前にクラスの新しいインスタンスを作る必要がある"と言うことはできません。だから私は何とかそれをプルすることはできますか?
私は推測していませんが、出力先にob_start()
を入れずにPHPでクッキーを設定する方法はありますか?ob_startなしで出力後にクッキーを設定する
私の問題は、他にもクッキーを設定する必要があるクラスを開発していることです。今私はそれを使用する人に "あなたが出力を作る前にクラスの新しいインスタンスを作る必要がある"と言うことはできません。だから私は何とかそれをプルすることはできますか?
専門外の回避策が適用されますが記載されている参照してください。具体的に:
<META HTTP-EQUIV="Set-Cookie"
CONTENT="cookievalue=xy;expires=Friday, 14-Dec-12 12:12:12 GMT; path=/">
またはjavascriptを使用してdocument.cookie
を設定します。
できません。クッキーはヘッダーの一部として送信されるので、すでに本文を送信している場合は、それは遅すぎます。出力バッファリングが解決策です。
おそらく、代わりにセッション変数を使用できます。
クッキーを設定できない場合にのみこれを行うでしょう。ありがとう、これは良い提案です:) –
これは私のworkroundであり、うまく動作しています。
// Force set cookie now
$_COOKIE['ref_url'] = $_SERVER['HTTP_REFERER'];
// Set cookie after refresh site
setcookie('ref_url', $_SERVER['HTTP_REFERER'], Affiliate::$cookieTime);
// Diplay $_COOKIE
var_dump($_COOKIE['ref_url']);
$ _SERVER ['HTTP_REFERER']が空でないことがあるので、まずそれをテストしてから使用してください。 $ url_referrer =空($ _ SERVER ['HTTP_REFERER'])? '':$ _ SERVER ['HTTP_REFERER']; – fedmich
出力前にクッキーを設定するのはなぜ恥ずかしいですか? – Josh
あなたのコードであれば、それを行うのは不自由ではありません。あなたのクラスを使用したいので、他の開発者に強制するのは難しいことです。 –
クラスがSet-CookieなどのHTTPヘッダーを送信することを文書化している場合、出力が送信される前に使用する必要があるということに間違いはありません。これはまさに 'setcookie'文書が言っていることです。 –