无法发送会话缓存限制器/无法修改标头信息

时间:2018-11-03 00:07:28

标签: php

我对PHP非常陌生。编码我的第一个网站。

index.php

<?php
session_start();
?>   
<!DOCTYPE html>
<html lang="en">
   <form action="authenticate.php" method="post">
     //form inputs
   </form>
  </body>
</html>

该表单调用authenticate.php:

<?php
session_start();

//Authenication work
//...
// line 43 here
if(!$authen){
  include_once("index.php");
}
else{
  header('Location: main.php');
  exit();
}
?>

无论何时我运行网站并登录,只要单击表单中的提交按钮,我便会在浏览器中重定向到{而不是重定向到main.php {1}},我看到了:

enter image description here

图片中的文字:

authenticate.php

我的Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/projet/authenticate.php:1) in /var/www/html/projet/authenticate.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/projet/authenticate.php:1) in /var/www/html/projet/authenticate.php on line 51 代码(应该重定向到该页面):

main.php

到目前为止我尝试过的事情:

  1. 确保session_start()位于每个页面的开头
  2. <?php session_start(); ?> <html> <head> ... 之前和<?php之后修剪所有可能的空白

我越来越绝望了。 请注意,相同的网站和文件在wampserver上本地工作,但是当我将它们放在服务器上时,会发生

我想念什么吗?抱歉,我完全不熟悉PHP ,而且我正在学习。

还有问题:

  1. PHP文件中的注释是否算作空格?
  2. PHP文件中的条件缩进是否算作空格?

1 个答案:

答案 0 :(得分:2)

有2种类型的UTF-8编码类型。一种带有BOM(字节顺序标记),另一种没有。如果您未指定 without 字节顺序标记,则存在问题。它应该没有BOM。

您需要重新保存所有没有它的文件。

参考文献:

字节顺序标记是看不见的字符集,也可以说明在标头之前的输出。