Почему этот код не увеличивает счетчик правильно?

В моем коде ниже, почему он не увеличивает количество целых чисел на каждый каждый раз? Например, скажем, у меня есть 1 OF 5 когда я отправляю форму. После представления он должен быть 2 OF 5 , но вместо этого он отображает 5 OF 5 . Это происходит, даже если я изменяю максимум от 5 до 3; он начинается с 1 OF 3 и сразу переходит к 3 OF 3 . Это код для отображения .. OF ..

 <h1><?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1> 

Ниже приведен код, который должен каждый раз увеличивать значение на единицу:

 if(isset($_POST['sessionNum'])){ //Declare my counter for the first time $_SESSION['initial_count'] = $_POST['sessionNum']; $_SESSION['sessionNum'] = $_POST['sessionNum']; $_SESSION['sessionCount'] = 1; } else if ($_SESSION['sessionCount'] < $_SESSION['sessionNum']) { $_SESSION['sessionCount']++; } $sessionMinus = $_SESSION['sessionCount']; 

Solutions Collecting From Web of "Почему этот код не увеличивает счетчик правильно?"

Код выглядит отлично. Однако возможно, что страница запрашивается в фоновом режиме без вашего ведома. Например, сломанный путь изображения и т. Д. Можно поместить на этот файл, тем самым увеличивая счетчик. Чтобы убедиться, что это не так, добавьте новый массив сеансов var, который записывает $_SERVER['REQUEST_URI'] или записывает его в текстовый файл или что-то в этом роде.

Просто переместите $_SESSION['sessionCount']++; вне операторов if / else, если вы хотите, чтобы он увеличивался каждый раз.

Попробуйте, я не знаю, будет ли это работать, поскольку я не могу проверить его на данный момент, но я думаю, что ваша проблема может заключаться в том, что вы не можете выполнить $ _SESSION ++. Также у вас отсутствует session_start ();

 <?php session_start(); if(isset($_SESSION['sessionNum'])) { if ($_SESSION['sessionCount'] < $_SESSION['sessionNum']) { $_SESSION['sessionCount'] = $_SESSION['sessionCount'] + 1; } } else { $_SESSION['initial_count'] = $_POST['sessionNum']; $_SESSION['sessionNum'] = $_POST['sessionNum']; $_SESSION['sessionCount'] = 1; }?> <h1><?php echo $sessionMinus ?> OF <?php echo $_SESSION['initial_count'] ?></h1> 

Проблема в том, что вы получаете строку из массива http: $_POST , которая автоматически не преобразуется в целочисленное значение. Чтобы сделать то, что вы хотите, приведенный выше код может быть изменен таким образом:

 if(isset($_POST['sessionNum'])){ //Declare my counter for the first time $_SESSION['initial_count'] = intval($_POST['sessionNum']); $_SESSION['sessionNum'] = intval($_POST['sessionNum']); $_SESSION['sessionCount'] = 1; } else if ($_SESSION['sessionCount'] < $_SESSION['sessionNum']) { $_SESSION['sessionCount']++; } $sessionMinus = $_SESSION['sessionCount']; 

Код также обеспечивает рудиментарное подтверждение ввода, так как intval() возвращает 0 если он не может разобрать номер.