我有一个带有4个id(名称,电子邮件,消息,主题)的HTML表单,一个声明了所有变量的js以及一个应该发送邮件的PHP。
HTML
<form id="formail" method="post" action="">
<input type="text" id="nome" name="nome" value="" size="22" /><br />
<input type="text" id="email" name="email" value="" size="54" /><br />
<textarea id="messaggio" name="messaggio" rows="1" cols="55" style="resize: none;"></textarea><br />
<input type="text" id="subject" name="subject" value="" size="22" /><br />
<input type="submit" id="send" name="send" value="" style="cursor: pointer"/>
<br />
<div id="answer"></div>
</form>
这是js
var valid = '';
var isr = ' requested.</h6>';
var name = $("#nome").val();
var mail = $("#email").val();
var subject = $("#subject").val();
var messaggio = $("#messaggio").val();
(关注名称和邮件以及发送功能的控件)
这是php
$mail = trim($_POST['mail']);
$name = $_POST['name'];
$text = $_POST['messaggio'];
$subject = $_POST['subject'];
$ip = $_SERVER['REMOTE_ADDR'];
$to = "admin@test.com";
$message = "Username: ".$name.", ".$mail.".<br />";
$message .= "Subject: ".$subject.".<br />";
$message .= "Messaggio: <br />".$text."<br /><br />";
$message .= "IP: ".$ip."<br />";
$headers = "From: ".$mail." \r\n";
$headers .= "Reply-To: ".$mail." \r\n";
$headers .= "MIME-Version: 1.0 \n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1 \n";
if(mail($to, $subject, $message, $headers)){
echo "<h6>Message sent!</h6>";
}
我只发布了相关代码。当我点击发送时我会收到邮件,但字段“主题”是空白的,好像变量“主题”已被忽略。
你能帮帮我吗?我开始学习PHP,但我还是个新手。谢谢。答案 0 :(得分:1)
您的邮件功能在哪里?
使用以下邮件功能:
mail($to-mail,$subject,$message,$header);
答案 1 :(得分:0)
这里有两个关键点:
a)不确定您用于实际发送邮件的功能,但假设PHP mail(),您需要使用$ subject作为第二个参数。
b)如果您在开放网络上发布此内容,您将被垃圾邮件发送者利用为开放中继。
您容易受到的攻击称为“标头注入”。
简而言之,如果我将“mail”值提交为myemail@example.org%0ABcc:poorsap@example.com
,脚本将添加一个额外的行(%0A
是换行符),并提交给带有额外Bcc标题的mail(),无论多少我喜欢的电子邮件(在这种情况下为poorsap@example.org
)。
请仔细阅读:http://www.securephpwiki.com/index.php/Email_Injection并考虑使用备用库来避免此问题。