我从堆栈的其他地方采取了一些脚本来创建一个联系表单,在用户提交时通过电子邮件发送给我。
HTML:
<form onsubmit="return getContent()">
<fieldset>
<input name="name" value="NAME" style="max-width:15%" type="text"/>
<input name="email" value="EMAIL" style="max-width: 30%" type="text"/>
<div id="message" contenteditable="true" name="message" value="expanding textarea">HELLO</div>
<textarea id="my-textarea" value="MESSAGE" style="display:none"></textarea>
<input type="submit" style="margin-right:0" value="Submit" />
</fieldset>
</form>
脚本:
function getContent(){
document.getElementById("my-textarea").value = document.getElementById("message").innerHTML;
}
$('form').submit( function() {
$.ajax({
type: "POST",
url: "email.php",
data: $(this).serialize(),
success: function() {
// Update page with success message
}
});
return false;
});
PHP:
<?php
$recipient = "my.email@whatever.com"; //recipient
$Name = ($_POST['name']); //senders name
$email = ($_POST['email']); //senders e-mail adress
$mail_body = ($_POST['message']); //mail body
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields
mail($recipient, $subject, $mail_body, $header); //mail command :)
?>
脚本应该获取在contenteditable
div中输入的内容并将其传递给隐藏的textarea,然后提交到我的电子邮件。但是,它目前仅通过"name"
和"email"
字段,并将电子邮件正文留空。
我在这里错过了什么?
编辑:在上面隐藏文本区域的代码中发生了一个小错误,值=“MESSAGE”而不是“SUBJECT”。但是,代码无效。答案 0 :(得分:1)
提交时,不会通过表单传递可信内容。 但是,看起来你正在使用一些JS来获取可编辑内容div的内容并将其放入textarea中,其名称为“subject”。
因此,只能通过$_POST['subject']
访问它。
另外,你在html中执行onsubmit =“”,在JS文件中执行提交。我认为两者都不会起作用,你最好将两者结合起来(即只使用JS文件)。
如果没有启用JS,它也无法运行,我认为这是一个更大的问题。