Codeigniter сеанс устранения неполадок - PullRequest
0 голосов
/ 05 января 2019

Codeigniter сеанс работает хорошо на локальном компьютере, но не работает на хост-сервере . Нужна помощь Спасибо config.php

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 3600;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix']    = ""; 

$config['cookie_domain']    = ""; 
$config['cookie_path']  = "/"; 
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

autoload.php

$autoload['libraries'] = array('session', 'form_validation', 'database', 'upload', 'email', 'encryption');

home.php

public function konektion(){
    if(isset($_POST['ok']) && isset($_POST['email'])!=null && isset($_POST['passwd']) != null){
        $this->form_validation->set_rules('email','Email','required|valid_email');
        $this->form_validation->set_rules('passwd','Mot De Passe','required|min_length[4]');
        if($this->form_validation->run() == TRUE){
            $email = stripslashes(strtolower(($this->input->post('email'))));
            $passwd = stripslashes($this->input->post('passwd'));
            $salt = '$'.base64_encode('simo').'$'. do_hash($passwd, 'md5');
            $tab = array('login' => $email, 'password' => $salt);
            $tab1 = $this->UserModel->findOneUser($tab);
            if ($tab1['nbre'] == 1) {
                $sessiondata = array(
                        'userid'  => $tab1['iduser'],
                        'username'  => $tab1['nom'],
                        'status'  => $tab1['status'],
                        'login'  => $tab1['login'],
                        'role'  => $tab1['role'],
                        'logged_in' => TRUE
                );
                $this->load->library('session');
                $this->session->set_userdata($sessiondata);

                $data['page_title'] = 'Envol | Admin';
                $this->load->view('admin/index', $data);
            }
            else {
                    $data['msg']  = '<b>Invalid Email Or Password Entered</b>';
                    $data['page_title'] = "Admin Login";
                    $this->load->view("admin/login", $data);
                }

        }else{
            $this->index();
        }
    }else{
        $this->index();
    }
}

Это то, что у меня есть как код и конфигурация. При попытке получить доступ к $_session['userid] в любом контроллере или viex я получаю сообщение Неопределенный индекс: идентификатор пользователя

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Я думаю, что Бог решение.

  1. Перейти к system/libraries/Session/Session.php
  2. Найдите session_start() и прокомментируйте его, добавив //.
  3. Перейдите к строке около 316 под Безопасность - король и прокомментируйте этот код: ini_set ()

    // ini_set ('session.use_trans_sid', 0); //ini_set('session.use_strict_mode ', 1); //ini_set('session.use_cookies ', 1); //ini_set('session.use_only_cookies ', 1);

  4. Затем перейдите на свой основной index.php (корень index.php) CodeIgniter

  5. Добавьте session_start() вверху.
  6. Ниже session_start() добавить следующие строки, прокомментированные в Session.php

    ini_set ('session.use_strict_mode', 1);

    ini_set ('session.use_cookies', 1); ini_set ('session.use_only_cookies', 1); ini_set ('session.hash_function', 1); ini_set ('session.hash_bits_per_character', 4);

Я получил это от https://stackoverrun.com/fr/q/12557092

0 голосов
/ 07 января 2019

Здесь вы устанавливаете сеанс ..

if ($tab1['nbre'] == 1) {
                $sessiondata = array(
                        'userid'  => $tab1['iduser'],
                        'username'  => $tab1['nom'],
                        'status'  => $tab1['status'],
                        'login'  => $tab1['login'],
                        'role'  => $tab1['role'],
                        'logged_in' => TRUE
                );
                $this->load->library('session');
                $this->session->set_userdata($sessiondata);

                $data['page_title'] = 'Envol | Admin';
                $this->load->view('admin/index', $data);
            }

проблема в том, что ваши данные могут быть причиной того, что вы не экспортировали базу данных на сервер .. делайте что-то

if ($tab1['nbre'] == 1) {
 $sessiondata = array(
                            'userid'  => $tab1['iduser'],
                            'username'  => $tab1['nom'],
                            'status'  => $tab1['status'],
                            'login'  => $tab1['login'],
                            'role'  => $tab1['role'],
                            'logged_in' => TRUE
                    );
                    $this->load->library('session');
                    $this->session->set_userdata($sessiondata);
 echo 'is one  <pre>';
print_r($_SESSION);
EXIT;
 $sessiondata = array(
                            'userid'  => $tab1['iduser'],
                            'username'  => $tab1['nom'],
                            'status'  => $tab1['status'],
                            'login'  => $tab1['login'],
                            'role'  => $tab1['role'],
                            'logged_in' => TRUE
                    );
                    $this->load->library('session');
                    $this->session->set_userdata($sessiondata);
} else {
echo 'is '.$tab1['nbre'].' ... unable to set session;  
EXIT;
}
0 голосов
/ 05 января 2019

Не могли бы вы проверить настройки Codeigniter:

application / config / autoload.php

$autoload['libraries'] = array('database', 'session', 'user_agent');

и application / config / config.php

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_save_path'] = 'ci_sessions';

Продолжайте в том же духе!

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