为什么显示后无法取消设置POST变量?

时间:2019-07-04 18:45:18

标签: php

我正在用一个文件处理表格。在显示结果时,我试图取消设置,但是不起作用。

<?php
    if (isset($_POST['nvalue']) AND !empty($_POST['nvalue'])) {
        echo $_POST['nvalue'] . '<br>';
        unset($_POST['nvalue']);
    }
    else {
        echo "22222";
    }
?>

<form action="" method="POST">
    <span style="font-size: 1.7em;">Randomizer</span><br>
    <label for="exampleFormControlInput1">How much values</label>
    <div class="form-group">
        <input type="text" id="nvalue" name="nvalue" class="form-control" id="exampleFormControlInput1">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

1 个答案:

答案 0 :(得分:-1)

取消设置有效。但是在您的代码中

<?php
if (isset($_POST['nvalue']) AND !empty($_POST['nvalue'])) { // in here you are checking is the variable is set or not

    echo $_POST['nvalue'] . '<br>'; // Now here this will echo the value

    unset($_POST['nvalue']); // In here you will unset the value **Please note unset is working in here**
}
else{
    echo "22222";
}
?>

但是问题是您的函数几乎执行了,当有人将文本区域留空并提交表单时

(isset($_POST['nvalue']) AND !empty($_POST['nvalue']))  这将是false,并且将执行else密码。

使您的unset()工作正常

只要考虑一下,如果您使用method="GET",那么如果有人输入55作为值,您的url将会像这样

  

.../?nvalue=55

因此,您一次又一次刷新此url。但是这行

(isset($_POST['nvalue']) AND !empty($_POST['nvalue']))返回true

您可以执行以下操作:

<?php

if (isset($_POST['nvalue']) AND !empty($_POST['nvalue'])) {
    echo $_POST['nvalue'] . '<br>';
    unset($_POST['nvalue']);

}
if (!isset($_POST['nvalue']) AND empty($_POST['nvalue'])) {
  echo "22222";
}

?>

如果用户输入为 55 ,则输出为

  

55   22222 //因为您的设置正在工作

但是我不明白您正在试图做这样的事情。