【问题标题】:Error after ending a session结束会话后出错
【发布时间】:2013-12-16 18:04:44
【问题描述】:

我做了一个只有登录后才能访问的页面。现在我做了一个注销按钮,它可以工作,但我在注销后得到一条错误消息。重定向在两秒钟后起作用,会话结束,但我仍然收到以下错误:

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已在 /home/u200098000/public_html/ 中发送(输出开始于 /home/u200098000/public_html/logout.php:2)第 3 行的 logout.php

这是我的代码:

<?php
 session_start();
 session_destroy();


echo "<h1>You succesfully logged out</h1>";
echo '<p> If you are not redirected automatically please click <a href="index.html">here</p>';

echo '<script>';

echo 'redirectTime = "2000";';
echo 'redirectURL = "/index.html";';
echo 'setTimeout("window.location = redirectURL",redirectTime);';

echo '</script>';


?>

非常感谢您的帮助。

【问题讨论】:

  • 删除代码开头的空格,包括任何文件的开头。
  • stackoverflow.com/questions/8812754/… 接受的答案是在开始会话之前不向浏览器发送任何内容。 (就像在呼应什么)

标签: php session


【解决方案1】:

Headers already sent通常表示在会话开始之前已经发生了某种输出。在调用session_start() 之前,检查任何具有任何类型空格的文件并确保您没有执行任何printecho 等命令。即使包含文件开头或结尾的尾随空格也可能导致这种情况发生。很多个月前让我印象深刻的是,在结束 ?&gt; PHP 标记之后,包含文件底部的一个空行。

【讨论】:

  • 完全正确,我将使用您在第一行
【解决方案2】:

要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()

确保在这些行之前没有任何内容输出到浏览器,并从该代码中删除任何不必要的空格。该错误意味着您向浏览器输出了一些内容

【讨论】:

  • 看起来 OP 在 &lt;?php 标记之后确实使用了它。 OP 需要做的是确保在会话调用之前没有输出。 session_start()如果需要可以调用1000行,只是不能在输出开始后调用。
猜你喜欢
  • 1970-01-01
  • 2015-03-30
  • 2013-04-22
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2015-02-04
相关资源
最近更新 更多