在下面的代码中,为什么每次都不将整数递增1?例如,我提交表单时说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'];
答案 0 :(得分:1)
代码看起来很好。但是,有可能在您不知情的情况下在后台请求页面。例如,损坏的图像路径等可能会登陆此文件,从而增加您的计数器。为了确保不是这种情况,添加一个新的会话数组var,它记录$_SERVER['REQUEST_URI']
或将其记录到文本文件或其他内容。
答案 1 :(得分:0)
如果您希望每次都增加{/ 1}},请将其移到if / else语句之外。
答案 2 :(得分:0)
尝试一下,我不知道它是否会起作用,因为我现在无法测试它,但我认为你的问题可能是你不能做$ _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>
答案 3 :(得分:0)
问题是你从$_POST
http数组中得到一个字符串,它不会自动转换为整数值。为了做你想做的事,可以修改上面的代码:
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
。