Skip to content
Extraits de code Groupes Projets
Valider f55d4825 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

parametre_url : attention a ne pas faire de strlen sur un tableau ($v)

et ne pas repondre a une demande erronee (plusieurs variables dans $c et rien dans $v)
parent 729f379e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -301,6 +301,9 @@ function tester_url_absolue($url){ ...@@ -301,6 +301,9 @@ function tester_url_absolue($url){
* @return string * @return string
*/ */
function parametre_url($url, $c, $v=NULL, $sep='&') { 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 // lever l'#ancre
if (preg_match(',^([^#]*)(#.*)$,', $url, $r)) { if (preg_match(',^([^#]*)(#.*)$,', $url, $r)) {
...@@ -319,6 +322,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { ...@@ -319,6 +322,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
$regexp = ',^(' . str_replace('[]','\[\]',$c) . '[[]?[]]?)(=.*)?$,'; $regexp = ',^(' . str_replace('[]','\[\]',$c) . '[[]?[]]?)(=.*)?$,';
$ajouts = array_flip(explode('|',$c)); $ajouts = array_flip(explode('|',$c));
$u = is_array($v) ? $v : rawurlencode($v); $u = is_array($v) ? $v : rawurlencode($v);
$testv = (is_array($v)?count($v):strlen($v));
// lire les variables et agir // lire les variables et agir
foreach ($url as $n => $val) { foreach ($url as $n => $val) {
if (preg_match($regexp, urldecode($val), $r)) { if (preg_match($regexp, urldecode($val), $r)) {
...@@ -326,7 +330,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { ...@@ -326,7 +330,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
return $r[2]?substr($r[2],1):''; return $r[2]?substr($r[2],1):'';
} }
// suppression // suppression
elseif (!strlen($v)) { elseif (!$testv) {
unset($url[$n]); unset($url[$n]);
} }
// Ajout. Pour une variable, remplacer au meme endroit, // Ajout. Pour une variable, remplacer au meme endroit,
...@@ -343,7 +347,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') { ...@@ -343,7 +347,7 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
AND $args = func_get_args() AND $args = func_get_args()
AND count($args)==2) AND count($args)==2)
return $v; return $v;
elseif (strlen($v)) { elseif ($testv) {
foreach($ajouts as $k => $n) { foreach($ajouts as $k => $n) {
if (!is_array($v)) if (!is_array($v))
$url[] = $k .'=' . $u; $url[] = $k .'=' . $u;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter