0

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

4

2 回答 2

1

你的邮件功能在哪里?

使用以下邮件功能:

mail($to-mail,$subject,$message,$header);
于 2012-05-18T18:39:20.333 回答
0

这里有两个关键点:

a) 不确定您使用什么函数来实际发送邮件,但假设 PHP mail() 您将需要使用 $subject 作为第二个参数。

b) 如果您在开放网络上发布此内容,您将被垃圾邮件发送者用作开放中继。

您容易受到的攻击称为“标头注入”。简而言之,如果我提交我的“邮件”值,因为myemail@example.org%0ABcc:poorsap@example.com脚本将添加一个额外的行(这%0A是一个换行符),并为我喜欢的许多电子邮件(在这种情况下)提交一个带有额外密件抄送标题的 mail( poorsap@example.org)。

请仔细阅读:http ://www.securephpwiki.com/index.php/Email_Injection并考虑使用备用库来避免此问题。

于 2012-05-18T18:58:13.527 回答