2011-05-06 18 views
0

多くの苦痛と心苦しい思いをした後、私は現在、PHPの電子メール連絡フォームを用意しています。それが欠けている唯一の事はあなたに注意またはメッセージをお願いします。誰か助けてくれますか?PHP電子メールフォームありがとうございます。

<form name="email" method="post"> 
    <p> 
    <label for="name">Full Name</label> 
    <input type="text" name="name" id="name"> 
    </p> 
    <p> 
    <label for="email">Email Address</label> 
    <input type="text" name="email" id="email"> 
    </p> 
    <p> 
    <label for="phone">Phone Number</label> 
    <input type="text" name="phone" id="phone"> 
    </p> 
    <p> 
    <label for="subject">Subject</label> 
    <input type="text" name="subject" id="subject"> 
    </p> 
    <p> 
    <label for="message">Message<br> 
    </label> 
    <textarea name="message" id="message" cols="45" rows="5"></textarea> 
    </p> 
    <p><input type="submit" name="send" id="send" value="Submit"><input type="reset" name="send" id="send" value="Reset"> 
    </p> 
</form> 


<?php 

// Get the Variables 
    $name = $_POST['name']; 
    $visitor_email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 


// Validate against spammers 
function IsInjected($str) 
{ 
    $injections = array('(\n+)', 
      '(\r+)', 
      '(\t+)', 
      '(%0A+)', 
      '(%0D+)', 
      '(%08+)', 
      '(%09+)' 
      ); 

    $inject = join('|', $injections); 
    $inject = "/$inject/i"; 

    if(preg_match($inject,$str)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

if(IsInjected($visitor_email)) 
{ 
    echo "Bad email value!"; 
    exit; 
} 


// Compose the Email 
    $email_from = '[email protected]'; // Set a valid email address that the form can use 

    $email_subject = "New Form submission - $subject"; // Change the message subject here 

    $email_body = "You have received a new message from $name ($phone) .\n Here is the message:\n $message"; 


// Send The Email 
    $to = "[email protected]"; // Set a valid email address to send the form to 

    $headers = "From: $email_from \r\n"; 

    $headers .= "Reply-To: $visitor_email \r\n"; 

    mail($to,$email_subject,$email_body,$headers); 

?> 
+0

私は電子メールアドレスでうねった文字をチェックするよりも、 '$ message'をサニタイズすることを心配しています。スパマーは引き続き「合法的」なアドレスを使用して、メガバイト相当のペニス・ピルとロシアの花嫁のごちそうをメッセージに記入することができます。 –

答えて

2
if(mail($to,$email_subject,$email_body,$headers)){ 
    echo "Thanks for your mail..."; 
} 
0

非常に単純な、メール()関数は、そう、これを使用してfalseを/ trueを返します:

echo mail($to, $email_subject, $email_body, $headers) ? 'Mail send' : 'Failed to send mail'; 

が画面に結果をエコーし​​ます。しかし、メッセージが下に置かれるのはあまり一般的ではないので、フォームの上のフォームのアクションを追加することもできます。送信アクションを実行します。そうすれば、後の要求がされている場合は、あなたが最初に送信チェックアップ(および電子mailadresがfalseではありません)この場合

if($_SERVER['REQUEST_METHOD'] == "POST" && !IsInjected($visitor_email)) { 
    // insert form action here 
} else { 
    if(IsInjected($visitor_email)) { 
    echo "False e-mail address supplied 
    } 
    // add form HTML code here (outside PHP tags ofcourse 
} 

:また、あなたはこれを使用することができます。それ以外の場合は、間違った電子メールのエラーを通知し、フォームを表示します。

これは愚かな例ではありませんが、あなたは自分でいくつかの作業を行う必要があります。

関連する問題