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){
* @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;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter