2014-02-16 72 views
0
if($_POST){ 

    if($checkout_form == "checkout"){ 
     if($orderpersonname == "" || $orderpersonemail == ""){ 
      $checkouterror = "<p><font style=\"color: red;\">Please enter your full name and email address before checking out</font></p>"; 
     }elseif(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $orderpersonemail)){ 
      $checkouterror = "<p><font style=\"color: red;\">Please enter a valid email address</font></p>"; 
     }elseif(!isset($_POST['tnc'])){ 
      $checkouterror = "<p><font style=\"color: red;\">Please accept the terms and conditions to complete this entry before checking out</font></p>"; 
     } 
     else{ 
      header("Location: http://www.google.com.my"); 
      exit; 


     } 
    } 
} 

我上面如果没有发生错误,将我重定向到一个结帐页面,在这种情况下,我使用谷歌网页作为样本代码。但是它所做的实际上是让我回到了同一个网址,并且我的网站标题上方有一个空白区域,所有的侧边栏和内容都变成空白。为什么?如何解决这个重定向问题?PHP头重定向不一样,如果else语句工作在

+2

打开display_errors或查看错误日志,页面出错。 –

回答

0

您在打开<?php标记之前留有空格。或者可能在你正在包含的文件中。这通常是重定向不起作用时的问题。看看你的错误日志是否显示"headers already sent"

0

使用ob_start()解决此问题。我认为它会解决你的问题。

+0

如果在他的第一个脚本标记之前有一个空格,将无法解决它 –

0

我遇到的一个主要问题是标题已经发送。 尝试使用ob_start()

正如上面所说,如果你有这个空格不会做任何事情......

0

你没有在正确的位置上你的括号。

if ($_POST){ 
    if ($checkout_form == "checkout") { 
     if($orderpersonname == "" || $orderpersonemail == "") { 
      $checkouterror = "<p><font style=\"color: red;\">Please enter your full name and email address before checking out</font></p>"; 
     }elseif(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $orderpersonemail)) { 
      $checkouterror = "<p><font style=\"color: red;\">Please enter a valid email address</font></p>"; 
     }elseif(!isset($_POST['tnc'])) { 
      $checkouterror = "<p><font style=\"color: red;\">Please accept the terms and conditions to complete this entry before checking out</font></p>"; 
     } 
    } else { 
     header("Location: http://www.google.com.my"); 
     exit; 
    } 
}