【问题标题】:How to keep radio button value inside php variable without error如何在没有错误的情况下将单选按钮值保留在php变量中
【发布时间】:2014-01-16 04:21:04
【问题描述】:

让我更详细地解释一下我要做什么。

好的,我正在做一个巨大的表格来发送一封特定的电子邮件。我现在的问题是,当表单提交并返回 false 时,只有表单中的单选按钮显示错误。这是我所说的一个例子:

<?php

    if (isset($_POST['submit'])) {

        $radio = $_POST['number'];
        $name = $_POST['name'];

    }

?>

<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
    <input type="radio" name="number" value="allo">
    <input type="radio" name="number" value="yo">
    <input type="text" name="name">
    <input type="submit" name="submit">
</form>

如您所见,如果客户按下“提交”并且没有在单选框和输入字段中填写值,则 $name 不会显示错误,但 $radio 会显示错误。

我的错误:

注意:未定义索引:第 5 行 D:\xampp\htdocs\test\preg.php 中的数字

【问题讨论】:

  • 请发布错误。
  • 抱歉,注意:未定义索引:第 5 行 D:\xampp\htdocs\test\preg.php 中的数字
  • 你需要先检查是否设置好了.....isset()

标签: php html forms


【解决方案1】:

您得到的是服务器警告,而不是实际错误。
为了避免这种情况,您可以设置一些标志来忽略警告,但这不是一个好习惯。
我建议您检查表单是否已设置,如果没有则处理它们。

代码:

<?php
    if (isset($_POST['submit'])) {

        $radio = (isset($_POST['number']) ? $_POST['number'] : "");
        $name = (isset($_POST['name']) ? $_POST['name'] : "");
    }
?>

编辑:当然,不要忘记,更好的做法是处理恶意代码。

【讨论】:

  • 我可以处理恶意代码,谢谢!这正是我想要的:)
  • @user3038607,欢迎您,如果您喜欢它,请将其投票为“已接受的答案”。
  • 顺便问一下,Orel Eraki,我想知道单选按钮或选择标签上是否需要 htmlentities?
【解决方案2】:

您收到该错误是因为 $_POST['number'] 未传递到页面。 您应该至少设置一个单选按钮,如果您想确保即使用户修改页面也不会出错,您可以使用其他答案中所写的 isset 进行检查。

如果您想知道为什么没有从名称中得到任何错误,那是因为它包含空字符串“”。

查看这段代码,查看页面源代码,看看print_r格式化后写了什么

<?php

    if (isset($_POST['submit'])) {

        $radio = $_POST['number'];
        $name = $_POST['name'];

    }
    print_r($_POST)
?>

<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
    <input type="radio" name="number" value="allo" checked="true">
    <input type="radio" name="number" value="yo">
    <input type="text" name="name">
    <input type="submit" name="submit">
</form>

【讨论】:

    【解决方案3】:

    你可以写

    if (isset($_POST['name'])) $name = $_POST['name'];
    

    但更好的是

    isset($_POST['name']) ? $name = $_POST['name'] : $name = '';
    

    【讨论】:

      【解决方案4】:
      if (isset($_POST['number']))
      {
          $radio = $_POST['number'];
      }
      

      【讨论】:

      • 我想你的意思是nullisset 已经检查它是否不为空。
      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      相关资源
      最近更新 更多