2016-10-28 79 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