2011-05-31 63 views
1

我的服务器运行在PHP 5.2.9,当我使用刷新和标题函数它无法正常工作。这里是我的代码PHP标题和刷新不工作

header("location: index.php"); 

header("Refresh: 0;"); 

以前我在不同的服务器上工作,它工作正常。我怎么解决这个问题?

这是我的完整代码

if($_POST['sign_in']) 
{ 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $sql = "SELECT * FROM tbl_members WHERE m_email='$email' and m_password='$password'"; 
    $res = mysql_query($sql); 
    $count = mysql_num_rows($res); 
    if($count==1) 
    { 
     session_register("email"); 
     header("location: index.php"); 
    } 
    else 
    { 
     $sql = "SELECT * FROM tbl_temp_members WHERE email='$email'"; 
     $res = mysql_query($sql); 
     $count = mysql_num_rows($res); 
     if($count==1) 
     { 
      echo "Login unsuccessful,Account still not activated"; 
     } 
     else 
     { 
      echo "Login unsccessful"; 
     } 
    } 
} 
+3

在调用'header'之前你有输出吗?你有错误报告激活?你能检查错误(警告)吗? – 2011-05-31 11:11:07

+1

SQL注入FTW。 :)不要介意重定向。首先解决它。 – 2011-05-31 11:30:38

+0

我附上了完整的代码问题。 – 2011-05-31 11:30:41

回答

5

位置和刷新都require an absolute URI(和它的“位置”,而不是“位置”)。

试试这个:

header('Location: http://absolute.uri/file.ext'); 

如果没有帮助,请检查my answer for any "strange" PHP problem;)

+0

虽然你是对的语法正确,我怀疑这是问题。除非他使用一个非常模糊的浏览器。 – 2011-05-31 11:15:31

+3

这是错误的。这不是绝对的必要。 – RRStoyanov 2011-05-31 11:15:55

+0

@RRStoyanov“请引用!” :) http://tools.ietf.org/html/rfc2616#section-14.30我的消息来源说** **确实需要是绝对的。 – 2011-05-31 11:18:26

1

(1)你不需要刷新头,如果你有位置的一个

(2)最后加exit;

第二个特例是 “位置:”标题。它不仅 将此标题发送回浏览器 ,而且它还向浏览器返回REDIRECT(302) 状态代码,除非已设置 201或3xx状态代码已经设置了 。

<?php 
header("Location: http://www.example.com/"); /* Redirect browser */ 

/* Make sure that code below does not get executed when we redirect. */ 
exit; 
?> 
+0

我不知道什么是错的。这在新服务器中不起作用。 :-( – 2011-05-31 11:21:26

+0

再次,虽然你提供了有用的建议,但它并没有帮助解决他的问题。 – 2011-05-31 11:22:31

+0

@Alin我这次只是指向文档,这样他就可以有一些看法。当他没有提供'header'之前的代码 – RRStoyanov 2011-05-31 11:31:37

2

取决于你正在尝试做的。你想要重定向吗?如果是这样的话,你可以简单地使用header('Location: http://www.example.com/ ');,但如果你想有一个一定的时间之后刷新您可以使用:

header("refresh:5;url=wherever.php"); 
echo 'You\'ll be redirected in about 5 secs. '; 
echo 'If not, click <a href="wherever.php">here</a>.'; 

从那里得到的示例代码 - http://php.net/manual/en/function.header.php - 也许值得一读得。