Скрыть строку запроса в коде воспламенителя - PullRequest
0 голосов
/ 26 марта 2012

Можно ли скрыть строку запроса от URL при перезагрузке страницы.

У меня есть ссылка на моей домашней странице, которая меняет язык сайта, ссылка выглядит следующим образом

<a href="<?php echo base_url(); ?>home/box/<?php echo $template_data['box_id'] ?>/<?php echo $lang['language_name'] ?>/?id=<?php echo $_GET['id'] ?>&lid=<?php echo $lang['language_id'] ?>">

Я хочу скрыть идентификатор и крышку от моего URL при перезагрузке страницы Я не могу использовать сеанс и куки, потому что мое кодирование выполнено таким образом, что их невозможно использовать

Любая другая возможность?

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 05 апреля 2012

Зачем скрывать URL или его части?Давайте рассмотрим пример: http://www.sturm.xxx:8080/client/index.php/c_registration/modify_my_account/12

После входа пользователь может изменить свои регистрационные данные (пароль, адрес электронной почты и т. Д.).В ссылке выше число 12 является идентификатором пользователя.Если пользователь достаточно умен, переписывает идентификатор пользователя, и вуаля, может украсть или изменить личные данные другого пользователя.

0 голосов
/ 26 марта 2012

Вам нужно перенаправить снова, чтобы удалить часть запроса.Или переписать URL путем маршрутизации и сделать его похожим на http://example.com/home/box/<temp>/<lang>/<id>/<lang_id>

и из переменных перехвата контроллера с помощью $this->uri->segment(n)

Но я не вижу смысла скрывать запрос

0 голосов
/ 26 марта 2012

Почему бы вам не использовать какую-то двухстороннюю кодировку? http://codeigniter.com/user_guide/libraries/encryption.html

Таким образом, вам не нужно менять URI, а вам просто нужно декодировать значения перед обработкой (и кодировать перед отправкой). Конечно, любой, кто знает, что вы используете CI, по-прежнему имеет доступ к реальным значениям, поэтому идеальным является собственный метод шифрования.

0 голосов
/ 26 марта 2012

К сожалению, это невозможно - браузер должен иметь URL-адрес для отправки запроса на страницу, и это именно то, что он будет отображать для пользователя. На очень хорошо , вы можете взломать немного меняющий историю JavaScript с pushState, но это ужасное решение. Вам понадобится другой путь. Один из способов сделать это будет через POST, в зависимости от вашей причины:

<form action="<?php echo base_url(); ?>home/box/<?php echo $template_data['box_id'] ?>/<?php echo $lang['language_name'] ?>" method="POST">
    <input type="hidden" name="id" value="<?php echo $_GET['id'] ?>" />
    <input type="hidden" name="lid" value="<?php echo $lang['language_id'] ?>" />
    <input type="submit" value="Style this like a link" />
</form>

Не элегантно, но это единственный способ сделать это совместимым способом. Если это по-прежнему невозможно, вам может понадобиться переосмыслить свой шаблон и понять, почему вам нужно скрыть эту информацию.

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