Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.08.2010, 18:47
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 1  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
По умолчанию Rewriteengine $_REQUEST и параметры

При запросе:
«site.com/coord?x=9&y=3» мне надо получить параметры x и y

Обычно их получают через $_REQUEST


Так вот, я использовал RewriteEngine
и вот такое перенаправление:
RewriteRule (.*) engine.php?$1

После этого $_REQUEST пуст (т.е. нету в них x и y)

Единственное место, где можно увидеть параметры: $_SERVER['REQUEST_URI'],
там будет «site.com/coord?x=9&y=3»


Вопрос: как добраться до параметров (вручную выуживать неохото) и почему так происходит? Может быть rewrite неправильный (хотя там он и так проще простого - перенаправляет на engine.php, а тот выдает нужный материал)?

Старый 04.08.2010, 20:46
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 2  
Ответить с цитированием
membrilius
 
Аватар для membrilius

Регистрация: Aug 2008
Сообщений: 258
как я понимаю нормальная строка запроса это "site.com/engine.php?x=9&y=3" ??

а получить надо "site.com/coord?x=9&y=3"

Код:
RewriteEngine On

RewriteRule coord(.*) engine.php$1 [L]
проверил, работает.


Вообще как-то можно делать жесткое условия. типа:

Код:
RewriteRule coord?x=(.*)&y=(.*) engine.php?x=$1&y=$2 [L]
или

Код:
RewriteRule coord.php?x=(.*)&y=(.*) engine.php?x=$1&y=$2 [L]
Но у меня они не работают. Не понятно почему..

Старый 04.08.2010, 22:42
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 3  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Membrilius ты меня не понял.

Любой запрос на сайт обрабатывается engine.php. А этот скрипт не видит переданные ему параметры. Ведь любые переданные параметры со строкой запроса попадают в $_REQUEST (а еще есть $_GET и $_POST).

RewriteEngine я использую для ЧПУ.

Старый 05.08.2010, 00:41
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 4  
Ответить с цитированием
membrilius
 
Аватар для membrilius

Регистрация: Aug 2008
Сообщений: 258
нет я понял. У Вас не правильно сделано преобразование

я сделал так:

Код:
RewriteEngine On

RewriteRule coord(.*) engine.php$1 [L]
Написал заглушку engine.php

Код:
<?
echo $_GET['x']."<br>";
echo $_GET['y']."<br>";
?>
по запросу http://localhost/coord?x=9&y=3

скрипт чудесно выводит на кран значения GET'a

Старый 05.08.2010, 17:19
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 5  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Вся проблема, похоже, в RewriteRule. Если сделать запрос вида:
RewriteRule (.*) engine.php, то $_REQUEST заполняется правильно, но меняются значения переменных $_SERVER['REDIRECT_QUERY_STRING'] и других. Переписывать скрипт пока не охото.

И еще, RegExp в PHP разве не такой же как в AS?

Я хотел сделать так:
RewriteRule fn_(.*) app.php [L]
RewriteRule (.*) engine.php?$1

То есть если в запросе есть префикс fn_ (например: fn_sendmail), то будет обращение не к engine.php а к app.php который будет вызывать скрипт иначе будет выдавать материал. Но почему то не работет.

А как правильно?

Старый 05.08.2010, 17:48
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 6  
Ответить с цитированием
membrilius
 
Аватар для membrilius

Регистрация: Aug 2008
Сообщений: 258
работа с htaccess у хостингов настроена одинакова. Всякие Жумла и Вордпресы с их ЧПУ работают же.

Кстати $_REQUEST объединяет $_GET, $_POST и $_COOKIE в один массив.. им лучше не пользоваться.

Цитата:
И еще, RegExp в PHP разве не такой же как в AS?
mod_rewrite это модуль к серверу Apache .. а не PHP.

--------------

Код:
RewriteRule fn_(.*) app.php [L]
RewriteRule (.*) engine.php?$1
в этой записи одно перекрывает другое. Правильно не использовать только (.*)

Старый 07.08.2010, 02:30
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 7  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Короч решил проблему так:
RewriteRule (.*) engine.php и переписал движок

Вообще, регэкспы зло
Текст программы пишется для человека, неужели кому-то может показаться запись /^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$/ человечным.

Да и процы вродь не любят их (производительность)

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
$_REQUEST , RewriteEngine , RewriteRule

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.