MODx и статичный файл принимают разные данные
Два практически идентичных запроса со страниц modx ресурс и статичной отправляют одинаковые данные, а получают разные. Запрос делаю при помощи file_get_contents(); Такое ощущение, что modx при отправке запроса игнорирует GET-параметры. Почему такое может быть?
modx-ресурс запрос-ответ
статичный файл запрос-ответ
modx-ресурс запрос-ответ
статичный файл запрос-ответ
Комментарии: 19
Очень мало данных непонятно ничего, но попробую включить экстрасенса и предположить.
Код, в котором вы вызываете file_get_contents находится в сниппете. Если это так, то попробуйье вызывать сниппет на странице некешируемым.
URL'ы в запросах разные.
На странице MODX есть дополнительные скрипты, которые затирают нужное вам значение.
Вы сами внутри file_get_contents не передаете $_GET-параметры.
В вызове формы указано method=«post» а получить вы пытаетесь $_GET.
Любое из этих предположений может оказатьмя верным, а может неверны все они. Если ничего не помогает, значит плохой из меня экстрасенс.
Код, в котором вы вызываете file_get_contents находится в сниппете. Если это так, то попробуйье вызывать сниппет на странице некешируемым.
URL'ы в запросах разные.
На странице MODX есть дополнительные скрипты, которые затирают нужное вам значение.
Вы сами внутри file_get_contents не передаете $_GET-параметры.
В вызове формы указано method=«post» а получить вы пытаетесь $_GET.
Любое из этих предположений может оказатьмя верным, а может неверны все они. Если ничего не помогает, значит плохой из меня экстрасенс.
1) Пробовал оба способа вывода — кешируемый/некешируемый — результат одинаковый.
2) URL понятное дело разный, get запрос то одинаковый
3) Если они что-то и затирают, то не одно значение, а все. Я просто привел пример запроса, где только один параметр отличен от стандартных. Как мне заставить MODx не затирать их?
4) Да, не передаю. Но ведь со статичным файлом та же история. Там тоже вызов формы идёт через file_get_contents, но ведь данные отправляются, и приходят верные, почему из сниппета не так? Кстати, передавать данные вручную пробовал — всё равно приходит то же самое (как будто get-запрос пустой). Похоже на мистику.
5) На обоих скринах request method: GET
2) URL понятное дело разный, get запрос то одинаковый
3) Если они что-то и затирают, то не одно значение, а все. Я просто привел пример запроса, где только один параметр отличен от стандартных. Как мне заставить MODx не затирать их?
4) Да, не передаю. Но ведь со статичным файлом та же история. Там тоже вызов формы идёт через file_get_contents, но ведь данные отправляются, и приходят верные, почему из сниппета не так? Кстати, передавать данные вручную пробовал — всё равно приходит то же самое (как будто get-запрос пустой). Похоже на мистику.
5) На обоих скринах request method: GET
Я намекал на то, чтобы вы дали побольше подробностей. Покажите хотя бы строчку с file_get_contents.
Прошу прощения, я совсем не умею объяснять.
Оба файла для загрузки формы используют один и тот же класс Webclient, у которого есть функция получения формы:
Оба файла для загрузки формы используют один и тот же класс Webclient, у которого есть функция получения формы:
function getPage($type = "", $module = "find_tour") {
$base_url = "http://www.webclient.touradmin.ru/b/main/" . ALLSPO_ID . "/" . $module . "/";
error_reporting(0);
ini_set('default_socket_timeout', 29);
$url = $base_url.$type."?".$_SERVER['QUERY_STRING'];
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 10
//здесь я пытался передавать GET параметры
)
)
);
$page = file_get_contents($url, false, $ctx);
if(!($page === false) && strlen($page) > 0) {
$page = iconv("windows-1251", "utf-8", $page);
echo $page;
}
else {
echo "В настоящее время сервис недоступен";
}
}
Попробуйте после этой строчки:
$url = $base_url.$type."?".$_SERVER['QUERY_STRING'];
вставить echo $url;
какой получится url? Появилось подозрение, что как-то неверно обрабатывается $_SERVER['QUERY_STRING']
К сожлаению, или к счастью, не знаю, но обрабатывает правильно. Сделал вывод.
Так url-то какой отобразился?
MODx ресурс отображает
http://www.webclient.touradmin.ru/b/main/57454/find_tour/search?q=otzyivyi/&ct=1000&co=12&rs=20&df=11.04.14&dt=22.04.14&nf=7&nt=7&ti=no&re=2467
Статичный файл http://www.webclient.touradmin.ru/b/main/57454/find_tour/search?ct=1000&co=12&rs=20&df=11.04.14&dt=22.04.14&nf=7&nt=7&ti=no&re=2467
Кстати, не заметил сразу, но MODx еще отображает параметр «q», но его удаление не дало результата.
Нет, я вроде поставил тому вопросу статус «решено», или нет?
Это уже другая проблема.
Это уже другая проблема.
проясните тогда еще, почему первый линк ведет на отзывы isida.dssnc.ru/otzyivyi/ а второй на isida.dssnc.ru/travel_services/ «travel_search» так и должно быть?
Какая разница, что куда ведет? У меня был пустой ресурс с отзывами, я для демонстрации решил вывод сниппета сделать в нем. travel_services/travel_search — ссылка получилась (сохранилась) из-за переноса модуля поиска со старого сайта на новый.
Это было так важно?
Это было так важно?
я там ошибся, забейте! вы уже выше ответили на мой вопрос
api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
попробуйте еще сделать ajax запрос с отключеным cache
попробуйте еще сделать ajax запрос с отключеным cache
Что-то непонятное происходит. Попробуйте обратиться к хостеру — такое чувство, что они на своей стороне некоторые операции кешируют. Ну и сниппет ваш должен быть некешируемым (с восклицательным знаком)…
Хотя статичный-то файл работает… Попробуйте убрать все параметры кроме $url у file_get_contents.
Если не поможет, я не знаю что делать… Тогда распишите все что есть — шаблон страницы, все чанки, весь код сниппета, весь код класса — выложите куда-нибудь на pastebin.com
Если не поможет, я не знаю что делать… Тогда распишите все что есть — шаблон страницы, все чанки, весь код сниппета, весь код класса — выложите куда-нибудь на pastebin.com
Вот и я не знаю что делать, не помогло(
Проблема в том, что шаблон чистый — в нем только вызов сниппета:
Проблема в том, что шаблон чистый — в нем только вызов сниппета:
[[!tourFilter? &module=`search`]]
Код сниппета:<?php
include_once($_SERVER["DOCUMENT_ROOT"] . '/tours/wc_lib.php');
$objWC = new Webclient;
$objWC->getPage($module);
Статичный файл:<? include($_SERVER["DOCUMENT_ROOT"]."/tours/search.php"); ?>
Код файла search.php идентичен коду сниппета, исключая факт, что в сниппет я передаю параметр — какой модуль поиска подключать:<?php
include_once($_SERVER["DOCUMENT_ROOT"] . '/tours/wc_lib.php');
$objWC = new Webclient;
$objWC->getPage('search');
Думал проблема в различии кодировок файла MODx и статичного (мало ли & заменяется на & amp;) но что-то это тоже не дало результата.
А ларчик-то просто открывался(
В итоге да, проблема решилась заменой "& amp;" на "&". Видимо, MODx, сам их заменяет…
В итоге да, проблема решилась заменой "& amp;" на "&". Видимо, MODx, сам их заменяет…
$page = file_get_contents(preg_replace('#& amp;#si', '&', $url));
Спасибо всем, кто пытался помочь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.