Hi:
I am new and i have searched the forum for the kind of issue that i have but could not find it, so i am posting it for assistance. But if the same have been posted, accept my apologies.
I have a contact form that uses sendmail.php. The form sends the message to me, but does not redirect user to a thank you page on the site. Instead, it spew out:
Warning: Cannot modify header information - headers already sent by (output started at /home/username/public_html/sendmail.php:1) in /home/username/public_html/sendmail.php on line 90.
Below is the sendmail.php code:
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "owner@sitename.com";
$email_subject = "Hello";
function died($error)
{
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
echo "name=>".$_POST["name"] . "<br/>";
echo "phone=>".$_POST["phone"] . "<br/>";
echo "email=>".$_POST["email"] . "<br/>";
echo "best_time_to_contact=>".$_POST["best_time_to_contact"] . "<br/>";
echo "Treatment=>".$_POST["Treatment"] . "<br/>";
echo "comments=>".$_POST["comments"] . "<br/>";
if( $_POST["name"] == "" || $_POST['phone'] == "" || $_POST['email'] == "" ||
$_POST['best_time_to_contact'] == "" || $_POST['Treatment'] == "" || $_POST['comments'] == "" )
{
//died('We are sorry, but there appears to be a problem with the form you submitted.');
died('Data empty');
}
$name = $_POST['name']; // required
$phone = $_POST['phone']; // required
$email_from = $_POST['email']; // required
$best_time_to_contact = $_POST['best_time_to_contact']; // required
$treatments = $_POST['Treatment']; // not required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";
if(!eregi($email_exp,$email_from))
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
$string_exp = "^[a-z .'-]+$";
if(!eregi($string_exp,$name))
$error_message .= 'The Name you entered does not appear to be valid.<br />';
// if(strlen($website) < 2)
// $error_message .= 'The website you entered do not appear to be valid.<br />';
if(strlen($error_message) > 0)
died($error_message);
$email_message = "Form details below.\n\n";
function clean_string($string)
{
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= " Name: ".clean_string($name)."\n";
$email_message .= "Phone: ".clean_string($phone)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Best time to contact: ".clean_string($best_time_to_contact)."\n";
$email_message .= "Treatments: ".clean_string($treatments)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n"
.'Reply-To: '.$email_from."\r\n"
.'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
header("location: http://www.sitename.com/thank-you.html");
?>
<?php
}
?>
Thanks
Sendmail.php Error
Moderator: General Moderators
Re: Sendmail.php Error
Make sure that there is nothing before the opening <?php tag on the page.
The message you are getting is because PHP already send data to the browser before the header line is called. (Headers have to be sent before any content). It has been a while since I have encountered this error (and paid attention to what it said other than realizing I goofed), but believe the :1 indicates line 1 is where some output was sent to the browser, so usually that is from the opening tag not being the first characters in the file.
-Greg
PS. For better posts next time, use the PHP Code button in the editor to wrap your code with.
The message you are getting is because PHP already send data to the browser before the header line is called. (Headers have to be sent before any content). It has been a while since I have encountered this error (and paid attention to what it said other than realizing I goofed), but believe the :1 indicates line 1 is where some output was sent to the browser, so usually that is from the opening tag not being the first characters in the file.
-Greg
PS. For better posts next time, use the PHP Code button in the editor to wrap your code with.
Re: Sendmail.php Error
Could you explain "that is from the opening tag not being the first characters in the file." And if possible assist with how to rearrange the code? Thanks
Re: Sendmail.php Error
Essentially make sure the first thing at the top of your file is <?php. No spaces or characters should appear before that. If you're still getting an error it's because your died() function is being displaying something to the screen before you're trying to redirect the user to a new page.
Re: Sendmail.php Error
There is no space or anything before the <?php. andi believe the died() function is ok.Jade wrote:Essentially make sure the first thing at the top of your file is <?php. No spaces or characters should appear before that. If you're still getting an error it's because your died() function is being displaying something to the screen before you're trying to redirect the user to a new page.
Re: Sendmail.php Error
Before the header(..) line, insert a line containing this:raw100 wrote:There is no space or anything before the <?php. andi believe the died() function is ok.Jade wrote:Essentially make sure the first thing at the top of your file is <?php. No spaces or characters should appear before that. If you're still getting an error it's because your died() function is being displaying something to the screen before you're trying to redirect the user to a new page.
Code: Select all
die("what's before this?")An empty line perhaps? A tab character maybe? A null byte?
Re: Sendmail.php Error
On what page? The contact form page ? If that is it, there is nothing like that on it. ThanksApollo wrote:Before the header(..) line, insert a line containing this:raw100 wrote:There is no space or anything before the <?php. andi believe the died() function is ok.Jade wrote:Essentially make sure the first thing at the top of your file is <?php. No spaces or characters should appear before that. If you're still getting an error it's because your died() function is being displaying something to the screen before you're trying to redirect the user to a new page.Visit the page again, right click -> view source, preferably in a hex editor, then what's before "what's before this?" ?Code: Select all
die("what's before this?")
An empty line perhaps? A tab character maybe? A null byte?
Re: Sendmail.php Error
On the page that previously gave you the "Warning: Cannot modify header information" warning.raw100 wrote:On what page? The contact form page ? If that is it, there is nothing like that on it. Thanks