Jean Francois Ortolo
2014-04-21 09:07:08 UTC
Bonjour
Je suis en train d'adapter des scripts, des fonctions mysql_*() vers
celles de la librairie PDO de mysql.
Il s'agit d'un script de prise en compte de paiements PayPal, qui est
...schtroumpfement bien fait, mais malheureusement est fait avec ces
fonctions mysql_*().
J'ai trouvé sur le net, un équivalent théorique à la fonction
mysql_real_escape_string().
J'ai besoin de toute façon d'une telle fonction de remplacement, car
j'utilise la librairie PDO de MySQL et PHP, et non plus les fonctions (
bientôt obsolètes ) de type : mysql_*().
J'ai ajouté à cette fonction ( voir ci-dessous ), la traduction des
caractère spéciaux : "\b" et "\t".
Le problème ( en gros ), est que PHP traduit : "\\" en : "\", ce qui
fait que le caractère lu : "\\" correspond au caractère existant : "\" (
backslashe ).
D'autre part, la documentation MySQL, dit qu'il faut convertir le
caaractère ASCII : 26 ( Ctrl-Z, ou EOF ( fin de fichier ) ), en : "\Z".
Merci de me dire si cette fonction ci-dessous, est correcte sur le
plan des fonctionnalités, et n'oublie pas de caractères.
function reverse_escape($str)
{
$search = array("\\", "\0", "\n", "\r", "\b", "\t", "\x1a",
"'", '"');
$replace = array("\\\\", "\\0", "\\n", "\\r", "\\b", "\\t",
"\\Z", "\'", '\"');
return str_replace($search, $replace, $str);
}
Merci beaucoup de vos réponses.
Amicalement.
Jean François Ortolo
Je suis en train d'adapter des scripts, des fonctions mysql_*() vers
celles de la librairie PDO de mysql.
Il s'agit d'un script de prise en compte de paiements PayPal, qui est
...schtroumpfement bien fait, mais malheureusement est fait avec ces
fonctions mysql_*().
J'ai trouvé sur le net, un équivalent théorique à la fonction
mysql_real_escape_string().
J'ai besoin de toute façon d'une telle fonction de remplacement, car
j'utilise la librairie PDO de MySQL et PHP, et non plus les fonctions (
bientôt obsolètes ) de type : mysql_*().
J'ai ajouté à cette fonction ( voir ci-dessous ), la traduction des
caractère spéciaux : "\b" et "\t".
Le problème ( en gros ), est que PHP traduit : "\\" en : "\", ce qui
fait que le caractère lu : "\\" correspond au caractère existant : "\" (
backslashe ).
D'autre part, la documentation MySQL, dit qu'il faut convertir le
caaractère ASCII : 26 ( Ctrl-Z, ou EOF ( fin de fichier ) ), en : "\Z".
Merci de me dire si cette fonction ci-dessous, est correcte sur le
plan des fonctionnalités, et n'oublie pas de caractères.
function reverse_escape($str)
{
$search = array("\\", "\0", "\n", "\r", "\b", "\t", "\x1a",
"'", '"');
$replace = array("\\\\", "\\0", "\\n", "\\r", "\\b", "\\t",
"\\Z", "\'", '\"');
return str_replace($search, $replace, $str);
}
Merci beaucoup de vos réponses.
Amicalement.
Jean François Ortolo