【问题标题】:Redirecting Pages with PHP causing problems使用 PHP 重定向页面导致问题
【发布时间】:2011-07-01 06:50:33
【问题描述】:

我有一个页面,它有一个指向 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. 从$_SESSION 和$_GET 收到的数据
  2. 数据处理并放入数组
  3. 数据放入mysql数据库
  4. header(); 用于重定向页面

代码

<?php
require_once('config.php');
import();

if ( isset ( $_GET['g'] ) && isset ( $_SESSION['itemA'] ) && isset ( $_SESSION['itemB'] ) ) {
$itemA = $_SESSION['gameA'];
$itemB = $_SESSION['gameB'];

$newData1 = processData($itemA);
$newData2 = processData($itemB);

$conn->update(TABLE_ITEMS,$newData1);

$conn->update(TABLE_ITEMS,$newData2);

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

} else {
    header('Location: http://localhost/');
}

【问题讨论】:

  • 你具体想看什么?
  • 自行发送标头不会停止执行...我能想到的唯一可能相关的问题是在关闭会话之前重定向不允许保存它...
  • 序列呢?因为当您添加 header(.. 部分时不会执行数据库语句,我想在您尝试更新数据库之前调用了 header(.. 行,请查看并告诉我们。
  • 我已经在问题中添加了序列。
  • 发代码真的有那么难吗?

标签: php mysql redirect


【解决方案1】:

如果您在输出之前的内容时发送标头,您将收到可能导致脚本停止执行的错误。所以如果头部在更新之上,更新可能根本不会执行。是否看到此错误取决于您的设置。

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

Update(); // Never gets executed

输出不必是echo。它甚至可以是开头&lt;?之前的一个空格。

【讨论】:

  • 更新在 header() 之前,没有 echo 语句。问题是 header() 正在工作,但 MYSQL 更新没有通过
【解决方案2】:

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

正如我所说,在没有更多代码(甚至没有任何有关数据或网站功能的详细信息)的情况下,这是一个相当疯狂的猜测,但我认为值得研究这种可能性。

【讨论】:

    【解决方案3】:

    尝试将ob_start() 放在文件顶部。它有时会有所帮助。在调用 header() 之前不能输出。 显示更多代码。少去思考问题所在。

    【讨论】:

      【解决方案4】:

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

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

      到这里:

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

      一切正常。 奇怪!!

      【讨论】:

      • WTF?没有区别。 -1.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2020-09-01
      相关资源
      最近更新 更多