0

こんにちは!私が作成したこの contactform スクリプトはどれほど安全なのだろうか? 私がコンタクトフォームを作成したとき、私の先生はずっと前に私にしつこくしつこくしていました。

if($_SERVER['REQUEST_METHOD'] === 'POST'){

    $myemail  =    "email@adress.com";
    $name      =    $_POST['name'];
    $email    =    $_POST['email'];
    $phone    =    $_POST['phone'];
    $subject  =    $_POST['subject'];
    $comments =    $_POST['comments'];

   if($name == 0 || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || !preg_match("/^\d{2}(-\d{3}){2}(\d{2})?$/", $phone) || $subject == 0 || $comments == 0){

       $error_message = 'Something was written wrong..';

   } else {

       $message = "Hello!
       Your contact form has been submitted by:
       Name: $name
       E-mail: $email
       Phone: $phone
       Comments: $comments
       End of message";
       mail($myemail, $subject, $message);
       $error_message = 'Your message was sent!';

    }
}

安全にする方法の提案はありますか?

PSお問い合わせフォーム保護 と phpお問い合わせフォームの保護はどちらも WordPress 用であり、それは私が求めているものではありません。

4

2 に答える 2

6

関数を使用して、次のようなエントリを検証できます。

function check_input($data)
 {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
 }

   

        $name      =    check_input($_POST['name']);
        $email    =    check_input($_POST['email']);
        $phone    =    check_input($_POST['phone']);
        $subject  =    check_input($_POST['subject']);
        $comments =    check_input($_POST['comments']);

     if ($name && $email && $phone && $subject && $comments) {
         Send contact form...

}

もちろん、キャプチャを追加してより安全にすることもできます。

于 2012-08-22T20:41:25.827 に答える
0

データ検証の欠如以外に、コードに安全でないものは何もありません。フォームデータを収集して送信するだけです。したがって、唯一の「不安」は、何らかのキャプチャが使用されていない限り、そのフォームを介して簡単にスパム送信されることです. 現時点では確信が持てませんが、mail() をだまして $subject を細工した受信者を追加することは可能かもしれません。

于 2012-08-22T19:23:33.310 に答える