【发布时间】:2014-07-01 23:43:42
【问题描述】:
每次我在 PHP 中创建网站或应用程序时,我都必须使用 header() 函数将人们从一个页面重定向到另一个页面,但是由于典型的标题几乎总是在我发现自己不得不使用减慢输出缓冲函数之前发送这页纸。要么就是这样,要么抑制“标头已发送”错误。我真的找不到任何可以在 PHP 中构建应用程序而不必违反两者的示例。
我想了解更多,关于一些如何在不使用输出缓冲的情况下重定向到页面。
编辑
这是一些人认为是可能的。
<?php
$stack_errors = NULL;
if($_POST && isset($_POST['username']) && isset($_POST['password'])){
$stmt = $pdo->prepare('SELECT * FROM users where username = ? AND password = ?');
$stmt->execute(array($_POST['username'], $_POST['password']);
if($stmt->rowCount() == 0){
$stack_errors = 'error, username or password is incorrect';
}else{
$stack_errors = false;
}
}else{
$stack_errors = 'please enter username and password to log in';
}
if(false === $stack_errors){
header('Location: /success.php');
exit;
}
?>
<html>
<head></head>
<body>
<form>
<input ...>
<input ...>
<?php if($stack_errors){
echo $stack_errors;
}
<form>
【问题讨论】:
-
是的,这是可能的,只是在任何事情之前发送标题
-
相信我们,这是可能的。除非您无法控制代码,并且您被雇用只接触一小部分代码。为什么不提供示例代码?
-
请注意,抑制“标头已发送”错误并不能解决问题。即使您禁止显示该消息,您的自定义标头仍将被忽略,因为发送它为时已晚。
-
如果您的
header()调用位于文件开头的<?php块中,则项目的大小并不重要。听起来您是在说您的示例代码没有显示问题,所以仍然不清楚您到底遇到了什么问题。 -
你问过怎么做,人们告诉你怎么做,你说“不,这不可能”。如果您确信在
header()调用之前无法避免输出,那么请删除您的问题(因为它没有可能的答案)并停止浪费每个人的时间。
标签: php