Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2013, 03:13   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость ЧПУ и get параметры

Здравствуйте

Столкнулся вот с такой проблемой. Использую одну точку входа в приложение "Index.php" далее в дело вступает класс "Router". И не могу получить Get параметры.

Содержимое .htaccess

Код:
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1[L,QSA]
Подскажите пожалуйста как получить Get параметры в данной ситуации.

Заранее очень благодарен!
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 21.07.2013, 07:00   #2
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

между $1 и [L,QSA] пробел поставь

Последний раз редактировалось Mortimoro; 21.07.2013 в 07:05.
Mortimoro вне форума Ответить с цитированием
Старый 22.07.2013, 01:43   #3
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Подмигивание

Цитата:
Сообщение от Mortimoro Посмотреть сообщение
между $1 и [L,QSA] пробел поставь
Это дела не меняет, уже поставил.

Суть в том что ссылка такого рода как "http://myhost.ua/?page=1" или "http://myhost.ua/user/get?page=1" вываливает 404. А если без параметра Get тогда все отлично работает.
Конечно я понимаю что проблема еще и в классе Router. Ну а что касательно .htaccess файла, чего в нем не хватает
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.07.2013, 02:13   #4
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

всего в нем хватает. Поставь пробел как я сказал и сделай index.php с содержимым:
PHP код:
<?php
var_dump
($_GET);
?>
затем копайся дальше где твой класс Router косячит.
Mortimoro вне форума Ответить с цитированием
Старый 22.07.2013, 02:24   #5
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от Mortimoro Посмотреть сообщение
всего в нем хватает. Поставь пробел как я сказал и сделай index.php с содержимым:
PHP код:
<?php
var_dump
($_GET);
?>
затем копайся дальше где твой класс Router косячит.
Спасибо
Насчет класса Router могу сказать одно. Например есть url такой "http://myhost.ua/user/get?page=1"
В итоге мы получаем
1. Имя контроллера user.
2. Имя метода get?page=1.

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

Еще раз спасибо
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.07.2013, 02:45   #6
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Помогите составить регулярное выражение.
"/user/get?page=1"
Нужно разбить строку на массив до "?page=1" этого момента.
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.07.2013, 02:58   #7
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

зачем ограничиваться регуляркой? Лучше сразу несколько классов расписать да подлиннее...

при адресе http://myhost.ua/user/get?page=1
$_SERVER['PHP_SELF'] - содержит /user/get
$_SERVER['QUERY_STRING'] - сожержит page=1

explode() - разбить строку на массив.
Mortimoro вне форума Ответить с цитированием
Старый 22.07.2013, 03:05   #8
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от Mortimoro Посмотреть сообщение
зачем ограничиваться регуляркой? Лучше сразу несколько классов расписать да подлиннее...

при адресе http://myhost.ua/user/get?page=1
$_SERVER['PHP_SELF'] - содержит /user/get
$_SERVER['QUERY_STRING'] - сожержит page=1

explode() - разбить строку на массив.
Насчет "$_SERVER['PHP_SELF']" спасибо Я использовал "$_SERVER['REQUEST_URI']".

А вот насчет нескольких классов и подлиннее можно спорить долго. Ведь это будет якорь приложения который будет только забирать лишнее время "выполнения скрипта".
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.07.2013, 03:31   #9
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от Mortimoro Посмотреть сообщение
зачем ограничиваться регуляркой? Лучше сразу несколько классов расписать да подлиннее...

при адресе http://myhost.ua/user/get?page=1
$_SERVER['PHP_SELF'] - содержит /user/get
$_SERVER['QUERY_STRING'] - сожержит page=1

explode() - разбить строку на массив.
Только что попробовал $_SERVER['PHP_SELF'] он содержит url на который идет редирект в моем случае это "/index.php". А вот $_SERVER['REDIRECT_URL'] уже не содержит их.

Если смотреть таким образом
PHP код:
echo '<pre>';
print_r($_SERVER);
echo 
'</pre>'
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности

Последний раз редактировалось SoftKoc; 22.07.2013 в 03:34.
SoftKoc вне форума Ответить с цитированием
Старый 22.07.2013, 03:42   #10
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Вот еще один метод нашел только что.

Код:
echo '<pre>';
print_r (parse_url($_SERVER['REQUEST_URI']));
echo '</pre>';
"parse_url($_SERVER['REQUEST_URI'])" вернет ассоциативный массив где "path" и будет "/user/get" и без параметров :-)

А вот как выглядит весь массив при url "http://myhost/user/get?page=1":
Array
(
[path] => /user/get
[query] => page=1
)


Для того чтобы получить только url можно сделать так
Код:
echo parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности

Последний раз редактировалось SoftKoc; 22.07.2013 в 03:49.
SoftKoc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЧПУ kuba1981 PHP 11 02.10.2012 16:23
Реализовать программу через параметры-значений и параметры-ссылок bufalo C# (си шарп) 3 14.12.2011 17:10
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
Параметры запуcка. как обрабатывать параметры вида -somecmd "?" Человек_Борща Общие вопросы Delphi 1 15.01.2011 15:48
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28