ob_start()
私はそうではないと思いますが、出力の先頭に配置することなく、PHP で Cookie を設定する方法はありますか?
私の問題は、とりわけクッキーを設定する必要があるクラスを開発していることです。今では、それを使用する人に「出力を行う前にクラスの新しいインスタンスを作成する必要がある」とは言えません。では、どうにかしてそれをやってのけることができますか?
それはいけません。Cookieはヘッダーの一部として送信されるため、本文を既に送信している場合は手遅れです。出力バッファリングが解決策です。
おそらく、代わりにセッション変数を使用できます。
PHP によって既に送信されたヘッダーを参照してください。
そこにリストされている専門外の回避策が適用されます。具体的には:
<META HTTP-EQUIV="Set-Cookie"
CONTENT="cookievalue=xy;expires=Friday, 14-Dec-12 12:12:12 GMT; path=/">
または、javascriptと set を使用しますdocument.cookie
。
これは私の回避策であり、うまく機能しています。
// 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']);