PHP的session_start功能和CLI(PHP session_start function

2019-10-22 06:01发布

在PHP CLI使用的功能在session_start打印下一个警告: session_start(): Cannot send session cookie - headers already sent by (output started at /home/robi/p/test.php:1) in /home/robi/p/test.php on line 2 ,为什么?

我想记录在一个变量中的所有客户端条目,并检查了这一点,看看我通过比较时间用户最后一个条目和电流输入的时间得到一个特定的远程地址伪造的! 我是不是做错了?

这里是我的代码:

<?php 
session_start();
//$entries = array();
//$client_address = $_SERVER["REMOTE_ADDR"] . ':' . $_SERVER["REMOTE_PORT"];
//$client_entry = time();
//array_push( $entries, $client_entry );
$client_entry = time();
$_SESSION["entries"][] =  $client_entry;
$entries = $_SESSION["entries"];


$check_out = array_filter(
    $entries,
    function($value) use($client_entry) {
        return ($value >= ($client_entry + (1 * 0.6)));
    }
);

Answer 1:

你的问题是,除了它是没有意义的CLI来使用会话,该输出已经事先开始session_start();

正如我在你的代码中看到,你的代码直接开始session_start(); ,我相信你之前有一些字符<?php 。 确保<?php是你的文件的第一行(所以也没有空行上面),并且有在它前面的任何操作(如空格)。

这应该可以解决您遇到这个问题。



Answer 2:

这个错误来自的第一行,所以你应该试着将文件转换为UTF-8无BOM 。

引用维基百科的文章 :

字节顺序标记(BOM)是用于发信号通知的文本文件或流的字节序(字节顺序)Unicode字符。

该字符发送到输出流,所以你不能重新定义页眉( session_start设置在头一个cookie)。



文章来源: PHP session_start function and CLI