Valider 095b57e8 rédigé par esj's avatar esj
Parcourir les fichiers

Le traitement des hexadécimaux en PG oblige à introduire une nouvelle fonction...

Le traitement des hexadécimaux en PG oblige à introduire une nouvelle fonction d'abstraction encodant ces valeurs. Comme dans [10433], [10131], [10146] et [10154] on rallonge la liste des fonctions d'abstraction de [10113]: 
{{{
'hex' => fonction d'abstraction de la représentation d'un hexadécimal
}}}

Il faut donc utiliser '''sql_hex("FFBB")''' pour envoyer ce genre de valeurs aux serveurs SQL. A noter d'ailleurs qu'il ne faut pas utiliser '''intval''' comme outil de sécurité si le nombre est un grand entier, car PHP le tronque sans prévenir alors que les serveurs SQL l'auraient accepté. 

Pour éviter une révision générale de SPIP et ses extensions, l'analyse des arguments SQL devient plus précise. Intuitivement il s'agit d'utiliser '''is_numeric''' mais PHP n'en est pas à une incohérence près; ceci
{{{
<?php
echo is_numeric('0x1234567') ? '1' : '0';;
echo is_numeric('0x12345678') ? '1' : '0';;
echo is_numeric('0x123456789') ? '1' : '0';;
echo is_numeric('0x123456789A') ? '1' : '0';;
?>
}}}
répond-il ''0000' ou ''0101'' ou ''0011'' ou ''1111'' ?

Attention, contraitement aux apparences, la bonne réponse n'est pas '''c'est nul'''.
parent 947e68b9
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
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