0

在我下面的代码中,为什么不是每次都将整数加一?例如,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'];
4

4 回答 4

1

代码看起来不错。但是,有可能在您不知情的情况下在后台请求该页面。例如,损坏的图像路径等可能会落在此文件上,从而增加您的计数器。为确保不是这种情况,请添加一个新的会话数组 var 来记录$_SERVER['REQUEST_URI']或将其记录到文本文件或其他内容中。

于 2012-07-04T15:27:42.950 回答
0

$_SESSION['sessionCount']++;如果您希望每次都递增,只需移出if/else 语句即可。

于 2012-07-04T15:20:38.103 回答
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>
于 2012-07-04T15:22:18.710 回答
0

问题是您从$_POSThttp 数组中获取了一个字符串,该字符串不会自动转换为整数值。为了做你想做的事,上面的代码可以这样修改:

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

于 2012-07-04T15:49:17.700 回答