tifoso Posted December 15, 2010 Share Posted December 15, 2010 Here is the webpage.php which executes data entered in the email form. I want to display a webpage which would confirm that the email has been sent but the header redirect does not work. An email gets sent but a blank page is displayed instead of confirmation. Can anyone help? this is urgent <?php error_reporting(6143); require_once('recaptchalib.php'); $publickey = "6Ldmbr8SAAAAAGT17oCjkB8Y60kSqvq_0w7APAJp"; $privatekey = "6Ldmbr8SAAAAAMY5lEl-7LnkWCovoFa9G7Vl3_kA"; isset($_POST['Email']) ? $Email = $_POST['Email'] : $Email = ""; isset($_POST['name']) ? $name = $_POST['name'] : $name = ""; isset($_POST['surname']) ? $surname = $_POST['surname'] : $surname = ""; ?> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> <body bgcolor="#000000"></body> <link href="loginmodule.css" rel="stylesheet" type="text/css" /> <?php if (isset($_POST['Submit'])) { //Validate form $errormessage = ""; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($name == '') { $errormessage .= "<li>Please provide your name.</li> ";} if ($surname == '') { $errormessage .= "<li>Please provide your surname.</li>";} if ($Email == '') { $errormessage .= "<li>What is your e-mail address?</li>";} if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $Email)){ $errormessage = $errormessage . "<li>This is not a valid email address! </li>";} if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly $errormessage .= "<li>Please rewrite captcha characters</li>"; } echo "</ul></p>"; //If errors, return error message(s) and form if ($errormessage != "") { ?> <span class="link1"><a href="index.php">back to home page/a></span> <img src="images/clack.JPG"> <table align="center"> <p align="center" class="err_bold">correct the following errors:</p> <span class="text_err"><ul><?=$errormessage?></span> </table> <?php include("email-form.php"); } else { //If good, mail to DL $email_subject = "Hello, you have a new message"; $email_headers = "From: $name [$Email] \r\n"; $to = "[email protected]"; $message_content = "----------------------------------------------------------------------------------\n". " Hello\n". "name: $name\n". "surname: $surname\n". "E-mail: $Email\n". "-----------------------------------------------------------------------------------\n\n"; //Email message to Requestor if (mail($to, $email_subject, $message_content, $email_headers)) { //Display Sent Confirmation (Successful or NOT!) ?> <?php header ("Location: http://www.google.co.uk"); exit; ?> <?php } } } else { ?> <span class="link1"><a href="index.php">back to home page</a></span> <img src="images/clack.JPG"><br> <p class="err" align="center">Please fill the form below<br/></p> <?php include("email-form.php");?> <?php }; Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/ Share on other sites More sharing options...
BlueSkyIS Posted December 15, 2010 Share Posted December 15, 2010 header() must be called before ANY output to the browser, including the HTML interspersed in that code. Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147703 Share on other sites More sharing options...
tifoso Posted December 15, 2010 Author Share Posted December 15, 2010 So I moved the header() above the content that is displated in the web browser but it did not help :/ <?php error_reporting(6143); require_once('recaptchalib.php'); $publickey = "6Ldmbr8SAAAAAGT17oCjkB8Y60kSqvq_0w7APAJp"; $privatekey = "6Ldmbr8SAAAAAMY5lEl-7LnkWCovoFa9G7Vl3_kA"; isset($_POST['Email']) ? $Email = $_POST['Email'] : $Email = ""; isset($_POST['name']) ? $name = $_POST['name'] : $name = ""; isset($_POST['surname']) ? $surname = $_POST['surname'] : $surname = ""; ?> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> <body bgcolor="#000000"></body> <link href="loginmodule.css" rel="stylesheet" type="text/css" /> <?php if (isset($_POST['Submit'])) { //Validate form $errormessage = ""; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($name == '') { $errormessage .= "<li>Please provide your name.</li> ";} if ($surname == '') { $errormessage .= "<li>Please provide your surname.</li>";} if ($Email == '') { $errormessage .= "<li>What is your e-mail address?</li>";} if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $Email)){ $errormessage = $errormessage . "<li>This is not a valid email address! </li>";} if (!$resp->is_valid) { // What happens when the CAPTCHA was entered incorrectly $errormessage .= "<li>Please rewrite captcha characters</li>"; } echo "</ul></p>"; //If errors, return error message(s) and form if ($errormessage != "") { ?> <?php header ("Location: http://www.google.co.uk"); exit; ?> <span class="link1"><a href="index.php">back to home page/a></span> <img src="images/clack.JPG"> <table align="center"> <p align="center" class="err_bold">correct the following errors:</p> <span class="text_err"><ul><?=$errormessage?></span> </table> <?php include("email-form.php"); } else { //If good, mail to DL $email_subject = "Hello, you have a new message"; $email_headers = "From: $name [$Email] \r\n"; $to = "[email protected]"; $message_content = "----------------------------------------------------------------------------------\n". " Hello\n". "name: $name\n". "surname: $surname\n". "E-mail: $Email\n". "-----------------------------------------------------------------------------------\n\n"; //Email message to Requestor if (mail($to, $email_subject, $message_content, $email_headers)) { //Display Sent Confirmation (Successful or NOT!) ?> <?php } } } else { ?> <span class="link1"><a href="index.php">back to home page</a></span> <img src="images/clack.JPG"><br> <p class="err" align="center">Please fill the form below<br/></p> <?php include("email-form.php");?> <?php }; Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147714 Share on other sites More sharing options...
MMDE Posted December 15, 2010 Share Posted December 15, 2010 no, you didn't... It must come before any html whatsoever (even doctype and the html tag) Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147719 Share on other sites More sharing options...
tifoso Posted December 15, 2010 Author Share Posted December 15, 2010 If I move it higher than the confirmation.php is displayed automatically when I go to email-form.php so I don't even have a chance to fill in the email form as it takes me staright to confirmation.php which should be displayed when I press "Submit" button on the email form. Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147728 Share on other sites More sharing options...
MMDE Posted December 15, 2010 Share Posted December 15, 2010 PHP is serverside, you can have lots of php before the header(), but you can't echo something out before it. If you need to check something and it gives some message before it, then save the message in a variable and echo it at a later point in the script o.o Of everything sent to the client (html), header() should be before it all. Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147750 Share on other sites More sharing options...
tifoso Posted December 15, 2010 Author Share Posted December 15, 2010 I'll have a go with saving a message in a variable later on today. I do understand that header() should be before everything that is sent to the client, but when I do so, then the confirmation.php is displayed automatically when I go to email-form.php :/ Link to comment https://forums.phpfreaks.com/topic/221763-header-redirect-does-not-work-please-help/#findComment-1147766 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.