Как увеличить счетчик на каждую загрузку страницы (в PHP)?

Я хочу, чтобы какое-то действие произошло, когда пользователь посетил X-страницы сайта

Должен ли я хранить счетчик извне (в txt-файле или db)?

Я не могу придумать способ установить счетчик на 0, а затем увеличить его на каждую загрузку страницы. Счетчик всегда будет сброшен на 0, или я пропущу что-то очевидное?

Было бы довольно просто использовать данные $_SESSION для хранения того, сколько страниц просматривал человек.

 $_SESSION['pageviews'] = ($_SESSION['pageviews']) ? $_SESSION['pageviews'] + 1 : 1; 

Самый простой способ – использовать хранилище сеансов PHP.

 session_start(); @$_SESSION['pagecount']++; 

PHP автоматически отправляет пользователя cookie сеанса и прозрачно сохраняет содержимое $ _SESSION в плоском файле, связанном с этим файлом cookie. Вам действительно не нужно откатывать свое решение для этой проблемы.

Вы можете начать сеанс, когда пользователь сначала доберется до вашей страницы, а затем увеличит значение каждый раз, когда пользователь перезагружает / посещает подстраницы. Другой способ сделать это – иметь скрытое поле на каждой странице и извлекать его значение, увеличивать его и публиковать на новой странице.

 <input type="hidden" value="2" id="blabla" /> 

Короткий ответ – да, вам нужно сохранить это извне, потому что php (по умолчанию) имеет политику сохранения нулевой памяти. Это означает, что, как только ваш скрипт php запускается, в памяти ничего не осталось.

Для сайта с низким трафиком вы можете подумать о простом файле txt, где вы читаете, увеличиваете и записываете. Для более высокого сайта трафика может работать очень простая таблица mysql.

У вас уже есть способ определить, кто пользователь (например, имя пользователя и пароль), даже если они покидают сайт и возвращаются на другой день? Или вам просто интересно отслеживать количество страниц, которые видит посетитель, и делать что-то особенное на просматриваемой x-странице.

Если это второй, у вас уже есть переменная сеанса, в которой вы можете сохранить счетчик.

 $_SESSION['views'] = $_SESSION['views'] + 1 if($_SESSION['views'] == x) ... 

вы должны использовать оператор if, чтобы проверить, уже ли он установлен;

 if( isset($count) ) { $count = $count + 1; } else { $count = 1; } 

Вы также можете использовать метод get, чтобы поместить счет в URL-адрес, чтобы вам не приходилось записывать счет в файл или базу данных.