0

私の Web サイトは、同じドキュメント内のページのさまざまな部分にリンクするナビゲーション付きの 1 ページャーです。私の連絡先は、site.com/contact.html ではなく stie.com/#contact です。

mail.php にリンクするポスト メソッドを使用して、html でコード化されたコンタクト フォームがあります。送信ボタンを押すと、site.com/mail.php にリダイレクトされ、「メッセージは正常に送信されました」と表示されます。contact.php に変換する contact.html ファイルがなく、成功メッセージを表示する場所に php コードを配置しないため、連絡先フォームのすぐ上に表示されるようにするにはどうすればよいですか?

<div class="row">
<div class="12u">
<form method="post" action="mail.php">
<div>
<div class="row half">
<div class="6u">
<input type="text" name="name" id="name" placeholder="Name" />
</div>
<div class="6u">
<input type="email" name="email" id="email" placeholder="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<input type="text" name="subject" id="subject" placeholder="Subject" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" id="message" placeholder="Message"></textarea>
</div>
</div>
<div class="row">
<div class="12u">
<a href="#" class="button form-button-submit">Send Message</a>
<a href="#" class="button button-alt form-button-reset">Clear Form</a>
</div>
</div>
</div>
</form>
</div>

私のメール.php

<?php

//GET INFO FROM CONTACT FORM
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST ['subject'];
$message = $_POST['message'];
$from .= $_POST ['email'];
$to = 'email@site.com';

// compose headers
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";

//POST SUBMIT
if ($_POST['sumbit']);
    if ($name != '' && $subject != '' && $message !='' && $email != '') {                
            if (mail ($to, $subject, $from, $message, $headers)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    } else {
        echo '<p>Please fill in all required fields!!</p>';
    }
?>
4

3 に答える 3

0

スクリプトmail.phpは、ヘッダー インジェクション攻撃に対して脆弱であることに注意してください。変数 $_POST['email'] をエスケープする必要があります。特殊文字\nおよび\rを削除する必要があります。これは、str_replace関数を使用して簡単に作成できます。

于 2013-11-13T00:45:17.570 に答える