使用PHP重定向页面会导致问题

时间:2011-02-21 13:15:45

标签: php mysql redirect

我有一个页面,其中包含一个php页面的链接,该页面从$ _GET获取数据并更新数据库。之后,它将用户返回到主页:

header("Location: http://localhost/");

事情是,这似乎“中断”了代码的mysql部分。如果我删除了这个重定向,数据库中的所有内容都会更新,但是当我把它放回去时,没有任何内容会更新...

这是数据库更新代码,我使用的是我的一个类作为mysql包装器:

$conn->where('hash',$data1['hash']);
$conn->update(TABLE_ITEMS,$newData1);

$conn->where('hash',$data2['hash']);
$conn->update(TABLE_ITEMS,$newData2);

说明:

- 页面上没有文字或echo(),<?php标记前没有空格

代码顺序:

  1. <?php$_SESSION
  2. 收到的数据
  3. 处理数据并将其放入数组
  4. 数据放入mysql数据库
  5. $_GET用于重定向页面
  6. 代码

    header();

4 个答案:

答案 0 :(得分:1)

如果在输出先前的内容时发送标题,则会出现可能导致脚本停止执行的错误。因此,如果标题位于更新之上,则可能根本不执行更新。无论您是否看到此错误,都取决于您的设置。

<?
echo 'yo';
header('Location: ....'); // <-- error

Update(); // Never gets executed

输出不必是echo。在开幕<?之前,它甚至可以是一个空格。

答案 1 :(得分:0)

没有看到很多代码,很难确定,但我的猜测是PHP页面继续完全正常工作。我建议可能会发生的是,重定向页面(即您的主页)本身正在进行一些数据库工作,这会覆盖原始页面所做的更改。

正如我所说的,在没有更多代码的情况下(或者甚至是有关数据的任何细节或网站的内容),这是一个非常疯狂的猜测,但我认为值得调查这种可能性。

答案 2 :(得分:0)

尝试将ob_start()放在文件的顶部。它有时会有帮助。在调用header()之前无法输出。 显示更多代码。认为错误是少的。

答案 3 :(得分:-1)

我不知道为什么会这样,但事实证明,如果我改变了这个:

header("Location: http://localhost/");

到此:

header('Location: http://localhost/');
一切正常。的古怪!!