每次在编辑用户后提交表单时,PHP表单提交都会更新字段pip_date

时间:2017-08-24 21:29:10

标签: php forms

当用户$_POST['on_pip']的值等于1时 它应该通过以下代码在db中添加当前时间:

// It will save the date when a user is rated PIP and removes the date when PIP rating gets removed

if ($_POST['on_pip'] == '1'){
    $_POST['pip_date'] = $this->date->now();
} else {
    $_POST['pip_date'] = null;
}

$this->Model_User->save(_request('user_id'), $_POST)

(我在这里使用radio button,如果它说是,则保存value = 1,如果没有value = 0

我的问题:

假设用户将on_pip值保存等于1.当我使用on_pip值1编辑该用户并更新其他一些详细信息并保存用户时,它会更新pip_date当前时间。

如何检查提交表单上是否更改了$ _POST [' on_pip']的值?

如果用户已经拥有on_pip值,则不应更新pip_date

1 个答案:

答案 0 :(得分:1)

您可以将$ _POST ['on_pip']保存到$ _SESSION var中,然后检查在同一用户会话期间是否已在先前的请求中设置了它。

例如,

<?php
    if(!isset($_SESSION['pip_date_set']) || $_SESSION['pip_date_set'] == false){
        if($_POST['on_pip'] === '1'){
            $_POST['pip_date'] = $this->date->now();
            $_SESSION['pip_date_set'] = true;
        }else{
            $_POST['pip_date'] = null;
        }
    }

    //code to insert into DB...
?>

或者您可以将pip_date存储在$ _SESSION var中并限制在当前会话中覆盖..

像这样,

<?php   
    if(isset($_POST['on_pip']) && $_POST['on_pip'] == '1'){
        if(!isset($_SESSION['pip_date'])){
            //pip_date has not yet been initialized during the current session, let's set it now:
            $_SESSION['pip_date'] = $this->date->now();
            $_POST['pip_date'] = $_SESSION['pip_date'];//If the pip_date is not supposed to be changed, should this exist in a $_POST var at all?
        }else{
            $_POST['pip_date'] = null;//Again, should you be using a $POST var for this?
        }
    }

    //code to insert into DB...
?>

或者,如果您想要完全阻止覆盖数据库中的日期......您必须事先进行检查...或设置数据库用户权限以防止在该特定字段上进行更新。

希望这就是你要找的......