0

I have php script for send mail and on the end of this script I have redirect to "thankyou page". But I have problem. If I submit mail form on page, mail is send corect but redirect doesn't work, but if I go direct to adress of mail send script redirect is work properly.

Where is error?

<?php
include('includes/config.php'); 
if(isset($_POST['Email_Orderer_Form'])) {
$headers = "From: xy@xy.com\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Return-Path:  xy@xy.com\n";
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = " xy@xy.com, ".$_POST['Email_Orderer_Form']."";  // This email address will recieve the data of form.html
$email_subject = "XY";  // This would be the subject of email that you will recieved
$White_PHP = $_POST['checkboxWhite'];
$White_Velikost_PHP = $_POST['White_Velikost_Form'];
$White_Ks_PHP = $_POST['White_Ks_Form'];
$Black_PHP = $_POST['checkboxBlack'];
$Black_Velikost_PHP = $_POST['Black_Velikost_Form'];
$Black_Ks_PHP = $_POST['Black_Ks_Form'];
$Jmeno_PHP = $_POST['Jmeno_Form'];
$Prijmeni_PHP = $_POST['Prijmeni_Form'];
$Ulice_PHP = $_POST['Ulice_Form'];
$Cislo_Popisne_PHP = $_POST['Cislo_Popisne_Form'];
$Mesto_PHP = $_POST['Mesto_Form'];
$PSC_PHP = $_POST['PSC_Form'];
$Email_Orderer_PHP = $_POST['Email_Orderer_Form'];
$Telefon_PHP = $_POST['Telefon_Form'];
$Komentar_PHP = $_POST['Komentar_Form'];
function clean_text($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$Stav = "New";
$White_PHP = mysql_real_escape_string($White_PHP);
$White_Velikost_PHP = mysql_real_escape_string($White_Velikost_PHP);
$White_Ks_PHP = mysql_real_escape_string($White_Ks_PHP);
$Black_PHP = mysql_real_escape_string($Black_PHP);
$Black_Velikost_PHP = mysql_real_escape_string($Black_Velikost_PHP);
$Black_Ks_PHP = mysql_real_escape_string($Black_Ks_PHP);
$Jmeno_PHP = mysql_real_escape_string($Jmeno_PHP);
$Prijmeni_PHP = mysql_real_escape_string($Prijmeni_PHP);
$Ulice_PHP = mysql_real_escape_string($Ulice_PHP);
$Cislo_Popisne_PHP = mysql_real_escape_string($Cislo_Popisne_PHP);
$Mesto_PHP = mysql_real_escape_string($Mesto_PHP);
$PSC_PHP = mysql_real_escape_string($PSC_PHP);
$Email_Orderer_PHP = mysql_real_escape_string($Email_Orderer_PHP);
$Telefon_PHP = mysql_real_escape_string($Telefon_PHP);
$Komentar_PHP = mysql_real_escape_string($Komentar_PHP);
if (($_POST['checkboxWhite'] == 'Bílé tričko') && ($_POST['checkboxBlack'] == 'Černé tričko')) {
    $email_message .= "Objednávka\n";
    $email_message .= "Tričko 1: ".clean_text($White_PHP)."\n";
    $email_message .= "Velikost: ".clean_text($White_Velikost_PHP)."\n";
    $email_message .= "Kusů: ".clean_text($White_Ks_PHP)."\n\n";
    $email_message .= "Tričko 2: ".clean_text($Black_PHP)."\n";
    $email_message .= "Velikost: ".clean_text($Black_Velikost_PHP)."\n";
    $email_message .= "Kusů: ".clean_text($Black_Ks_PHP)."\n\n";
    $email_message .= "Odběratel\n";
    $email_message .= "Jméno: ".clean_text($Jmeno_PHP)."\n";
    $email_message .= "Příjmení: ".clean_text($Prijmeni_PHP)."\n";
    $email_message .= "Ulice: ".clean_text($Ulice_PHP)."\n";
    $email_message .= "Číslo popisné: ".clean_text($Cislo_Popisne_PHP)."\n";
    $email_message .= "Město: ".clean_text($Mesto_PHP)."\n";
    $email_message .= "PSČ: ".clean_text($PSC_PHP)."\n";
    $email_message .= "Email: ".clean_text($Email_Orderer_PHP)."\n";
    $email_message .= "Telefon: ".clean_text($Telefon_PHP)."\n";
    $email_message .= "Komentář: ".clean_text($Komentar_PHP)."\n";
    mysql_query("INSERT INTO objednavky (Tricko1,Tricko1Velikost,Tricko1Ks,Tricko2,Tricko2Velikost,Tricko2Ks,Jmeno,Prijmeni,Ulice,CisloPopisne,Mesto,PSC,Email,Telefon,Zprava,Stav) 
                VALUES ('$White_PHP','$White_Velikost_PHP','$White_Ks_PHP','$Black_PHP','$Black_Velikost_PHP','$Black_Ks_PHP','$Jmeno_PHP','$Prijmeni_PHP','$Ulice_PHP','$Cislo_Popisne_PHP','$Mesto_PHP','$PSC_PHP','$Email_Orderer_PHP','$Telefon_PHP','$Komentar_PHP','$Stav')")or die(mysql_error());
}
else {
if ($_POST['checkboxWhite'] == 'Bílé tričko') {
    $Black_PHP = "-";
    $Black_Velikost_PHP = "-";
    $Black_Ks_PHP = "-";
    $email_message .= "Objednávka\n";
    $email_message .= "Tričko: ".clean_text($White_PHP)."\n";
    $email_message .= "Velikost: ".clean_text($White_Velikost_PHP)."\n";
    $email_message .= "Kusů: ".clean_text($White_Ks_PHP)."\n\n";
    $email_message .= "Odběratel\n";
    $email_message .= "Jméno: ".clean_text($Jmeno_PHP)."\n";
    $email_message .= "Příjmení: ".clean_text($Prijmeni_PHP)."\n";
    $email_message .= "Ulice: ".clean_text($Ulice_PHP)."\n";
    $email_message .= "Číslo popisné: ".clean_text($Cislo_Popisne_PHP)."\n";
    $email_message .= "Město: ".clean_text($Mesto_PHP)."\n";
    $email_message .= "PSČ: ".clean_text($PSC_PHP)."\n";
    $email_message .= "Email: ".clean_text($Email_Orderer_PHP)."\n";
    $email_message .= "Telefon: ".clean_text($Telefon_PHP)."\n";
    $email_message .= "Komentář: ".clean_text($Komentar_PHP)."\n";
    mysql_query("INSERT INTO objednavky (Tricko1,Tricko1Velikost,Tricko1Ks,Tricko2,Tricko2Velikost,Tricko2Ks,Jmeno,Prijmeni,Ulice,CisloPopisne,Mesto,PSC,Email,Telefon,Zprava,Stav) 
                VALUES ('$White_PHP','$White_Velikost_PHP','$White_Ks_PHP','$Black_PHP','$Black_Velikost_PHP','$Black_Ks_PHP','$Jmeno_PHP','$Prijmeni_PHP','$Ulice_PHP','$Cislo_Popisne_PHP','$Mesto_PHP','$PSC_PHP','$Email_Orderer_PHP','$Telefon_PHP','$Komentar_PHP','$Stav')")or die(mysql_error());
}
if ($_POST['checkboxBlack'] == 'Černé tričko') {
    $White_PHP = "-";
    $White_Velikost_PHP = "-";
    $White_Ks_PHP = "-";
    $email_message .= "Objednávka\n";
    $email_message .= "Tričko: ".clean_text($Black_PHP)."\n";
    $email_message .= "Velikost: ".clean_text($Black_Velikost_PHP)."\n";
    $email_message .= "Kusů: ".clean_text($Black_Ks_PHP)."\n\n";
    $email_message .= "Odběratel\n";
    $email_message .= "Jméno: ".clean_text($Jmeno_PHP)."\n";
    $email_message .= "Příjmení: ".clean_text($Prijmeni_PHP)."\n";
    $email_message .= "Ulice: ".clean_text($Ulice_PHP)."\n";
    $email_message .= "Číslo popisné: ".clean_text($Cislo_Popisne_PHP)."\n";
    $email_message .= "Město: ".clean_text($Mesto_PHP)."\n";
    $email_message .= "PSČ: ".clean_text($PSC_PHP)."\n";
    $email_message .= "Email: ".clean_text($Email_Orderer_PHP)."\n";
    $email_message .= "Telefon: ".clean_text($Telefon_PHP)."\n";
    $email_message .= "Komentář: ".clean_text($Komentar_PHP)."\n";
    mysql_query("INSERT INTO objednavky (Tricko1,Tricko1Velikost,Tricko1Ks,Tricko2,Tricko2Velikost,Tricko2Ks,Jmeno,Prijmeni,Ulice,CisloPopisne,Mesto,PSC,Email,Telefon,Zprava,Stav) 
                VALUES ('$White_PHP','$White_Velikost_PHP','$White_Ks_PHP','$Black_PHP','$Black_Velikost_PHP','$Black_Ks_PHP','$Jmeno_PHP','$Prijmeni_PHP','$Ulice_PHP','$Cislo_Popisne_PHP','$Mesto_PHP','$PSC_PHP','$Email_Orderer_PHP','$Telefon_PHP','$Komentar_PHP','$Stav')")or die(mysql_error());
    mysql_Close();
}
}
@mail($email_to, $email_subject, $email_message, $headers);
}
header('Location: order_send.php');
die();
?>
Kostelka
  • 3
  • 4

2 Answers2

2

According to header() manual: Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

As far as I can see your php file doesn't have any real html output, i think the following code will work[!!not tested cause I am lazy]

<?php 
//ob_start even before your includes
ob_start( );

//add ob_end_clean before your header
ob_end_clean( ); 
header( 'Location: http://www.google.com' );

//die() might work too
exit();
?> 
Jacky Cheng
  • 1,536
  • 1
  • 10
  • 22
0

Try to add this line on the top of your php script:

error_reporting(E_ALL); //it will show all errors

Then you will see on the screen or in the php error log what is wrong. I bet that you will see: Warning: Cannot modify header information - headers already sent by ... etc.

If it is your problem, read this to correct the problem: How to fix "Headers already sent" error in PHP

In the other case, please post the error message to better analyze your problem.

T. B.

Community
  • 1
  • 1
teo
  • 801
  • 6
  • 14
  • Thansk for interest function, I will use it in next projects if I have any problem! – Kostelka Sep 11 '13 at 12:22
  • Check this for more information about error_reporting: [how-to-get-useful-error-messages-in-php](http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php) or the [php documentation](http://php.net/manual/en/function.error-reporting.php) – teo Sep 11 '13 at 12:46