Моя веб-программа создает новый сеанс каждый раз, когда открывает новую страницу в php с помощью Codeigniter - PullRequest
0 голосов
/ 30 января 2020

Я попытался сделать session.auto_start = On в .user.ini .. моя программа находится в хосте. Я хочу разместить кнопку в навигационной панели, чтобы скользить между фарси и английским sh. Когда кнопка нажата, она отправляет $_GET['lang']. и когда lang установлен, он меняет язык на количество этого. если $_GET['lang'] не установлено, по умолчанию оно остается «eng». когда я получаю session_id();, это показывает, что это делает сессию, а также показывает, что это идентификатор. и в моем session_save_path (); я вижу это . но я не знаю, почему, когда я обновляю sh страницу, она не продолжает ту предыдущую сессию и создает новую. Я попытался поставить session_start (); Функция сразу после конструктора MY_Controller. MY_Controller - это класс, который я создал в application/core/, и все мои контроллеры унаследованы от него. и я сделал один контроллер для каждой страницы, кроме входа в систему, в котором контроллер входа управляет страницей входа и регистрации. Вот некоторые части My_Controller:

   function __construct() {
     parent::__construct();
     //phpinfo();
    //$this->lang->load("public" , "fa");
     //$this->session_fixer();
     self::setTables();
     $this->load->library('form_validation');
     $this->load->helper('myform_helper');
     $this->setlang();
     //echo $_SESSION['lang'];
     self::set_scope_constants();
     $this->load->library('Template');
     //$this->load->library('database');
     $this->lang->load('public_lang' , 'fa');
     $this->load->helper('url');
     $this->message = array();
     if(isset($_SESSION['user_id'])){
      //echo "RAN";
      $this->user_logged_in(true);

     }
   }
   function setlang(){
       if(isset($_GET['lang'])){
           if(secure_input(get('lang'))){
               if($_GET['lang'] == 'fa'){
                    $this->langchange('fa');
                       //echo "Hello";
               }else{
                   $this->langchange();
               }
               //$_GET['lang'] = '';
           }else{
               //$this->langchange('eng');
               $_SESSION['lang'] = $this->wlang;
           }
       }
   }
   public function langchange($value = ''){
       if($value == ''){
               $_SESSION['lang'] = 'eng';
                  //echo $_SESSION['lang'];
       }else if($value == 'fa'){
               $_SESSION['lang'] = 'fa';
                  //echo $_SESSION['lang'];
       }
       $this->wlang = $_SESSION['lang'];
       //echo "Hello";
       //header("Refresh:0");
   }
   private function session_fixer(){
    if(!isset($_SESSION))
    { 
        session_set_cookie_params(time() + $this->config->item('sessionlifetime'),'' ,'' , true , true );
        session_start();
        //echo session_id();
        //echo "MigMig";
    }else{
        setcookie(session_name(),session_id(),time()+$this->config->item('sessionlifetime') , '' , '' , true , true);
        session_start();
        //echo "HElll";
        //echo session_id();
    }
   }

я сделал $this->session_fixer(); комментарий после поворота session.auto_start = on

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...