变量不能以邮件形式工作?

时间:2012-05-18 18:13:25

标签: php forms email variables

我有一个带有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,但我还是个新手。谢谢。

2 个答案:

答案 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并考虑使用备用库来避免此问题。