2016-09-17 159 views
2

我想設置2個Cookie。一個顯示用戶進入頁面的次數,另一個顯示上次訪問的日期和時間。 代碼工作正常,但我需要每天一次設置Cookie,而不是每次訪問該頁面。我需要的是設置if($_COOKIE['lastTime'] != date('d-M-Y'))聲明,但我只需要比較$_COOKIE['lastTime']的'd-M-Y'部分。另外,我不能設置$lastTime = date('d-M-Y')(沒有h-i-m-s),因爲我需要顯示日期和上次訪問的時間。 請幫忙。設置Cookie訪問頁面

$counter = 0; 
if(isset($_COOKIE['counter'])){ 
    $counter = $_COOKIE['counter']; 
} 
$counter++; 

$lastTime = ''; 
if(isset($_COOKIE['lastTime'])){ 
    $lastTime = $_COOKIE['lastTime']; 
} 
$lastTime = date('d-M-Y H-i-m-s'); 

if($_COOKIE['lastTime'] != date('d-M-Y')){ 
    setcookie('counter', $counter); 
    setcookie('lastTime', $lastTime); 
} 


print_r('This is your ' . $_COOKIE['counter'] . ' visit'); 
echo '<br>'; 
print_r('Last visit was: ' . $_COOKIE['lastTime']); 
+0

所以比較最後' 'd-M-Y H-I-M-s''時間字符串只用'' d-M-Y''不匹配出於某種原因? – mario

+0

我知道問題在比較中,但我不知道如何在if語句中設置$ _COOKIE ['lastTime']來僅顯示'd-M-Y'。 – Dre

+0

請回顯第一個回聲$ _COOKIE ['lastTime']。「#」。日期( 'd-M-Y');我們會看到這個值 –

回答

0

使用本:

$lastTime = date('d-M-Y'); 

,而不是這樣的:

$lastTime = date('d-M-Y H-i-m-s'); 
+0

我知道$ lastTime = date('d-M-Y')可以工作,但我需要顯示上次訪問的日期和時間。 – Dre

0

您的代碼:

$lastTime = ''; 
if(isset($_COOKIE['lastTime'])){ 
     $lastTime = $_COOKIE['lastTime']; 
} 
$lastTime = date('d-M-Y H-i-m-s'); <-- you're overwriting any retrieved value here 

檢查,如果你有一個價值首先讓你不覆蓋它,然後只提取日期部分:

$lastTime = ''; 
if(isset($_COOKIE['lastTime'])){ 
    $lastTime = $_COOKIE['lastTime']; 
} 
if(strlen($lastTime) == 0) 
    $lastTime = date('d-M-Y H-i-m-s'); 

$parts = explode(" ", $lastTime); 
$lastDay = $parts[0]; 

if($lastDay != date('d-M-Y')){... 
1

我留在範圍註釋行,所以你可以看到什麼可以優化,以獲得簡潔你的代碼。那些註釋行完全不需要。

print_r('Previous visit was: ' . isset($_COOKIE['lastTime'] ? date("Y-m-d", $_COOKIE['lastTime']) : 'not set yet')); 

$counter = 0; 
if(isset($_COOKIE['counter'])){ 
    $counter = $_COOKIE['counter']; 
} 
$counter++; 

$lastDay = ''; 
if(isset($_COOKIE['lastTime']) { 
    $lastDay = date("Y-m-d", $_COOKIE['lastTime']); 
} 
$currentDay = date("Y-m-d"); 

if(!$lastDay || $lastDay < $currentDay) { 
    setcookie('counter', $counter); 
    setcookie('lastTime', strtotime($currentDay)); 
} 

print_r('This is your ' . $_COOKIE['counter'] . ' visit'); 
echo '<br>'; 

// here you print a readable datetime format from your stored date 
print_r('Last stored visit date was: ' . date("Y-m-d", $_COOKIE['lastTime'])); 
+0

它在每次頁面刷新後仍會更新計數器。我需要每天更新一次櫃檯。 – Dre

+0

答覆已更新。 – pedrouan