在codeigniter中从CLI运行脚本时阻止cookie

geo*_*per 2 php command-line codeigniter

有没有办法阻止会话类在从命令行调用时设置cookie并在数据库中添加记录?

Tre*_*xXx 6

我认为最简单的方法是扩展Session类,如下所示:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Session extends CI_Session
{
    public function __construct()
    {
        $CI = get_instance();

        if ($CI->input->is_cli_request())
        {
            return;
        }

        parent::__construct();
    }
}
Run Code Online (Sandbox Code Playgroud)

只需将其放在application/libraries文件夹中即可.并使用这样的控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller
{
    public function no_cli_session()
    {
        $this->load->library('session');
        $this->session->set_userdata('logged', 'yes');
    }
}
Run Code Online (Sandbox Code Playgroud)

当您从浏览器调用该功能时,会话已设置,当您从cli调用它时,它不会.