2016-10-28 76 views
0

我一直在編寫一些代碼來發送來自站點的電子郵件。基本代碼工作完美,然後我添加了一些小的位來檢查輸入的數據是否正確,現在只是顯示頁面不工作。這是我第一次使用PHP,所以對於所有這些都很新穎,雖然我看不到任何代碼錯誤?調試:用PHP發送電子郵件

enter image description here

<?php 
if(isset($_POST['submitButton'])){ 

    function errorMessage($error) { 
     echo 'Apologies but the request has not been successful<br/>'; 
     echo 'Please see below, amend and then resubmit<br/><ul>'; 
     echo $error . '</ul>'; 
     die(); 
    } 
    $error_message = ""; // set the error message as empty 

    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; // string to look for 
    $string_exp = "/^[A-Za-z .'-]+$/"; // string to look for 
    $contact_exp = '/^[0-9]/'; 


    $subject = " Request"; // subject of their email to me 
    $subject2 = "Copy of your Request"; // subject of the email back to them 
    $to = "myemail"; // this is my Email address 
    $from = $_POST['emailAddressField']; // this is the requesters Email address 

    if (!preg_match($email_exp,$from)) {  
     $error_message . = '<li>The Email Address you entered does not appear to be valid.</li>'; 
    } 

    $first_name = $_POST['firstNameField']; // this is their first name 

    if (!preg_match($string_exp,$first_name)) { 
     $error_message . = '<li>The first name you entered does not appear to be valid.</li>'; 
    } 

    $last_name = $_POST['surnameField']; // this is their surname 

    if (!preg_match($string_exp,$last_name)) { 
     $error_message . = '<li>The surname you entered does not appear to be valid.</li>'; 
    } 

    $contact_number = $_POST['contactNumberField']; // this is their contact number 

    if (!preg_match($contact_exp,$contact_number)){ 
     $error_message . = '<li>The contact number you entered does not appear to be valid.</li>'; 
    } 

    $details_field = $_POST['detailsField']; // this is the details 

    if (strlen($details_field) < 10) { 
     $error_message . = '<li>Please give more details, at least 10 characters.</li>'; 
    } 

    $message = $first_name . " " . $last_name . " (" . $contact_number . ") wrote the following:" . "\n\n" . $details_field; // message of email to me 
    $message2 = "Here is a copy of your request " . $first_name . " (" . $contact_number . ").\n\n" . $details_field . "\n\nMany thanks"; // message of email to requester 

    $headers = "From:" . $from; // message of email header to me 
    $headers2 = "From:" . $to; // message of email header to requester 

    // if there have been errors, then display error message and end 
    if(strlen($error_message) > 0) { 
     errorMessage($error_message); 
    } 

    // send the emails 
    mail($to,$subject,$message,$headers); 
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender 
    echo "Request sent. Thank you " . $first_name . ", I will contact you shortly."; 

} 
?> 

完美的作品:

<?php 
if(isset($_POST['submitButton'])){ 

    $subject = "Request"; // subject of their email to me 
    $subject2 = "Copy of your Request"; // subject of the email back to them 
    $to = "myemail"; // this is my Email address 
    $from = $_POST['emailAddressField']; // this is the requesters Email address 
    $first_name = $_POST['firstNameField']; // this is their first name 
    $last_name = $_POST['surnameField']; // this is their surname 
    $contact_number = $_POST['contactNumberField']; // this is their contact number 
    $details_field = $_POST['detailsField']; // this is the details 
    $message = $first_name . " " . $last_name . " (" . $contact_number . ") wrote the following:" . "\n\n" . $details_field; // message of email to me 
    $message2 = "Here is a copy of your request " . $first_name . " (" . $contact_number . ").\n\n" . $details_field . "\n\nMany thanks"; // message of email to requester 
    $headers = "From:" . $from; // message of email header to me 
    $headers2 = "From:" . $to; // message of email header to requester 

    // send the emails 
    mail($to,$subject,$message,$headers); 
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender 
    echo "Request sent. Thank you " . $first_name . ", I will contact you shortly."; 

} 
?> 

誰能幫我找到與這惱人的錯誤?

+1

不工作**如何**? –

+0

@MarcB更新錯誤,我得到。我也不熟悉PHP,無法正確調試它! – Geoff

+0

@ Fred-ii-問題底部的示例完美地工作,並按預期發送電子郵件,因此,表單不是什麼問題? – Geoff

回答

3

無處不在,你有. =,需要改變以.=

$error_message . = '<li>The Email Address you entered does not appear to be valid.</li>'; 

應該

$error_message .= '<li>The Email Address you entered does not appear to be valid.</li>'; 

爲了能夠調試PHP,你需要的地方,你可以在本地運行它,並查看錯誤信息。當我運行這個文件時,我得到:Parse error: syntax error, unexpected '=' in temp.php on line 23它告訴你在哪裏可以找到語法問題。

0

你的問題是你如何設置你的$ ERROR_MESSAGE變量,你的代碼是:

$error_message . = '<your error message here>'; 

,但你不能有之間的空間「」和 「=」

改變那些行:

$error_message .= '<your error message here>'; 

參考此鏈接,以使您的PHP腳本使用error_reporting: PHP Error Reporting