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

ここでの 2 つの重要なポイント:

a) 実際にメールを送信するためにどの関数を使用しているか正確にはわかりませんが、PHP の mail() を想定すると、2 番目のパラメーターとして $subject を使用する必要があります。

b) これをオープン Web で公開すると、スパマーによるオープン リレーとして悪用されます。

脆弱な攻撃は「ヘッダー インジェクション」と呼ばれます。つまり、「メール」の値を送信するとmyemail@example.org%0ABcc:poorsap@example.com、スクリプトが余分な行 (%0A改行) を追加し、好きな数のメール (この場合はpoorsap@example.org) の追加の Bcc ヘッダーを付けて mail() に送信します。

http://www.securephpwiki.com/index.php/Email_Injectionを読み、この問題を回避するために別のライブラリの使用を検討してください。

于 2012-05-18T18:58:13.527 に答える