我想使用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
答案 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;