当我运行此代码时,它已经说已检查,即使我没有提交任何内容..任何帮助?? 为什么 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'](
回显"已检查" ;
}