无法在php中获取单选按钮的值。

3

好的,这可能是一个初学者问题,但我已经搜索了很久都找不到如何做到这一点。我无法使用php获取我的单选按钮的值。

<!DOCTYPE html>
<html>
    <body>
        <form action="" method="POST">
            Do you buy your lunch?
            <br>
            <input type="radio" name="doyoubuy" value="Yes" checked>Yes
            <br>
            <input type="radio" name="doyoubuy" value="No">No
            <br><br>
            <input type="submit" value="submit">
        </form>
        <?php
            if (isset($_POST['submit'])) {
                if (isset($_POST['doyoubuy'])) {
                    echo "You have selected :".$_POST['doyoubuy'];
                }
            }
        ?>
    </body>
</html>

谢谢!!!
3个回答

5

您正在检查 if (isset($_POST['submit'])) {

但是您的提交按钮实际上没有命名...

所以只需给它命名:

<input type="submit" value="submit" name="submit">

然后您的单选框代码就可以正常工作了。


0
我建议您考虑使用这段HTML和PHP代码:
<html>
    <body>
        <form method="POST">
            Do you buy your lunch?
            <br>
            <input type="radio" name="doyoubuy" value="Yes" checked>Yes
            <br>
            <input type="radio" name="doyoubuy" value="No">No
            <br><br>
            <input type="submit" name="submit" value="submit">
        </form>

        <?php
        if (isset($_POST) && $_POST != NULL) {
          if ( $_POST['doyoubuy']  == 'Yes' || $_POST['doyoubuy'] == 'No') {
             $answer = $_POST['doyoubuy'];
             echo "You selected :". $answer;
          }
        }
        ?>

    </body>
</html>

需要测试的是表单是否已经提交。如果是这样,只要表单中每个字段都带有名称,那么每个字段都将关联某种值,无需测试提交按钮是否设置。此外,如果用户提交了一个表单但忽略了填写文本输入框等内容,那么该字段的值仍将被设置为一个空字符串。
不建议信任发布的表单值并认为它可以安全使用。在这种情况下,我会进行测试,以确保答案是我所期望的,以防万一有人可能欺骗表单并将答案更改为与我打算的不同的答案。
默认情况下,如果省略表单的ACTION属性,则其值是包含表单的页面的URL。

0

动作应该是当前页面。在您的情况下是""


2
尽管根据HTML规范来说这是技术上无效的......但所有现代浏览器都会在action为空时提交到当前URL。 - rjdown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接