2016-10-09 5 views
1

私はPHPコードで動作するHTMLフォームを持っていますが、メールは私に送られますが、件名、メール、メッセージがなければメールが届きます。多分それを修正する方法を知っている人もいるでしょうか? PHPコード:HTMLメールフォームPHP

<?php 
$field_name = $_POST['cf_name']; 
$field_email = $_POST['cf_email']; 
$field_message = $_POST['cf_message']; 

$mail_to = '[email protected]'; 
$subject = 'Message from a site visitor '.$field_name; 

$body_message = 'From: '.$field_name."\n"; 
$body_message .= 'E-mail: '.$field_email."\n"; 
$body_message .= 'Message: '.$field_message; 

$headers = 'From: '.$field_email."\r\n"; 
$headers .= 'Reply-To: '.$field_email."\r\n"; 

$mail_status = mail($mail_to, $subject, $body_message, $headers); 

if ($mail_status) { ?> 
    <script language="javascript" type="text/javascript"> 
     alert('Thank you for the message. We will contact you shortly.'); 
     window.location = 'index.html'; 
    </script> 
<?php 
} 
else { ?> 
    <script language="javascript" type="text/javascript"> 
     alert('Message failed. Please, send an email to [email protected]'); 
     window.location = 'index.html'; 
    </script> 
<?php 
} 
?> 
<?php 
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; 
} 
?> 
+2

件名/電子メール/メッセージが空の場合、どのように電子メールを送信するのか尋ねていますか? 'if'条件の単純なセットでなければなりません。あなたは何を抱えていますか? –

+0

'mail($ mail_to、$ subject、$ body_message、$ headers)'を最初に実行しないでください。また、 'isinjected'は、電子メールが送信されるまで使用されません。それを修正したいかもしれません。なぜ特定の空白がメールを "注入"するのか明確ではありません.. – chris85

+0

また、むしろ厄介なJSハックではなく、[header](http://php.net/header)リダイレクトを使用してください。 –

答えて

-1

フィールドをコンパイルする前に、フィールドをコンパイルする必要があります。

私はあなたが例えば、expecially $ field_emailに、ちょうど空の()関数よりも複雑なチェックを使用することをお勧めので、これは単なるドラフト例です:

if (empty($field_name) || !filter_var($field_email, FILTER_VALIDATE_EMAIL) || empty($field_message)) { 
    ?> 
    <script language="javascript" type="text/javascript"> 
     alert('All fields must be correctly compiled'); 
     window.location = 'index.html'; 
    </script> 
<?php 

} else { 


$mail_status = mail($mail_to, $subject, $body_message, $headers); 

if ($mail_status) { ?> 
    <script language="javascript" type="text/javascript"> 
     alert('Thank you for the message. We will contact you shortly.'); 
     window.location = 'index.html'; 
    </script> 
<?php 
} 
else { ?> 
    <script language="javascript" type="text/javascript"> 
     alert('Message failed. Please, send an email to [email protected]'); 
     window.location = 'index.html'; 
    </script> 
<?php 
} 
} 
+0

これはうまくいくようです。ありがとうございました –

-1

は(ヘッダを追加し、メールを使用してみてください)関数:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 
$headers .= 'From: Mail <[email protected]>'; 

mail($mail_to, $subject, $body_message, $headers); 
関連する問題