如何取消设置动态表单提交的某些值?

时间:2017-02-14 01:46:26

标签: php post filtering unset

我有一个动态表单,它使用变量并且效果很好,但是我遇到了一个问题,一旦某些POST值被表单提交处理后必须删除它们。

由于变量的性质和这个动态表单的编程动态构建INSERT和UPDATE查询,我需要在$_POST处理后将它们删除一个变量。

部分表单处理部分位于foreach循环中,包含:

$Fields = array();
$Values = array();
foreach ($_POST as $key=>$value ) :
    if (Contains("month", $key)) unset($_POST);
    if (Contains("day", $key)) unset($_POST);
    if (Contains("year", $key)) unset($_POST);
    if (Contains("hour", $key)) unset($_POST);
    if (Contains("minute", $key)) unset($_POST);
    if (Contains("second", $key)) unset($_POST);
    $Fields[] = "`$key`";
    $Values[] = isNull($value, $DBName);
endforeach;

$sqlInsert = "INSERT INTO $TableName (".implode(",",$Fields).") VALUES (".implode(",",$Values).")";

Contains()函数有:

function Contains($searchWord, $fromString) {
    if (is_array($fromString)) :
        reset($fromString);
        $key = key($fromString);
        return strpos($key, $searchWord) !== FALSE;
    else:
        return strpos($fromString, $searchWord) !== FALSE;
    endif;
}

我尝试了我能想到的一切,包括:

foreach ($_POST as $key=>$value ) :
    if (Contains("month", $key)) unset($_POST[$key]);
    if (Contains("day", $key)) unset($_POST[$key]);
    if (Contains("year", $key)) unset($_POST[$key]);
    if (Contains("hour", $key)) unset($_POST[$key]);
    if (Contains("minute", $key)) unset($_POST[$key]);
    if (Contains("second", $key)) unset($_POST[$key]);
endforeach;

因为$key应包含我尝试unset()的POST字段的名称,但它们不会取消设置。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在我这样做的时候,我刚刚重写并简化了原来的问题,这给了我一个似乎已经完成了这个诀窍的想法。我没有使用未设置,而是继续使用:

if (Contains("month", $key)) continue;
if (Contains("day", $key)) continue;
if (Contains("year", $key)) continue;
if (Contains("hour", $key)) continue;
if (Contains("minute", $key)) continue;
if (Contains("second", $key)) continue;