В моем коде ниже, почему он не увеличивает количество целых чисел на каждый каждый раз? Например, скажем, у меня есть 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'];
Код выглядит отлично. Однако возможно, что страница запрашивается в фоновом режиме без вашего ведома. Например, сломанный путь изображения и т. Д. Можно поместить на этот файл, тем самым увеличивая счетчик. Чтобы убедиться, что это не так, добавьте новый массив сеансов 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
если он не может разобрать номер.