Please Help with Contact Form :(


#1

Hi there, experts, and thanks in advance. I got a template (I know…) with a contact form that’s not working. Sends, but ALL of the content is being placed in the subject line. Here is the PAGE code:

<div class="contact-form">
                <form method="POST" action="contact-me.php" id="minix-contact-form">
                  <div class="form-50">
                    <input type="text" required="" placeholder="Your Name" name="name" class="form-control">
                  </div>
                  <div class="form-50">
                    <input type="email" required="" placeholder="Email Address*" name="email" class="form-control">
                  </div>
                  <div class="form-50">
                    <input type="text" required="" placeholder="Your Phone Number" name="telephone" class="form-control">
                  </div>
                  <div class="form-50">
                    <input type="text" required="" placeholder="Topic" name="topic" class="form-control">
                  </div>
                  <textarea placeholder="Write Message*" rows="2" cols="30" name="message"></textarea>
                  <button type="submit" class="button active button-fullwidth form-btn">SEND MESSAGE</button>
                  <p class="contact-me-send-message"></p>
                </form>
              </div>


AND PHP:

<?php

// Only process POST reqeusts.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	// Get the form fields and remove whitespace.
	$name = strip_tags(trim($_POST["name"]));
	$name = str_replace(array("\r","\n"),array(" "," "), $name);
	$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
	$message = trim($_POST["message"]);

	// Check that data was sent to the mailer.
	if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
		// Set a 400 (bad request) response code and exit.
		http_response_code(400);
		echo "Please complete the form and try again.";
		exit;
	}

	// Set the recipient email address.
	// FIXME: Update this to your desired email address.
	$recipient = "mstrivelli@gmail.com";

	// Set the email subject.
	$subject  = "=?UTF-8?B?".base64_encode('Zpro Contact Me')."?=";

	// Build the email content.
	$email_content = "Name: $name\n";
	$email_content .= "Email: $email\n\n";
	$email_content .= "Message:\n$message\n";

	// Build the email headers.
	$email_headers = "From: $name <$email>";

	// Send the email.
	if (mail($recipient, $email_content, $email_headers)) {
		// Set a 200 (okay) response code.
		http_response_code(200);
		echo "Thank You! Your message has been sent.";
	} else {
		// Set a 500 (internal server error) response code.
		http_response_code(500);
		echo "Oops! Something went wrong and we couldn't send your message.";
	}

} else {
	// Not a POST request, set a 403 (forbidden) response code.
	http_response_code(403);
	echo "There was a problem with your submission, please try again.";
}


?>
?>

#2

PHP Docs
bool mail ( string $to , string $subject , string $message [, mixed $additional_headers [, string $additional_parameters ]] )


#3

That returned a 500 error, unfortunately. Am I missing something? Do I need to rename the parameters?


#4

You need to read it. I wasn’t giving you code, I was giving you what the parameters should be.


#5

Ok, your reply didn’t have much context, so it wasn’t really clear. Are you saying that all through the php file, I should rename the parameters? It was sending before, and not broken. It was all just in the subject line.


#6

:man_facepalming:

Look at your mail function. Now look at the function parameters of that I provided from the docs.

mail(1, 2, 3, 4)

  1. To
  2. Subject
  3. Body
  4. Headers

Now, your issue is that the body comes through as the subject. What do you think that means? Look at the parameter numbers.


#7

Well, thanks for nothing. Being a condescending jerk isn’t helping anyone.


#8

Well…

I gave you the information you needed and you didn’t understand. I laid it out further for you, and you call me a condescending jerk. If you still don’t understand, what would you like me do? I have done just short of rewriting the code for you.

mail($recipient, $subject, $email_content, $email_headers);

And now I have done that.