输出html后的PHP session_start

时间:2016-05-13 21:38:21

标签: php

我到处都在阅读为了使会话正常工作,必须在输出任何html之前调用session_start

例如,这个问题:"Cannot send session cache limiter - headers already sent"

但是,这个例子没有这样做,它可以工作:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <title>Counting with the SESSION array</title>
</head>
<body>
<FORM action="counter-session.php" method="GET">
<INPUT type="submit" name="Count" value="Count">
<?php
   session_start();
   if (! isset($_SESSION['counter']))
      $count = 0;
   else
      $count = $_SESSION['counter'];
   $count = $count + 1;
   $_SESSION['counter'] = $count;
   echo "count is $count";
?>
</FORM>

</body>
</html>

也就是说,计数器按预期递增。怎么样?

添加问题:调用session_destroy后,存储到$_SESSION的任何其他数据都不会被保存(即$_SESSION的进一步更改将不会反映到下一个我们何时使用另一页的$_SESSION变量??

1 个答案:

答案 0 :(得分:1)

我刚测试了它,情况确实来自输出缓冲。

如果您想查看它,只需在开始会话前添加ob_end_flush();即可。