2017-07-09 38 views
1

我有一個在PHPMailer幫助下完成的聯繫頁面。最小代碼如下PHP文件每次明確打開時發送郵件

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

這工作完全正常,但每當我嘗試顯式打開Mail.php上的Web服務器,Web服務器發送每次blank電子郵件。這裏的電子郵件截圖,每當我訪問Mail.php screenshot

下面是最少的代碼的PHPMailer的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....."; 
      } 

我怎樣才能限制明確訪問Mail.php用戶?

回答

2

因此,通過吉日Hrazdil和艾哈邁德Mobaraki的建議,使用isset應該解決我的問題,但我無法弄清楚如何執行那個。所以我想出了我自己的解決方案。我檢查,如果變量是空的,所以如果有人直接試圖訪問該文件,它會顯示一條消息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

嗨,對不起,遲到了! '從'不是形式!這是你的表單輸入之一! :當你嘗試明確地打開'Mailer.php'時,你可以使用另一個字段,如:'name'或'message',而不是'from'或'to'或'name'或'subject'或....都填有'$ _POST',所以不需要像所做的那樣檢查它們。它只是檢查例如'to'或'from':'if(isset($ _ POST [「to」]))....',如果你想更具體的你可以把所有的'if ',看我更新的答案 –

1

你可以添加一個條件來檢查,從形式上的值是否被填充:

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

,你應該檢查,如果請求POST在你的PHP文件,例如:

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

當您嘗試明確打開Mailer.php時,您的請求是GET

UPDATE:

from沒有形成!這是你的表單輸入之一! :<input name="from" type="text">,你可以使用另一個領域,如:namemessage,當你試圖打開Mailer.php明確,沒有fromtonamesubject或....充滿$_POST所以沒有需要檢查所有的他們!

它僅僅是足夠的檢查,例如tofrom

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

你的答案'from'是表單名稱還是按鈕名稱? –