Ce comportement est réellement présent dans le navigateur de service AMFPHP (bug), il est donc facile de se tromper comme le AMFPHP qui convertit des chaînes en nombre conduisant à int. Cependant, le problème est dans le code d'envoi. Par exemple l'envoi d'une chaîne urlencoded par la passerelle JSON fonctionne correctement (code Objective C):
NSString *theUrl = [[NSString alloc] initWithFormat:@"%@/modules/amfphp/amfphp/json.php/MysqlRemoting.checkAuth/%@/%@/1", kServerBaseUrl, userName, passMD5];
NSString *encodedUrl = [theUrl stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
Où passMD5 peut avoir un numéro de premier plan. Mais si j'entre les valeurs appropriées pour la méthode checkAuth dans le navigateur de service, il est cassé.
[modifier]
$value = urldecode($value);
if($value != "") {
if($value[0] != '[' && $value[0] != '{' && $value != "null" && $value != "false" && $value != "true") {
$hasAlpha = false;
//check to see if it is a number
$sl = strlen($value);
for ($i = 0; $i < $sl; $i++) {
$char1 = ord($value[$i]);
if($char1 >= 0x30 && $char1 <= 0x39) {
//Then this is a number
} else { //Else leave value as is */
$hasAlpha = true;
}
}
if (!$hasAlpha) $value = json_decode($value, true);
}
else
{
$value = json_decode($value, true);
}
}
Cela semble assez simple. Vous souhaiterez probablement afficher le code appelant la méthode et le code qui imprime le résultat. –