提问人:CardDeath 提问时间:7/20/2016 最后编辑:CardDeath 更新时间:7/20/2016 访问量:2505
PHP 中使用 textarea [duplicate] 的未定义索引
Undefined Index in PHP using textarea [duplicate]
问:
我已经看过几十篇关于这个问题的帖子,它基本上归结为一个变量没有被声明或被赋予一个值。但是,我 100% 确定它是相同的并声明的。
我有一个基本的HTML联系表格,我希望当有人点击提交按钮时,它能向我发送和电子邮件。我也在调试代码,看看问题出在哪里。它能找到的唯一问题是有一个属于我的文本区域。Undefined Index
我知道 textarea 的名称必须与 PHP 中 my 的名称相同。请看一下这两部分代码,并告诉我您是否能看到为什么它不会从我的文本区域获取信息。名称是 。$_POST
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 protected]';
$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
这与破折号/连字符无关,因为我编辑了我的代码,如下所示。同样重要的是要注意,如果我将其更改为原始文本,它仍然不起作用,仍然表现得好像文本区域没有数据一样。
[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 = '[email protected]';
$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
使用硬编码值对其进行了测试,因此它必须是变量名称。奇怪的是,它只发生在文本区域。
答:
您似乎在form=""
<textarea></textarea>
如果将其更改为以下内容,它应该可以工作。
<textarea name="message-area" type="text" placeholder="Please enter your message"></textarea>
关于对 $message 不起作用的检查,您应该使用它来检查它,因为这将捕获和 。($message == null)
empty()
NULL
""
if (empty($message)) {
echo "no message detected";
}
评论
id
时具有 。– 所以,缺乏解释,但这就是问题所在。form
name=contact-me-form
这是您的解决方案,只需将下面一行替换为您的文本区号即可。
<textarea name="message-area" placeholder="Please enter your message"></textarea>
这里不需要文本。form="contact-me-form"
评论
感谢您的帮助,我发现了问题所在,它似乎有效。我实际上还没有收到电子邮件(可能是可怕的越南互联网)。
问题是我定义的变量并没有像我想象的那样设置为空。我必须检查并分配给我的所有变量,它似乎绕过了错误。$variable = ""
= null
评论
message-area