В файле index.php
значение переменной $visitCounter застряло на одной цифре, т.е. не работает счетчик посещений (в $visitCounter не приходит новое значение). При этом скрипт "cookie.inc.php" работает как надо. В чем может быть причина?
Спасибо.
index.php<?
include 'inc/headers.inc.php';
include 'inc/cookie.inc.php'
?>
<!DOCTYPE html>
<html>
<head>
<title><?= $title?></title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="inc/style.css" />
</head>
<body>
<div id="header">
<!-- Верхняя часть страницы -->
<img src="img/logo-php.png" width="187" height="29" alt="Наш логотип" class="logo" />
<span class="slogan">обо всём сразу</span>
<!-- Верхняя часть страницы -->
</div>
<div id="content">
<!-- Заголовок -->
<h1><?= $header?></h1>
<blockquote>
<?php //Куки. Приветствие пользователя и время последнего посещения (работа с куки в файле inc/cookie.inc.php):
if ($visitCounter == 1) { // если пользователь зашел первый раз
echo "Спасибо, что зашли на огонек<br>";
}else { // если пользователь зашел не первый раз
echo "<h1>Вы зашли к нам {$visitCounter}-й раз</h1><br> Последнее посещение: {$lastVisit}";
}
?>
</blockquote>
<!-- / Заголовок -->
<!-- Область основного контента -->
<?php
include 'inc/routing.inc.php';
?>
<!-- Область основного контента -->
</div>
<div id="nav">
<!-- Навигация -->
<h2>Навигация по сайту</h2>
<ul>
<li><a href='index.php'>Домой</a></li>
<li><a href='index.php?id=contact'>Контакты</a></li>
<li><a href='index.php?id=about'>О нас</a></li>
<li><a href='index.php?id=info'>Информация</a></li>
<li><a href='test/index.php'>Он-лайн тест</a></li>
<li><a href='index.php?id=gbook'>Гостевая книга</a></li>
<li><a href='eshop/catalog.php'>Магазин</a></li>
<li><a href="index.php?id=log">Журнал посещений</a></li>
</ul>
<!-- Навигация -->
</div>
<div id="footer">
<!-- Нижняя часть страницы -->
© Супер-мега сайт, 2000 – <?= date('Y')?>
<!-- Нижняя часть страницы -->
</div>
</body>
</html>
cookie.inc.php<?
$visitCounter = 0; // переменная для подсчета кол-ва посещений (счетчик посещений);
if (isset($_COOKIE['visitCounter'])) { // проверить, пришли ли куки (if true - присвоить их значение переменной $visitCounter)
$visitCounter = $_COOKIE['visitCounter'];
}
$visitCounter++; // увеличить значение переменной $visitCounterна единицу
// т.е. когда человек приходит к нам первый раз, мы мимо if-a промахиваемся (при первом обновлении страници куки отправляются, а при втором они приняты и срабатывает if) и значение переменной $visitCounter будет 1
// эту единицу пошлем в куку - setcookie("visitCounter", "$visitCounter");
// когда юзер прийдет второй раз, мы попадаем в if, засчитываем оттуда единицу (значение $visitCounter), дальше единица ($visitCounter++) - значит пользователь пришел 2-й раз
/*==================================================*/
$lastVisit = ""; // строковая переменная для хранения значения последнего посещения страницы (значение по умолчанию - пустая строка)
// переменную по умолчанию объявлять не обязательно
if (isset($_COOKIE['lastVisit'])) { // проверить, пришли ли куки (if true - присвоить их значение переменной $lastVisit)
$lastVisit = date("d-m-Y H:i:s", $_COOKIE['lastVisit']); // date() - распаковать временную метку ( день - месяц - год часы - минуты - секунды )
}
// если человек пришел в первый раз, то в visitCounter у нас "1", а в lastVisit - ничего
/*================================================*/
// условие (ограничение), чтобы куки устанавливались (отправлялись) только один раз в день (если последняя дата посещения сайта не сегодня):
// if(date('d-m-Y', $_COOKIE['lastVisit']) != date('d-m-Y')){
setcookie("visitCounter", "$visitCounter", 0x7FFFFFFF); // отправить (установить) куки по имени "visitCounter" со значением переменной $visitCounter
// setcookie("visitCounter", "$visitCounter", ); - создать долговременную куку (третий параметр - это время жизни куки (несколько десятков лет); шестнадцатиричный формат)
setcookie('lastVisit', time(), 0x7FFFFFFF); // Установить куки (отправить куки) по имени lastVisit со значением равным текущей временной метке(timestamp)
// как удобней всего хранить дату? - в виде временной метки - time()
// а поскольку дату храним в виде временной метки - эту временную метку нужно распаковать в условии выше: "if (isset($_COOKIE['lastVisit']))"
$visitCounter++; // чтобы номер посещения сайта выводился при первой загрузке страницы (а не после перезагрузки (куки сначала отправляются и сохраняются в браузере, а обрабатываютя уже после перезагрузки страницы) )
// }
// значения переменных "$visitCounter" и "$lastVisit" выводятся в файле index.php (для этого нужно подключить этот файл в "index.php")
// (del) test
echo $visitCounter;
echo $lastVisit;