【问题标题】:Incrementing the value of the post by every repeated form submission通过每次重复提交表单来增加帖子的价值
【发布时间】:2016-09-09 10:19:39
【问题描述】:

我有一个表单 sender,它正在将值 6 发布到另一个表单 receiver。我想要实现的是将sender 中的发布值存储到receiver 中的变量 中,然后每次sender 发布时递增变量 .然后打印更新后的变量

这就是我尝试做的事情

$val= $_POST['val'];
$limit = 6 + $val;
echo $limit;

我得到的结果是 12。但我想要的是

  1. 第一次发布结果后 = 12

  2. 第二次发布结果后 = 18

一直在...

NB:$_POST['val'] = 6;

【问题讨论】:

  • 您需要存储$limit (sessnion, cookie, DB) 之前的值,然后与发送者进行识别,然后进行数学运算:)

标签: php session post


【解决方案1】:
session_start();

$limit = 6;

if(!isset($_SESSION['lastLimit'])) {
    $_SESSION['lastLimit'] = 0;
}     
if(!empty($_POST)) {    
    $_SESSION['lastLimit'] = $_SESSION['lastLimit'] + $limit;
    $postedValue = $_POST['val'] + $_SESSION['lastLimit'];
    echo $postedValue;
}

【讨论】:

    【解决方案2】:

    因为网络是无状态的,即脚本不记得上次执行页面/表单时发生的任何事情,所以 receiver 脚本不记得上次运行时发生的任何事情。

    但不要惊慌,有办法的。它称为会话,您可以将数据存储在会话中,然后在该用户下次连接到您的站点时可用。在 PHP 中,您可以像这样使用它。会话链接到此特定用户的特定连接。

    receiver.php

    <?php
    // must be run at top of script, before any output is sent to the new form
    session_start();   
    
    // did the form get posted and is the variable present
    // or replace POST with GET if you are using an anchor to run the script
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['val']) {
    
        if ( isset($_SESSION['limit'] ){
            // increment the limit
            $_SESSION['limit'] += (int)$_POST['val'];
        } else {
            // initialize the limit
            $_SESSION['limit'] = (int)$_POST['val'];
        }
    
        echo 'Current value of limit is = ' $_SESSION['limit'];
    
    } else {
        // something is not right
        // direct this user to some basic page like the homepage or a login
        header('Location: index.php');
    }            
    

    【讨论】:

      【解决方案3】:

      您需要一个中间层来存储值。 可用选项:

      1) 全局静态值

      2) 会话

      3) 文件

      4) 数据库

      我会推荐全局值或会话,因为您要存储的数据不是那么大,并且可以轻松满足要求。

      我不会编写将其存储在会话中的语法,因为许多人已经提到过它。我只是想澄清问题场景和可能的解决方案。

      【讨论】:

        【解决方案4】:

        您可以将 $limti 存储到全局变量中。

        global $val;
        $val += $_POST['val'];
        $limit = 6 + $val;
        echo $limit;
        

        【讨论】:

          猜你喜欢
          • 2017-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-07
          相关资源
          最近更新 更多