Geoff Geoff - 1 month ago 16
PHP Question

Debug: sending email with PHP

I've been writing some code to send emails from a site. The base code worked perfectly, I then added some small bits for checking the inputted data is right and it's now just displaying that the page isn't working. This is the first time I've used PHP so am quite new to it all, although I can't see any errors with the code?

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._%-]+@[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.";

}
?>


Works perfectly:

<?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.";

}
?>


Can anyone help me with finding this annoying error?

Answer

Everywhere you have . =, needs to be changed to .=

i.e.

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

should be

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

In order to be able to debug php, you need somewhere you can run it locally and view the error messages. When I run the file, I get: Parse error: syntax error, unexpected '=' in temp.php on line 23 which tells you exactly where to find the syntax problem.

Comments