为页面访问设置cookie


Set up cookie for page visit

我想设置2个cookie。一个显示用户进入页面的次数,另一个显示最后访问的日期和时间。代码工作得很好,但是我需要每天设置一次cookie,而不是每次访问页面时都设置。我需要的是设置if($_COOKIE['lastTime'] != date('d-M-Y'))语句,但我只需要比较$_COOKIE['lastTime']的"d-M-Y"部分。另外,我不能设置$lastTime = date('d-M-Y')(没有h-i-m-s),因为我需要显示最后一次访问的日期和时间。请帮助。

$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']); 

我在作用域中留下了注释行,因此您可以看到可以优化哪些内容以使代码简洁。这些注释行根本不需要。

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'])); 

use this:

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

而不是this:

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

代码:

$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')){...