извлечение перменной из пути

в конфиге есть такое вот правило


'rules'=>array(

   'id<_i:\d+>'=>'index/index',

   ),



И вот нужно мне взять в контроллере значение этой переменной _i. Если брать просто через $_GET[’_i’] то это не безопасно потому что вместо такого вот адреса http://hostname/id34 любой может написать такой http://hostname/?_i=blablablla. Как можно взять значение этой переменной другими способами или запретить второй вариант набора адреса?

Правила для urlManager не являются способом проверки типа данных. Они служат всего лишь для определения сопоставления действий урлам.

Вы можете попробовать включить параметр useStrictParsing. Возможно это спасёт. Но лучше всего проверять тип переменной в нужном месте. Или ещё лучше работать через модель с валидаторами, что несомненно православнее.

А еще без чтения кода нереально догадаться что переменная твоя называется _i :)

парень это параноя… какая разницы как можно обратится к странице?

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

Я вот только что подумал - а проверять-то тип все равно надо. Если это, например, open-source приложение, то код его может читать любой… Так что надо однозначно проверять. Валидаторами или, если подставляем в SQL, то пользоваться PDO. Оно само не пустит вредоносный код. Точнее, оно его обезвредит :)