PHP : if 语句不适用于表单


PHP : if statement does not work with form in

当我运行此代码时,它已经说已检查,即使我没有提交任何内容..任何帮助?? 为什么 if 语句不起作用

<?php 
if ( isset ( $_POST['roll'] ) && !empty($_POST['roll'])){
    echo 'checked' ;
}   
?>
<form action = 'test.php' method = 'POST'>
    <input type = 'submit' name  = 'roll' value = 'roll dice.'> 
</form>

if 条件按预期工作。

虽然,你只需要调用isset。

if (isset($_POST['roll'])) {
    echo "checked";
}

你或多或少做的是写

if (isset($_POST['roll']) && isset($_POST['roll'])) {
    echo "checked";
}

这是多余的。

每次刷新页面时都看到">选中"的原因是,从您第一次提交表单时,"roll"查询将继续存在于浏览器的缓存中,直到您决定转储它。我的意思是,这是一个HTML问题,而不是PHP问题。

你从不费心检查是否实际执行了 POST,所以你的代码在获取页面时运行 (GET(。你需要这样的东西:

<?php
if ($_SERVER[['REQUEST_METHOD'] === 'POST') {
   ... validate here...
}
?>
... show form here ...

尝试删除不必要的空格。确保你从测试.php中检查它。如果要在具有 int 表单的同一页面中使用它,请在操作中使用 #

if(isset($_POST['roll']) && !empty($_POST['roll']))
{
    echo 'checked' ;
}   

<form action = 'test.php' method = 'POST'>
    <input type = 'submit' name  = 'roll' value = 'roll dice.'> 
</form>

但我只使用 isset

if(isset($_POST['roll']))
{
    echo "Checked";
}

您也可以尝试将 isset 和空检查分开。这将确保仅在设置"roll"时执行代码的第二个条件。

像这样:

if(isset($_POST['roll']((
{
  if(!empty($_POST['roll'](
    回显"已检查" ;
}