Сохранение состояний навигации приложения в угрозе безопасности сеанса? - PullRequest
0 голосов
/ 22 декабря 2011

Я обнаружил, что когда я занимаюсь разработкой приложений, мне тяжело в заднице сохранять текущее состояние навигации или значение строки URL / запроса, когда я использую разные методы.

Я использую codeigniter framework и переписывание URL

например:

Я использую классы и методы через URL:

example.com/class/method/item_id

скажем, я использую метод, который загружает новое представление или состояние навигации в мое приложение

example.com/class/viewpage/10

Теперь скажите, что я хочу запустить другой метод на странице, которую я только что загрузил. Ну, я не могу использовать тот же универсальный код, который обрабатывает все запросы, потому что вместо метода viewpage будет запущен новый метод.

example.com / класс / newmethod

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

$_SESSION['currentview']  = $this->_view;

Это нормально? Существуют ли какие-либо проблемы безопасности, о которых я не знаю или которые действительно являются целью $_SESSION ...

Я программист-самоучка, поэтому, если это глупый вопрос, заранее извиняюсь.

1 Ответ

1 голос
/ 23 декабря 2011

Я бы не использовал $ _SESSION для хранения состояния навигации. Состояние навигации должно определяться используемым методом. Обычно я устанавливаю текущее состояние nav в методе конструктора класса контроллера.

Итак, в вашем контроллере:

class Items extends APP_Controller {

  function Items(){

    $this->current_nav = 1;
  }

  function viewpage(){

    $this->load->view('page', array('current_nav' => $this->current_nav))
  }
}

Устанавливает состояние вашей навигации для всех методов этого контроллера. Тогда по вашему мнению:

<ul id="nav">
  <li <?= $current_nav == 1 ? 'class="active"' : '' ?>>Nav 1</li>
  <li <?= $current_nav == 2 ? 'class="active"' : '' ?>>Nav 2</li>
  <li <?= $current_nav == 3 ? 'class="active"' : '' ?>>Nav 3</li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...