Заставить codeigniter вести себя на $ _GET? - PullRequest
0 голосов
/ 03 июля 2010

У меня была проблема с обработкой CI $ _GET, и я нашел способ ее преодолеть.

Вопрос в том, Вы видите здесь какие-либо проблемы с безопасностью?

У меня есть все URL, как

/contacts
/company/info

И мой контроллер по умолчанию на CodeIgniter называется index

Я могу заставить CI вести себя с $_GET, пока я следую за class/function/default_controller.

Обе эти работы URL:

// class + function + default controller = ok
/class/function/index?var1=this&var2=that

// class + default controller = ok
/class/index?var1=this&var2=that

Дело в том, что я хочу, чтобы они тоже работали

// class without function nor default controller = NOT OK
/class?var1=this&var2=that

// class + function without default controller = NOT OK
/class/function?var1=this&var2=that

Моим решением было небольшое регулярное выражение для $_SERVER['REQUEST_URI'].

Я не эксперт по регулярным выражениям, поэтому вы можете увидеть здесь возможную проблему безопасности?

/*
|---------------------------------------------------------------
| MAKE CODEIGNITER BEHAVE ON _GETS!
|---------------------------------------------------------------
|
| CI doesn't like to play ball with /contacts?a=23 and fails on several ocasions
| This forces the first ? or & to be replaced by /index/ that is the default controller
|
*/
 $_SERVER['REQUEST_URI'] = preg_replace('/\?|\&/', '/index/', $_SERVER['REQUEST_URI'], 1);

Спасибо.

1 Ответ

1 голос
/ 03 июля 2010

Неа. Пока вы не слепо доверяете $ _GET [] (что вам в любом случае не следует), все в порядке.

...