#1 RX pharmacy affiliate program!
CodeIgniter - точка в строке запроса
января 13, 2009 on 6:49 пп | In php кодинг |На протяжении нескольких проектов которые я программирую с помощью CI у меня приключалась одна и таже беда – я передаю через адресную строку что-то с точкой (например, file.zip) , а в переменную мне приходит что-то с подчеркиванием (т.е. file_zip). Это очень плохо, т.к. не во всех случаях можно произвести корректную обратную замену – например если я послал file_1.zip, то получу file_1_zip, заменяем “_” на “.” и получаем file.1.zip – очень плохо 
Сегодня я решил окончательно взяться за эту проблему. Все это время я думал что проблема в CI, однако оказалось что никакой “не логичности” нет. В своих приложениях я использую .htaccess такого вида:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
Т.е. CI видит всю строку запроса как 1 переменную массива $_GET без значения (как единственный ключ массива $_GET), плох тот момент что все точки и пробелы в ключах массива $_GET PHP заменяет на нижнее подчеркивание. Отсюда и такой печальный эффект. Исправить ситуацию можно если в config.php проекта сменить параметр uri_protocol:
$config['uri_protocol'] = “REQUEST_URI”;
Однако я встречал такие хостинги, где данный метод получения URI не работает, а нам ведь нужны универсальные решения – не так ли?
Истина где-то рядом…
No Comments yet »
RSS лента комментариев к этой записи. TrackBack URI
Оставить комментарий
Powered by WordPress with design by Dreamaker.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^