Переназначенная функция, начинающаяся с подчеркивания в Codeigniter - PullRequest
0 голосов
/ 11 июля 2011

Codeigniter просит использовать _functions() в контроллерах, чтобы никто не мог получить к ним доступ из URL. Теперь у меня есть контроллер с именем Profile и функция _remap(), так что я могу принимать любые входные данные в виде http://example.com/profile/asdf. Поэтому, когда я вызываю URL, функция _remap() принимает asdf как вход и работает на нем.
Теперь для особого случая я должен ввести имя, которое начинается с подчеркивания. Как и http://example.com/profile/_asdf, который на данный момент генерирует 404, поскольку Codeigniter не разрешает _ перед именем метода в URL.

Как это побороть?

1 Ответ

1 голос
/ 11 июля 2011

Решение

На самом деле Codeigniter имеет функцию проверки URL, которая генерирует 404, когда он встречает подчеркивание перед URL.Я только что взломал эту функцию.
В файле /system/core/Router.php есть функция с именем _set_request().Его первая строка была
$segments = $this->_validate_request($segments);

Я только что взломал переменную $ сегментов, заменил все подчеркивания тире (-).1016 * функция, заменил их обратно.Это не было закрытой функцией, и я выполнил свою работу.:)

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