【发布时间】:2025-12-22 01:30:11
【问题描述】:
我已经看过几十篇关于这个问题的帖子,它基本上归结为一个变量没有被声明或被赋予一个值。但是我 100% 确定它是相同的并已声明。
我有一个 HTML 格式的基本联系表单,我希望它在有人点击提交按钮时向我发送电子邮件。我也在调试代码以查看问题所在。它唯一能找到的问题是有一个Undefined Index 属于我的文本区域。
我知道textarea的名字必须和我在PHP中$_POST上的名字一样。请看一下这两段代码,并告诉我你是否明白为什么它不会从我的 textarea 中获取信息。名字是message-area。
HTML
<form action="mail.php" method="post" name=contact-me-form >
<label name="firstname secondname">Name: * </label><br>
<input class="half-box" type="text" name="firstname" required >
<input class="half-box" type="text" name="secondname" required ><br>
<p class="first-name">First Name</p>
<p class="second-name">Last Name</p><br>
<label name="email">Email Address: * </label><br>
<input class="full-box" type="email" name="email" spellcheck="false" required><br>
<label name="subject">Subject: </label><br>
<input class="full-box" type="text" name="subject"><br>
<label name="message">Message: * </label><br>
<textarea name="message-area" form="contact-me-form" type="text" placeholder="Please enter your message"></textarea>
<button name="submit" type="submit" value="Submit">Submit</button>
</form>
PHP
<?PHP
$to = "";
$from = "";
$first_name = '';
$last_name = '';
$subject = '';
$message = null;
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
if(isset($_POST['submit'])){
$to = 'email@test.com';
$from = $_POST['email'];
$first_name = $_POST['firstname'];
$last_name = $_POST['secondname'];
$subject = $_POST['subject'];
$message = $_POST["message-area"];
if($message == null){echo "no message detected";}
$headers = "From: " . $from;
$headers = "From:" . $to;
mail($to,$subject,$message,$headers);
}
?>
正如您所见,名称相同,但当我提交数据时,它会显示以下内容。
int(8) string(29) "Undefined index: message-area" string(58) "/hermes/bosnaweb25a/b2294/ 后跟更多信息,我的错误被显示:["message"]=> NULL } 未检测到消息。
老实说,我不知道为什么没有被采纳,有经验的人可以指出我的错误吗?
编辑 1
这与破折号/连字符无关,因为我已经编辑了我的代码,如下所示。 同样重要的是要注意,如果我将其更改为原始文本,它仍然不起作用,仍然表现得好像没有来自 textarea 的数据。
HTML
<form action="mail.php" method="post" id=contact-me-form >
<label name="firstname secondname">Name: * </label><br>
<input class="half-box" type="text" name="firstname" required >
<input class="half-box" type="text" name="secondname" required ><br>
<p class="first-name">First Name</p>
<p class="second-name">Last Name</p><br>
<label name="email">Email Address: * </label><br>
<input class="full-box" type="email" name="email" spellcheck="false" required><br>
<label name="subject">Subject: </label><br>
<input class="full-box" type="text" name="subject"><br>
<label name="message">Message: * </label><br>
<textarea name="messagearea" type="text" placeholder="Please enter your message"></textarea>
<button name="submit" type="submit" value="Submit">Submit</button>
</form>
PHP
<?PHP
$to = "";
$from = "";
$first_name = '';
$last_name = '';
$subject = '';
$message = null;
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
if(isset($_POST['submit'])){
$to = 'harry.brockley@hotmail.co.uk';
$from = $_POST['email'];
$first_name = $_POST['firstname'];
$last_name = $_POST['secondname'];
$subject = $_POST['subject'];
$message = $_POST["messagearea"];
if($message == null){echo "no message detected";}
$headers = "From: " . $from;
$headers = "From:" . $to;
mail($to,$subject,$message,$headers);
}
?>
编辑 2
使用硬编码值对其进行了测试,因此它必须是变量名。奇怪的是它只发生在 textarea 上。
【问题讨论】:
-
提示:如果某些项目正在提交而其他项目未提交,请仔细查看它们之间的区别,并消除该区别。
-
尝试将
message-area重命名为不带连字符的名称。 -
谢谢大家,看看。我已经从我的 HTML 和 PHP 中删除了连字符/破折号,但现在仍然出现同样的错误,上面写着“未定义的索引:messagearea” 遗憾的是问题仍然存在。
标签: php html forms undefined undefined-index