diff --git a/prive/formulaires/login.php b/prive/formulaires/login.php index 3cfeb4476047b2d24f9a232590030e3eb77f5987..c999804053d73551e012845330b064bb073baa4c 100644 --- a/prive/formulaires/login.php +++ b/prive/formulaires/login.php @@ -185,14 +185,21 @@ function formulaires_login_traiter_dist($cible="",$login="",$prive=null){ if ($cible) { $cible = parametre_url($cible, 'var_login', '', '&'); - } - - // transformer la cible absolue en cible relative - // pour pas echouer quand la meta adresse_site est foireuse - if (strncmp($cible,$u = url_de_base(),strlen($u))==0){ - $cible = "./".substr($cible,strlen($u)); + + // transformer la cible absolue en cible relative + // pour pas echouer quand la meta adresse_site est foireuse + if (strncmp($cible,$u = url_de_base(),strlen($u))==0){ + $cible = "./".substr($cible,strlen($u)); + } + + // si c'est une url absolue, refuser la redirection + // sauf si cette securite est levee volontairement par le webmestre + elseif (preg_match(";^([a-z]+:)?//;Uims",$cible) AND !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) { + $cible = ""; + } } + // Si on est admin, poser le cookie de correspondance if ($GLOBALS['auteur_session']['statut'] == '0minirezo') { include_spip('inc/cookie');