0 Пользователей и 1 Гость просматривают эту тему.
  • 32 Ответов
  • 2920 Просмотров
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Не прокатило, $server пуста

upd
нет, не пуста, просто забыл, что отдельный элемент массива - не строка, пришлось дописать
Код: php
$server = (string)$server;
« Последнее редактирование: 03.02.2015, 00:40:47 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Выявил страшный косяк, который не могу победить, мозг слегка уже потек...

Форма выводится как на основном родительском сайте, где установлен компонент (mysite.ru), так и во фрейме стороннего сайта (partner.ru), url которого необходимо получить.

В форме присутствует поле <input type="hidden" name="partner_server" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

В контроллере - обработчике формы:
Код: php
// получаем основное uri, с которого пришла форма, как правило равно
// mysite.ru/index.php?option=com_mycomponent&view=rqform&tmpl=component&key=ключ
$uri = $_SERVER['HTTP_REFERER'];

// получаем URL из поля формы
$partner_server = $this->input->getString('partner_server');

// получаем доменное имя из URL из поля формы
$fact_server = parse_url($partner_server, PHP_URL_HOST);

// получаем родительское доменное имя
$local_server = parse_url(JUri::base(), PHP_URL_HOST);

// если вызов гарантированно из формы с partner.ru, то
if ($fact_server != $local_server) {
 
  // переменная $server в дальнейшем нужна для обработки формы и формирования ответного uri
  $server = (string)$fact_server;

  // к основному uri приписываем параметр server со значением 'partner.ru' (без кавычек, есс-но)
  $uri .= '&server='.$server;

// иначе
} else {

  // получаем переменную $server из URL из поля формы
  parse_str(parse_url($partner_server, PHP_URL_QUERY));
  $server = (string)$server;
}

// тут обработка формы и формирование ответа

// возвращаемся на страницу формы обратно
$this->setRedirect(JRoute::_($uri));

// сообщение ответ
JFactory::getApplication()->enqueueMessage($uri);

Во всех случая возвращаемый ури равен mysite.ru/index.php?option=com_mycomponent&view=rqform&tmpl=component&key=ключ&server=partner.ru

Когда из формы идет первый post, $partner_server = http://partner.ru

В третий и все последующий разы $partner_server = http://mysite.ru/index.php?option=com_mycomponent&view=rqform&tmpl=component&key=ключ&server=partner.ru

А вот во второй раз $partner_server = http://mysite.ru/index.php?option=com_mycomponent&view=rqform&tmpl=component&key=ключ - отсутствует должный находится там &server=partner.ru, ПОЧЕМУ ЕГО ТАМ НЕТ? хотя во всех случаях в enqueueMessage в $uri этот параметр существует!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Было решено совместно с zomby6888 при личной консультации, спс ему большое!
Решение:
в контроллере:
Код: php
    $uri = $_SERVER['HTTP_REFERER'];
    $partner_server = urldecode($this->input->getString('partner_server'));
    if (!strpos($uri, 'server')) {
      $server = (string)parse_url($partner_server, PHP_URL_HOST);
      $uri .= '&server='.urlencode($server);
    } else {
      $server = (string)$partner_server;
    }
в форме:
Код: php-brief
<input type="hidden" name="partner_server" value="<?php $ref = isset($_GET['server'])? $_GET['server'] : urlencode($_SERVER['HTTP_REFERER']); echo $ref; ?>" />
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Баг. В модуле выводится значение параметра из другого модуля

Автор fbr

Ответов: 10
Просмотров: 527
Последний ответ 18.04.2021, 21:34:10
от fbr
[Решено] Узнать какие плагины загружены

Автор lexx006

Ответов: 3
Просмотров: 1727
Последний ответ 20.07.2015, 09:55:54
от lexx006
Как узнать количество запросов к бд?

Автор indigo

Ответов: 1
Просмотров: 1462
Последний ответ 31.07.2013, 23:39:35
от smart
Как с помощью jquery или javascript узнать зашол ли некий обьект за скрол или нет?

Автор kontrast

Ответов: 0
Просмотров: 1276
Последний ответ 26.02.2013, 18:45:35
от kontrast