[spip-dev] Patch form_hidden

Bonjour,

Un problème soulevé sur le forum de spip il y a longtemps http://forum.spip.org/fr_192043.html

form_hidden agglutine les différents champs au lieu de les remplacer

par le dernier, ce qui rend son utilisation pour des mots de passe par exemple complètement inopérante. J'ai donc modifié le filtre form_hidden dans ecrire/inc/filtre.php de la manière suivante:

// La fonction suivante ne sert plus aujourd'hui qu'aux squelettes des
// balises dynamiques, en attendant une nouvelle conception qui permettra
// d'eviter les redondances de calcul et d'ecriture qu'elle induit.
// Elle fournit la suite de Input-Hidden correspondant aux parametres de
// l'URL donnee en argument. Ce besoin de ne devrait pas apparaitre,
// utiliser plutot generer_form_ecrire.
// http://doc.spip.org/@form_hidden
function form_hidden($action) {
  $hidden = '';
  $tableau = array();
  if (false !== ($p = strpos($action, '?')))
    foreach(preg_split('/&(amp;)?/S',substr($action,$p+1)) as $c) {
      $name_value = explode("=", $c, 2);
      $tableau[trim($name_value[0])] = trim($name_value[1]);
  }
  foreach($tableau as $name => $value){
      $hidden .= "\n<input name='" .
        entites_html(rawurldecode("$name' value='$value'")) .
        "' type='hidden' />";
  }
  return $hidden;
}

soit le diff suivant:

Un problème soulevé sur le forum de spip il y a longtemps http://forum.spip.org/fr_192043.html
>form_hidden agglutine les différents champs au lieu de les remplacer

OK, c'est toujours un tout petit peu plus compliqué que prévu quand on
met le nez dedans :slight_smile:

J'ai fait des tests unitaires

en prévoyant le cas où la variable est un tableau du genre a=1&a=2
(car là, il faut agglutiner, n'est-ce pas)... et évidemment ça a
obligé à casser pas mal de trucs.

Regarde donc si la version [11696] répond à la question ?

-- Fil