如何保持php变量中的单选按钮值没有错误

时间:2014-01-15 20:06:00

标签: php html forms

让我详细解释一下我要做的事情。

好的,我正在做一个巨大的表格来发送特定的电子邮件。我现在的问题是,当表单提交并返回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>

如您所见,如果客户按下&#34;提交&#34;并且没有填写无线电和输入字段内的值,$ name将显示没有错误,但$ radio将显示错误。

我的错误:

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

4 个答案:

答案 0 :(得分:3)

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

代码:

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

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

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

答案 1 :(得分: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>

答案 2 :(得分:0)

if (isset($_POST['number']))
{
    $radio = $_POST['number'];
}

答案 3 :(得分:0)

你可以写

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

但更好的是

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