首页 > 解决方案 > 为什么我不能在显示后取消设置我的 POST 变量?

问题描述

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

<?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>

标签: php

解决方案


取消设置正在工作。但是在你的代码中

<?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"then 如果有人输入 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 //因为你的未设置正在工作

但我不明白你想做什么这样的事情。


推荐阅读