不带标头()或元数据的PHP重定向

不带标头()或元数据的PHP重定向,php,redirect,header,require,Php,Redirect,Header,Require,我正在尝试设计一个页面,它执行一些数据库操作,然后将用户重定向回他们来自的页面。问题是,我使用了require()函数来获取到数据库的连接,因此已经发送了头。元标记是不可能的,因为我希望它看起来像所有的进程都是从它们来自的页面完成的。有什么建议吗?我有没有办法使用require()和标题()或者我必须删除一个?是否有header()的替代方法?在某些内容已发送后,您无法发送任何标题。将header()调用移动到require()调用之前。如果在发送某些内容之前无法发送header(),请通过放置

我正在尝试设计一个页面,它执行一些数据库操作,然后将用户重定向回他们来自的页面。问题是,我使用了
require()
函数来获取到数据库的连接,因此已经发送了头。元标记是不可能的,因为我希望它看起来像所有的进程都是从它们来自的页面完成的。有什么建议吗?我有没有办法使用
require()
标题()
或者我必须删除一个?是否有
header()
的替代方法?

在某些内容已发送后,您无法发送任何标题。将
header()
调用移动到
require()
调用之前。

如果在发送某些内容之前无法发送
header()
,请通过放置
ob_start()使用。这样,任何内容都将存储在缓冲区中,直到脚本结束或手动发送缓冲区内容时才会发送


另一方面,简单地
require
ing另一个文件不会生成任何标题/内容,除非包含的脚本发送它们。最常见的“隐藏”原因是
标记之前或之后未被注意到的空白。

在将任何数据发送到客户端后,您无法发送标题

但是,使用
require
并不要求您输出某些内容。如果我理解你的权利,你可以包括你的数据库文件,运行你的查询,然后重定向用户。这是完全正确的


如果需要发送一些输出(如果需要重定向,为什么要这样做?),另一个选项是使用输出缓冲。通过使用输出缓冲,在回显数据时不会将数据发送到浏览器,而是将其存储在缓冲区中。数据将在您调用或到达脚本末尾时发送。之后,您将无法发送任何新标题。开始输出缓冲时使用。

如Artefactor所述,连接到数据库不需要任何输出。修复您包含的任何内容(例如database_connect.php),使其不输出。请参阅“已发送邮件头”问题,这可能有助于您查找“隐藏”输出。

ob_start();//启动输出缓冲

echo“当我使用输出缓冲时,可以将
header()
require()
一起使用。这意味着整个脚本将被缓冲,并在脚本结束时首先发送

我就是这样做的

ob_start("ob_gzhandler");  //begin buffering the output

require_once('/classes/mysql.php');

// Some code where I access the database.

header('/somepage.php');
exit;

ob_flush(); //output the data in the buffer

与数据库的连接如何发送头?我不发送输出。
require()
似乎会自动发送标题。我没有输出文本。这不可能,因为脚本必须执行一些数据库操作,然后重定向。你完全正确。我在所需文件中的结束php标记后发现了一个额外的空间。哦,缓冲区就是这样做的。我永远也不知道。
ob_start("ob_gzhandler");  //begin buffering the output

require_once('/classes/mysql.php');

// Some code where I access the database.

header('/somepage.php');
exit;

ob_flush(); //output the data in the buffer