2016-09-17 3 views
2

Я хочу настроить 2 куки. Один, который показывает, сколько раз пользователь вводил страницу, а другой показывает дату и время последнего посещения. Код работает нормально, но мне нужно, чтобы мои файлы cookie устанавливались один раз в день, а не каждый раз, когда я посещаю страницу. Мне нужно установить оператор if($_COOKIE['lastTime'] != date('d-M-Y')), но мне нужно сравнить только часть 'd-M-Y' от $_COOKIE['lastTime']. Кроме того, я не могу установить $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-я-т-s'' DateTime строки только с'' d-M-Y'' не соответствует по каким-то причинам? – mario

+0

Я знаю, что проблема заключается в сравнении, но я не знаю, как установить $ _COOKIE ['lastTime'] внутри оператора if, чтобы показать только «d-M-Y». – Dre

+0

эхом отдайте первое эхо $ _COOKIE ['lastTime']. "#". Дата ('d-М-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

Смежные вопросы