2012-06-22 92 views
1

我正在向網站添加一個「歡迎加載程序」。如何檢測首次訪問網站的Cookie和沒有Cookie

我可以檢測,如果訪問的是新的或不與餅乾:

function show_loader() 
{ 
setcookie("loader_shown", "1", time() + 80,"/"); 

echo "<div class='loader'>hello</div>";  

} 

if(! $_COOKIE['loader_shown']) 
{ 
die(show_loader()); 
} 

// the rest of the code to show the site....... 

都好了啓用Cookie的瀏覽器....但我會怎麼處理這種情況的非cookie的功能的瀏覽器?考慮設置另一個cookie,然後看看它是否設置之前運行這個位....

答案明信片!

+0

你不能在一個單頁訪問設置/檢查的cookies。您必須等待用戶返回擊中#2以查看他們是否將cookie發回給您。大多數網站通過設置cookie來實現這一點,然後強制重新加載頁面,以觸發#2。 –

+0

是的,認爲會是這種情況,你認爲「刷新」的方法是走的路嗎?目前,如果瀏覽器禁用了Cookie,它將始終顯示加載程序,從而隱藏整個網站。 – Nick

回答

1

您可以將用戶的IP和用戶代理存儲在服務器上,並且在最近給定的IP/UA組合看到時不顯示該消息。

如果你只想使用cookie,你不得不做這樣的(僞-ISH):

# page 1 
if(isset($_COOKIE['welcome_shown'])) { 
    redirect('home page') 
    exit 
} 
setcookie('has_cookies', true) 
redirect(page 2) 

# page 2 
if(isset($_COOKIE['has_cookies']) && !isset($_COOKIE['welcome_Shown'])) { 
    show_welcome_message() 
    setcookie('welcome_shown', true) 
    exit 
} 
redirect('home page') 
+0

事實上,對於「歡迎」式網頁,假陽性和假陰性都可能相當無害 – ThiefMaster

+1

是的, ip/user代理是解決非cookie情況的合理方法,嗯。這一定是以前多次遇到的問題,我驚訝地發現沒有更多的答案! – Nick

+0

ip +用戶代理似乎對我很好,但是有一些變量可以添加到此檢查中以更好地工作嗎? – Pons

相關問題