0

可能重复:
PHP 已发送的标头

这是我当前的脚本。页面不会像我希望的那样重定向,而是刷新到当前页面。该页面曾经可以工作,但最近无缘无故停止工作。我在 PHP 5.3

<?php
$page = "Edit Topic";
require('top.php');
$var = safe($_GET['id']);
$q = mysql_query("SELECT * FROM `topics` WHERE `id`='".$var."'");
$r = mysql_fetch_array($q);
$c = mysql_num_rows($q);
$user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id`='".$_SESSION['id']."'"));

if($c==0) {
     echo "<p>This topic does not exist.</p>";
} elseif($_SESSION['name'] != $r['poster'] && $user['rank'] == "Member") {
     echo "<p>This is not your topic.</p>";
} else {
     if(isset($_POST['enter'])) {
          $title = safe($_POST['title']);
          $post = safe($_POST['post']);

          if($post=='' || $title=='') {
               $message = "You have to write something in your title and post.";
          } else {
               mysql_query("UPDATE `topics` SET `text`='".$post."' WHERE `id`='".$r['id']."'");
               mysql_query("UPDATE `topics` SET `title`='".$title."' WHERE `id`='".$r['id']."'");
               header("Location: http://www.domain.com/view-post/".$r['id']."");
          }
     }
}
?>
4

4 回答 4

2

在调用 header 之前,您不能产生任何其他输出。你的问题是这一行:

echo "<h1>Edit Topic</h1>";
于 2013-01-12T22:17:29.310 回答
1
  1. 在标头()之后退出()
  2. 验证您的 top.php 是否没有输出(因为在向客户端写入内容之后您无法更改标头在 mysql_-calls 之前使用 @ (例如@mysql_query
  3. 使用准备好的语句和 php 中的 mysqli-extension
  4. 尝试使用没有 BOM 的 utf-8 文件,它们让很多人疯狂
于 2013-01-12T22:31:50.977 回答
0

您有一个echo发送前的标头。删除以下行:echo "<h1>Edit Topic</h1>"; header函数仅在第一次输出之前有效。

于 2013-01-12T22:16:30.613 回答
0

您应该使用绝对网址而不是相对网址,并且exit()header().

于 2013-01-12T22:16:36.620 回答