2016-10-28 20 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>'; 

は、PHPをデバッグすることができるようにするために

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

する必要があり、あなたはそれをローカルに実行し、エラーメッセージを表示することができますどこかにする必要があります。ファイルを実行すると、文法上の問題がどこにあるのか正確にわかる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