当用户$_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
答案 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...
?>
或者,如果您想要完全阻止覆盖数据库中的日期......您必须事先进行检查...或设置数据库用户权限以防止在该特定字段上进行更新。
希望这就是你要找的......