2017-07-09 7 views
1

私はPHPMailerの助けを借りて作られた連絡先ページを持っています。これは完全に正常に動作PHPファイル明示的に開くたびにメールを送信

<form class="form-horizontal" method="POST" action="Mail.php" name="contactForm"> 
... 
</form> 

を次のように最小限のコードですが、私はウェブサーバ上で明示的にMail.phpを開こうとするたびに、ウェブサーバはblankメールたびに送信します。私は以下Mail.php screenshot

にアクセスするたびにここでは、電子メールのスクリーンショットだphpmailerののMail.php

私は明示的にMail.phpにアクセスするユーザーを制限するにはどうすればよい
$mail->Subject = $subject; 
    $mail->Body = "<b>From: </b>". $sender. "<br>" ." <b>Name: </b>". $yourName. "<br>". "<b> Message Body </b>" .$message; 
    $mail->AltBody = "<b>From: </b>". $sender. "<br>" ." <b>Name: </b>". $yourName. "<br>". "<b> Message Body </b>" .$message; 

     if(!$mail->send()) { 
      echo 'Message could not be sent.'; 
      echo 'Mailer Error: ' . $mail->ErrorInfo; 
     } 
     else { 
      echo "Message has been sent....You're being redirected....."; 
      } 

から最小限のコードはありますか?

答えて

2

ので、issetを使用して、智異HrazdilとアフマドMobarakiによって示唆されているように私の問題を解決する必要がありますが、私はどのように見つけ出すことができませんでしたそれを実装する。そこで私は自分の解決策を思いついた。私は、最初の場所で変数が空であるかどうかをチェックします。誰かが直接ファイルにアクセスしようとすると、Fields are emptyというメッセージが表示されます。これが私のやり方です。

require 'PHPMailer/PHPMailerAutoload.php'; 
$yourName = $_POST['yourName']; 
$sender = $_POST['emailID']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$to = '[email protected]'; 
header('Refresh: 5; URL=whatever.php'); 

if(empty($yourName) || empty($sender) || empty($subject) || empty($message) || empty($message)) 
{ 
    echo "Fields are empty"; 
} 
else 
{ 
    //Working Code of PHP Mailer 
} 
+1

こんにちは、ごめんなさい! 'from'は形式ではありません!あなたのフォーム入力の1つです! : ''から 'mailer.php'を明示的に開こうとすると' name'や 'message'のような別のフィールドを使うことができます。または 'to'や' name'や 'subject'や....は' $ _POST'で埋められていますので、すべてをチェックする必要はありません! 'if(isset($ _ POST [" to ")] ....)のように' to'や 'from'をチェックするだけで十分です。より具体的にするには' if '、私の更新された答えを見てください –

1

あなたは、フォームからの値が満たされているかどうか、チェックするために条件を追加することができます。要求は例えばあなたのphpファイルでPOSTある場合

if (isset($_POST['sender'])) { 
    // send mail 
} 
2

をあなたは確認する必要があります:

if(isset($_POST['from'])){ 
    // send email 
} 

Mailer.phpを明示的に開こうとすると、要求はGETになります。

UPDATE:

fromが形成されていません!あなたのフォーム入力の1つです! :あなたが明示的にMailer.phpを開こうとすると、fromまたはtoまたはnameまたはsubjectのいずれか....が$_POSTで満たされていないので、すべてをチェックする必要がない、nameまたはmessage<input name="from" type="text">、あなたは次のように、別のフィールドを使用することができますそれら!

それだけで十分な例toまたはfromをチェックすることです:

if(isset($_POST['to'])){ 
    // send email 
} else { 
    die("forbidden! you can not open this file explicitly!") 
} 
+0

あなたの答えは「from」はフォーム名またはボタン名ですか? –

関連する問題