Browse Source

sql_in echappe deja les valeurs fournies, inutile de le compiler avec un sql_quote sur la variable, cela produit un double quote sinon

issue_4031
Cerdic 3 years ago
parent
commit
54043627ee
  1. 3
      ecrire/base/abstract_sql.php
  2. 4
      ecrire/public/criteres.php

3
ecrire/base/abstract_sql.php

@ -2026,7 +2026,8 @@ function sql_in($val, $valeurs, $not = '', $serveur = '', $option = true) {
if (!is_string($f) or !$f) {
return false;
}
$valeurs = implode(',', array_map($f, array_unique($valeurs)));
// sql_quote produit une chaine dans tous les cas
$valeurs = $f(array_unique($valeurs));
if (!strlen(trim($valeurs))) {
return ($not ? "0=0" : '0=1');

4
ecrire/public/criteres.php

@ -1534,10 +1534,10 @@ function critere_IN_cas($idb, &$boucles, $crit2, $arg, $op, $val, $col) {
// et que l'on limite donc strictement aux cas necessaires :
// si ce n'est pas un !IN, et si il n'y a pas d'autre order dans la boucle
if (!$crit2) {
$boucles[$idb]->default_order[] = "((!sql_quote($var) OR sql_quote($var)===\"''\") ? 0 : ('FIELD($arg,' . sql_quote($var) . ')'))";
$boucles[$idb]->default_order[] = "((!\$zqv=sql_quote($var) OR \$zqv===\"''\") ? 0 : ('FIELD($arg,' . \$zqv . ')'))";
}
return "sql_in('$arg',sql_quote($var)" . ($crit2 == 'NOT' ? ",'NOT'" : "") . ")";
return "sql_in('$arg', $var" . ($crit2 == 'NOT' ? ",'NOT'" : "") . ")";
}
/**

Loading…
Cancel
Save