Одинаковые маршруты псевдонимов для многопользовательского CodeIgniter

#php #codeigniter

#php #CodeIgniter

Вопрос:

У меня есть два пользователя, если они вошли в систему, для каждого пользователя должна появиться отдельная панель мониторинга. Я хочу, чтобы URL-адрес маршрутов отображался не как имя функции, а как пользовательское имя, например, /dasboard или более похожее на это http://localhost/project/dashboard/ для двух из них (пользователей). для этого я попытался установить Routes.php , как показано ниже:

 $route['dashboard'] = 'admin/index';
$route['dashboard'] = 'user/index';
 

Но результат ничего не отображает для пользовательского / индексного маршрута, я допустил ошибку или я что-то пропустил?

Ответ №1:

когда пользователь входит в систему, задайте значение сеанса, к какой группе он принадлежит, например: $_SESSION['group']='admin'; или $_SESSION['group']='user';

теперь в ваших маршрутах ваш 2-й маршрут не имеет никакого эффекта, поскольку

Маршруты будут выполняться в том порядке, в котором они определены. Более высокие маршруты всегда будут иметь приоритет над более низкими.

но вы можете сделать их динамическими, проверяя свои сеансы:

 if( isset($_SESSION['group']) amp;amp; $_SESSION['group']=='admin'){
  $route['dashboard'] = 'admin/index';  // logged in as admin
}elseif( isset($_SESSION['group']) amp;amp; $_SESSION['group']=='user'){
  $route['dashboard'] = 'user/index';  // logged in as user
}else{
  $route['dashboard'] = 'login';  // not logged in, send to login 
}
 

Комментарии:

1. я заменил [‘group’] на мой set_userdata и использовал код выше только одного параметра (не использовать параметр после amp;amp;), но его отображение страницы 404 не найдено

2. isset($_SESSION['group']) проверяет, существует ли параметр сеанса, и amp;amp; $_SESSION['group']=='admin' проверяет, является ли параметр сеанса администратором . Если вы опустите это, это не сработает. Скорее всего, вы попали в предложение else, и, поскольку у вас, возможно, еще не определен логин контроллера, вы получаете ошибку 404

3. я снова использовал два параметра, и да, я определил его при входе в контроллер redirect('dashboard'); , но страница 404 все еще не найдена

4. проверьте, соблюдаете ли вы все правила именования (имена классов с заглавной буквы, имена файлов с заглавной буквы для контроллеров и моделей. Также, если вы вызываете файл представления в своем контроллере, который не существует: 404, и если ваш baseurl установлен неправильно, 404, или если ваши системные / прикладные настройки в вашем маршруте index.php ошибаются: 404