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