diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index b0214ba1aabaef0704eb6ed995f3358a7c70921d..0f22d2addaa31baa3d0611aac6fde250f03134b3 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -301,6 +301,9 @@ function tester_url_absolue($url){ * @return string */ function parametre_url($url, $c, $v=NULL, $sep='&') { + // requete erronnee : plusieurs variable dans $c et aucun $v + if (strpos($c,"|")!==false AND is_null($v)) + return null; // lever l'#ancre if (preg_match(',^([^#]*)(#.*)$,', $url, $r)) { @@ -319,6 +322,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { $regexp = ',^(' . str_replace('[]','\[\]',$c) . '[[]?[]]?)(=.*)?$,'; $ajouts = array_flip(explode('|',$c)); $u = is_array($v) ? $v : rawurlencode($v); + $testv = (is_array($v)?count($v):strlen($v)); // lire les variables et agir foreach ($url as $n => $val) { if (preg_match($regexp, urldecode($val), $r)) { @@ -326,7 +330,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { return $r[2]?substr($r[2],1):''; } // suppression - elseif (!strlen($v)) { + elseif (!$testv) { unset($url[$n]); } // Ajout. Pour une variable, remplacer au meme endroit, @@ -343,7 +347,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { AND $args = func_get_args() AND count($args)==2) return $v; - elseif (strlen($v)) { + elseif ($testv) { foreach($ajouts as $k => $n) { if (!is_array($v)) $url[] = $k .'=' . $u;