Ответ 1
Вы не можете использовать db_session в routes.php, потому что route.php анализируется до загрузки db_session. Возможно, вы должны создать базовый контроллер и перенаправить с конструктора базового контроллера.
Я использую следующий код для извлечения переменной сеанса в routes.php
if($this->db_session->userdata('request_url')!="")
{
$route['user/(:any)'] = "search_user_name/redirect_url/".$_SESSION['request_url'];
$this->db_session->unset_userdata('request_url');
}
else {
$route['user/(:any)'] = "search_user_name/index/$1";
}
переменная сеанса будет установлена в template/header.php
$this->db_session->set_userdata('request_url', $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]);
Вы не можете использовать db_session в routes.php, потому что route.php анализируется до загрузки db_session. Возможно, вы должны создать базовый контроллер и перенаправить с конструктора базового контроллера.
Исправьте меня, если я ошибаюсь. Вы можете использовать крючки. Ключи пользователя Codeigniter
Вы можете использовать базу данных в маршрутах и поместить свой маршрут в базу данных. Вот пример:
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$table2 = $db->dbprefix.'lang';
$query2 = $db->get( $table2 );
$result2 = $query2->result();
foreach( $result2 as $row )
{
$fields = $db->list_fields($table2);
$findme = 'code';
foreach($fields as $field):
$pos = strpos($field, $findme);
if($pos !== false and $row->$field != ''):
$route[''.$row->$field.''] = 'main/setlang/$1';
endif;
endforeach;
}