为页面访问设置cookie

时间:2016-09-17 16:48:46

标签: php cookies setcookie

我想设置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']); 

3 个答案:

答案 0 :(得分: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'])); 

答案 1 :(得分:0)

使用它:

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

而不是这个:

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

答案 2 :(得分: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')){...