PHP无法修改表头信息,关于php:无法修改标头信息-标头已由发送

本问题已经有最佳答案,请猛点这里访问。

Contact Us

if( isset($_POST['button2']))

{

if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) )

{

$name = $_POST['name'];

// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.

session_destroy();

header("Location: contactdb.php");

?>

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-网站中已发送标头(在网站上开始输出)

警告:无法修改标头信息-网站中已经发送过的标头(从网站开始输出)

谁能帮我?

提前致谢....

考虑包括他的文件,而不重定向到它。

会话警告呢?

只需将标头函数放在任何HTML之前。

开始会话需要设置HTTP标头

发送内容后就不能发送标题

和?>之外的任何内容都构成内容(echo,print等的任何内容也是如此)

将您的会话代码移到脚本的顶部。

大卫,您好,我在页面的开头移动了session_start(),但仍收到相同的警告。

@Rachel您是否将整个代码块移至页面的开头?

信不信由你,header函数还会发送在内容之后无法显示的标头。

我无法移动代码if(isset($ _ POST [button2])){if($ _SESSION [security_code] == $ _POST [security_code] &&!empty($ _ SESSION [security_code]))),因为它用于检查是否验证码是否正确填写。因为如果正确填充,则应该仅将用户重定向到下一页。

@Rachel您绝对可以并且必须将其放在页面顶部。输出HTML后,您将无法启动页面重定向。如果验证码不匹配,您可能必须重新编写整个内容才能显示错误消息,但是在输出任何内容之前必须先输入header()命令。

它将如何检查验证码安全性?我不明白你在说什么

我将这段代码放在页面的开头,然后我把这段代码; ?>但仍然是相同的输出:(

我真的不知道验证码的工作方式,但可以肯定的是:这不会涉及加载半页,暂停PHP脚本,等待用户键入验证码答案然后恢复页面。 HTTP不能那样工作。通常,您会在表单的一页上显示验证码,然后,一旦用户点击"提交"以发出新的HTTP请求,则另一个脚本将处理该结果。

所有与会话,Cookie,Header()等(所有修改HTTP标头的操作)都必须在脚本的首次输出之前完成...将php块放在标记之前

if( isset($_POST['button2']))

{

if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) )

{

$name = $_POST['name'];

// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.

session_destroy();

header("Location: contactdb.php");?>

Contact Us

发送头之前,请使用输出缓冲来防止输出。

function callback($buffer) {

// заменить все apples на oranges

return (ereg_replace("apples","oranges", $buffer));

}

ob_start("callback");

//HERE you can send any headers you want. callback is not required here if you don't want

?>

It's like comparing apples to oranges.

//And here you can

ob_end_flush();

//If send headers here - you'll get warning

?>

通常,在开始输出内容之前,请先执行所有业务逻辑(例如会话管理)。

如前所述,开始打印页面内容将自动发送标题。

警告:session_start()[function.session-start]:无法发送会话缓存限制器-网站中已经发送了标头(在网站上开始输出)

Warning: Cannot modify header information - headers already sent by (output started at website) in website

关于这两个问题:

---使用会话开始于您的代码顶部。在此之前,您可以使用ob_start()清除输出缓冲区。

喜欢,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值