20091124

Drupal. Неправильные параметры action форм

После переноса одного из сайтов, основанном на друпале, попал в непонятную изначально ситуацию.
Все формы стали битыми.
Поверхостное расследование показало, что атрибут action искажался смешным образом.
вместо положенного значения uri он преобразовался в url

На вскидку не страшно )
Но почему-то url  с ведущим слешем не является синтаксически верным: /http://my.domain.org/admin/content/taxonomy
Ошибка оказалась в функции выдирания uri  из окружения сервера.
$HOME$/includes/bootstrap.inc reques_uri()
Изначально не учитывалась возможность редиректов на друпал

Поправленная версия работает нормально.


/**
 * Since $_SERVER['REQUEST_URI'] is only available on Apache, we
 * generate an equivalent using other environment variables.
 */
function request_uri() {

  if (isset($_SERVER['REDIRECT_URL'])){
    $uri = $_SERVER['REDIRECT_URL'];
  }
  elseif (isset($_SERVER['REQUEST_URI'])) {
    $uri = $_SERVER['REQUEST_URI'];
  }
  elseif (isset($_SERVER['argv'])) {
      $uri = $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['argv'][0];
  }
  elseif (isset($_SERVER['QUERY_STRING'])) {
      $uri = $_SERVER['SCRIPT_NAME'] .'?'. $_SERVER['QUERY_STRING'];
  }
    else {
      $uri = $_SERVER['SCRIPT_NAME'];
  }
 
  // Prevent multiple slashes to avoid cross site requests via the FAPI.
  $uri = '/'. ltrim($uri, '/');

  return $uri;
} 

Комментариев нет: