让我详细解释一下我要做的事情。
好的,我正在做一个巨大的表格来发送特定的电子邮件。我现在的问题是,当表单提交并返回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中的数字
答案 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 = '';