Выявил страшный косяк, который не могу победить, мозг слегка уже потек...
Форма выводится как на основном родительском сайте, где установлен компонент (mysite.ru), так и во фрейме стороннего сайта (partner.ru), url которого необходимо получить.
В форме присутствует поле <input type="hidden" name="partner_server" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />
В контроллере - обработчике формы:
// получаем основное 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 этот параметр существует!