重定向查询不起作用

时间:2010-07-07 08:29:41

标签: php mysql

如果用户($ uid)在过去一小时内提交了一个条目,则下面的代码应该将用户重定向到索引文件。它不起作用。

知道为什么不呢?

提前致谢,

约翰

$queryuidcount = "select loginid from submission where datesubmitted > (NOW() - INTERVAL 1 hours) AND loginid = '$uid'"; 
$uidresult = mysql_query($queryuidcount);

if (mysql_num_rows($uidresult) >= 1)
{

   session_write_close();
   header("Location:http://www.domain.com/sample/index.php");
   exit;

}

4 个答案:

答案 0 :(得分:4)

首先,Location:http://someurl之间应该有一个空格,否则它不是正确形成的HTTP标头(某些浏览器可以应对,有些会阻塞它):

Location: http://someurl

其次,您是否收到“已发送标头”警告?这意味着您已经在此行之前开始输出(例如文件开头的空格,UTF BOM标记等)

答案 1 :(得分:2)

您似乎忘记将session_start()放在脚本之上,因为您正在使用下面的sessio相关功能。此外,无需指定整个域路径,只需文件名即可:

header("Location: index.php");

如果有任何错误,您可以通过将这些行放在脚本之上来了解它:

ini_set('display_errors', true);
error_reporting(E_ALL);

还要确保返回一些记录:

if (mysql_num_rows($uidresult) >= 1)
{
   exit('found rows !!');
}

答案 2 :(得分:0)

代码是否甚至到达if语句中的代码?试试吧 var_dump("foo"); 在那里,因为我认为标题看起来不错。 可能是出口;虽然干扰了重定向。 祝你好运!

答案 3 :(得分:0)

SQL代码似乎不正确。改为将小时改为小时。

(NOW() - INTERVAL 1 hour)

也许您可以使用TIMEDIFF吗?

mysql> select TIMEDIFF('2010-07-07 09:38:28',NOW()); 
+---------------------------------------+
| TIMEDIFF('2010-07-07 09:38:28',NOW()) |
+---------------------------------------+
| -01:03:38                             |
+---------------------------------------+
1 row in set (0.00 sec)