2011-07-01 10 views
2

次のコードを使用して、Cookieがないコンテンツのブロックを出力しています。問題は、getcookie変数が、ページがリフレッシュされるか、ユーザーが次のページに移動するまで機能しないことです。ブラウザでリフレッシュせずにPHPでgetcookie変数を出力する

私は、ヘッダのリダイレクトを使用して幸せが、ここで、(誰かがコード自体へのよりよい解決策を持っていない限り)、このコード内でそれを置くことを確認していない:

if (is_page(817)) { 
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN); 
} 
if ($_COOKIE["phonecookie"] =="") { 
    echo "no cookie here"; 
} else { 
    echo "cookie stored!"; 
} 

また、上記のコードは、クッキーを設定訪問者がWordPress内の特定のページに入られた場合。

たとえば、クエリ文字列を使用してこれを行う別の方法がありますか?同じページにリダイレクトするために、ヘッダーを使用し

答えて

0

素晴らしい、おかげでこの

if ((is_page(817) && (!isset($_COOKIE["phonecookie"]) { 
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN); 
    //Your redirect code here 
    header("Location:yoururl); 
} elseif (isset($_COOKIE["phonecookie"])) { 
    echo "cookie stored!"; 
} else { 
    echo "no cookie here or page is not 817"; 
} 
+0

を試してみてください。 is_page(817)ではなくクエリ文字列を含むURLを含めるようにifステートメントを変更するにはどうすればよいですか? ありがとう – manc

0

example.com/?src=affiliate:

if (is_page(817) && empty($_GET['redirect'])) { 
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN); 
    header("Location: http://url-for-this-page.com/path/?query=thequery&redirect=1"); 
    exit(0); 
} 

redirect=1は、ユーザーが無効にクッキーを持っている場合は、無限ループを停止するには、URLに追加されました。

関連する問題