我有一个textarea的PHP帖子问题。我搜索了这个网站,建议的补救措施包括提取textarea的ID,并确保你使用的是htmlspecialchars。我正在做这两件事,我仍然无法弄清楚为什么它不会发布我的textarea的内容。
HTML
<form method="post" action="email.php" name="contactform" id="contactform" class="form form-stacked c-form">
<input name="name" type="text" id="name" placeholder="Name" />
<input name="email" type="text" id="email" placeholder="E-mail" />
<textarea name="theTextArea" placeholder="Message"></textarea>
<input type="submit" class="submit btn outline" id="submit" value="Send message" />
</form>
PHP
$realName = $name = $theMessage = $subject = $WHATmessage = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$realName = test_input($_POST["name"]);
$name = test_input($_POST["email"]);
$theMessage = test_input($_POST["theTextArea"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$subject = 'SUPERGROUP Inquiry - ' . $realName . ' - [' .date("F j, Y, g:i a").']';
$WHATmessage = $realName . ' is looking forward to hearing from us!'.PHP_EOL.'Their email is: '. $name .'!'.PHP_EOL.'They said: "'.$theMessage.'"';
mail('hello@sprgrp.com', $subject, $WHATmessage );
答案 0 :(得分:1)
这里有几件事......
“name”是保留字。不要使用名字作为你的名字。
<input name="name"
这可能是大多数发布问题的核心问题。
相反,请尝试
<input name="fullname"
另外,你想在POST上添加“addslashes”,而不是“stripslashes”。在db查询之后删除,以将“原始”源dsiplay发送给用户。 但这主要是为了数据库交互。 对于电子邮件,基本上没必要这样做。 htmlspecialchars应该处理其他所有事情。
答案 1 :(得分:1)
将评论作为答案发布,因为它似乎有效。
你用单引号而不是那里的双引号尝试了所有这些吗? PHP可以很有趣。