标头已经与require一起发送

时间:2013-04-12 12:25:42

标签: php curl header include

我正在使用curl编写一个登录页面,所以我需要将一些变量添加到名为action.php的下一页。

这是我的代码:

global $var1;
global $var2;

if(isset($match[1][0])){
mail($send,$subject,$message,$headers);
header('Location: page1.php');}else{
header('Location: page2.php');}

page1.php

require('action.php');

echo $var1;

echo $var2;

它没有让我得到变量。

我也看到

Warning: Cannot modify header information - headers already sent by (output started at on page1.php

任何建议?

3 个答案:

答案 0 :(得分:0)

如果您已将任何内容写入屏幕,则无法使用标题重定向。

所以,即使你正在做echo "hello"或者<html>之前,header命令也行不通,要么在输出重定向后使用javascript重定向,要么使用输出缓冲来允许你发帖子输出重定向,因为它只会在你告诉它时写出缓冲区。

希望有意义

答案 1 :(得分:0)

这是PHP Manual

  

请记住,在任何实际输出之前必须调用header()   通过普通HTML标记,文件中的空行或PHP发送。   使用include或require读取代码是一个非常常见的错误,   函数或其他文件访问函数,并且有空格或空   调用header()之前输出的行。一样的问题   使用单个PHP / HTML文件时存在。

亲自看看你哪里出错了。

编辑:您可以通过将值设置为$ _SESSION []并在另一侧读取它来传递变量。

答案 2 :(得分:0)

您已经回答了有关警告的问题(在使用header()之前不要发送任何输出),但是没有在页面之间传递数据的问题没有。

在2个PHP脚本之间无法访问全局变量 - HTTP is stateless

使用会话或其他方法在两个页面之间访问数据。

session_start();
$_SESSION['var1'] = 'some value';
$_SESSION['var2'] = 'some value';

if(isset($match[1][0])){
    mail($send,$subject,$message,$headers);
    header('Location: page1.php');
}else{
    header('Location: page2.php');
}

session_start();
require('action.php');
echo $_SESSION['var1'];
echo $_SESSION['var2'];