php中的页面重定向问题

时间:2011-05-11 10:27:51

标签: php

我想使用php从登录页面重定向到我的主页面。 我使用以下代码行:header('location:index.php'); 尽管重定向,我收到的错误如下:

Warning: Cannot modify header information -
headers already sent by (output started at C:\wamp\www\student\login.php:18)
in C:\wamp\www\student\login.php on line 19

6 个答案:

答案 0 :(得分:1)

如果您在header()功能之前打印某些内容,则会发生此错误。

例如:

<?php
echo 'test';
header('location:index.php');
exit;
?>

甚至:

<html>
  <head> .....
<?php
echo 'test';
header('location:index.php');
exit;
?>

你必须在任何给你输出的操作之前移动这段PHP代码。

您还可以执行以下操作,但这是您应该尝试的第二种方式:

<?php
echo 'test';
ob_start();
flush();
header('location:index.php');
exit;
?>

答案 1 :(得分:0)

您需要通过插入

打开输出缓冲区
ob_start();

在php代码的第一行

答案 2 :(得分:0)

如果您已经在页面上“回显”或“打印”了任何内容,无论是在您的脚本内部还是在任何一组PHP标记之外,那么您就不能再发送任何标题了。这是您的错误消息说明的内容。

此外,您应该(尝试)在位置标记中使用完整路径,SEO最好为您网站上的每个链接使用完整网址,更不用说重定向了。

答案 3 :(得分:0)

确保在输出任何响应之前调用标题函数,例如必须在任何echo函数或print_r之前调用header()函数,尝试删除&lt;?php开始标记之前的空格。

答案 4 :(得分:0)

很难确定构成页面输出的内容。我试图通过删除所有&#34; echo&#34;,&#34;打印&#34;来消除我的问题。等,但无法使重定向工作。我认为返回的SQL查询存在问题。添加缓冲液并冲洗它可以解决问题。

答案 5 :(得分:0)

您需要通过逐行检查header_sent()来确定是否已经发送了标头,它将返回true或false。如果已经发送,则无法使用header()。尝试meta http-equiv =&#34;刷新&#34; content =&#34; 0;网址=&#39;您的网址&#39;&#34; /.Don't忘记添加打开和关闭标签。&lt;&gt;