2013-03-29 66 views
1

我已經編寫了一個PHP腳本,它從網站上獲取有關訪問者IP和瀏覽器的信息,並將其存儲在我的數據庫的表中。此腳本包含在標題中,並且每次加載每個頁面時都會運行該腳本,Google Analytics分析類型。 survey.php未能在PHP中設置Cookie

我希望這段代碼只爲網站的每個新訪問者運行,這樣我只記錄每個新訪問者。

我想這是通過設置一個cookie來完成的,所以我寫了這個其他代碼來設置一個cookie,然後僅在沒有cookie時才包括survey.php。 我用過函數isset運行if語句,如果它不存在但它不設置cookie並在每次加載時運行腳本。

根據在the manual中所說的內容,我看不到我要出錯的地方。

<?php 
if(!isset($_COOKIE['Name'])){ 
    setcookie("Name"); 
    include ('survey.php'); 
} 
?> 

編輯:我已經添加了一個值,與多個用戶進行了測試,並且腳本仍然運行每個負載。不知道爲什麼。

+0

您是否已經嘗試使用*值設置Cookie *? – Gumbo

+0

不,這是頁面中唯一的時間。除非你的意思是爲cookie添加一個值*然後否。我應該添加一個值嗎? –

+0

setcookie(「Name」,somevalue); –

回答

1

分辨

我被包括代碼作爲第一代碼段而不是在第一行。

的代碼設置cookie擁有一切之前開始,1號線。

張貼這讓其他人可以受益。

2

給你的cookie的值:

$value = 'something from somewhere'; 

if(!isset($_COOKIE['Name'])){ 
    setcookie("Name", $value); 
    include ('survey.php'); 
} 

鑑於這是識別新用戶,使用「0」或「1」就足夠了。

如果你想在cookie來在未來的某個時刻失效:

setcookie("Name", $value, time()+604800); /* expires in a week */ 

編輯:

我在一個簡單的頁面,下面的代碼嘗試這樣做:

<?php 
    if(!isset($_COOKIE['Test'])){ 

    setcookie("Test", '1'); 
    echo "Cookie set"; 
    //include ('survey.php'); 
    } 
?> 

我得到「Cookie集」一次,然後在隨後的刷新中不再看到它。我還可以看到該cookie在控制檯:

Test | 1 | www.domain.com |/| Session | 5 

唯一潛在的問題(如你正在使用不同的用戶)是這個cookie設置爲這裏當前會話,所以設置它的到期遙遠的未來將有利於持久,並會防止你的用戶很快看到您的調查隨時隨地:

<?php 
    if(!isset($_COOKIE['Test'])){ 

    //Expires on 31 december 2015 
    setcookie("Name","1",mktime (0, 0, 0, 12, 31, 2015)); 
    include ('survey.php'); 
    } 
?> 
+0

我認爲這是答案因爲它不記錄我刷新了我只需要檢查它對每個人都一樣 –

+0

試用這種方式與幾個不同的用戶和它仍然記錄每次。無法解決?! –

+0

@AdamBrown編輯我的答案,這可能有所幫助。 – nickhar

1

1)儘量像這樣 $值=「測試」的cookie設定值; setcookie(「TestCookie」,$ value);

2)檢查是否在瀏覽器

+0

嗨亞當Borwn,我試過你的代碼,它工作正常。請確認您的瀏覽器設置 – Krishnarag

1

啓用要設置一個cookie,或者更確切地說,餅乾獲得該cookie發送到從PHP用戶,你需要給它一個值。瀏覽器(至少是大多數現代瀏覽器)會將一個空的cookie標頭作爲命令來清除他們使用該名稱的任何cookie。

因此,很明顯,它不會被髮送進一步的請求,因爲瀏覽器,而不是將其設置爲null,丟棄它。

給它一個隨機的,短期的價值和你所有的問題就會迎刃而解:

setcookie("Name",rand(1,10)); 

或相似。