Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec urldecode et certain caracteres

4 réponses
Avatar
J.M
Bonjour,

Je suis nouveau ici. Je m'excuse si cela a déja été demandé mais je n'ai pas
trouvé avec google.

J'ai un script php (version 4.2.2) qui recoit une image encodée en paramètre:
<?
$Image= $_POST['Image'];
$n = "temp.64";
$img = urldecode($Image);
echo $img;
echo "\n";
echo "PHP 64 ENCODED IMAGE LENGHT:", strlen($img), "\n";
$fp = fopen("$n", "wb");
if ($fp) {
fwrite($fp, $img);
fclose($fp);
}
?>

Le problème est que le fichier encodé en base 64 n'est pas le même que celui
envoyé. En particulier, je vois que les caractères "+" ont disparus. La longueur
de la chaine est aussi diffrente.
Le fichier est envoyé par une applet java qui l'encode en base 64 puis en
x-www-form-urlencoded.

Si quelqu'un a une solution, ce serait super.

Merci,
Jean-Michel

4 réponses

Avatar
P'tit Marcel


Le problème est que le fichier encodé en base 64 n'est pas le même que
celui envoyé. En particulier, je vois que les caractères "+" ont
disparus.


essaye rawurldecode (qui ne transforme pas les + en espace)

Avatar
J.M
P'tit Marcel wrote:



Le problème est que le fichier encodé en base 64 n'est pas le même que
celui envoyé. En particulier, je vois que les caractères "+" ont
disparus.



essaye rawurldecode (qui ne transforme pas les + en espace)


Cela ne marche pas non plus. En fait j'ai l'impression que le urldecode est
inutile ici car le paramètre est deja décodé après la commande:

$Image= $_POST['Image'];

C'est apparement ce decodage qui ne fonctionne pas. Personne n'a jamais eu de
problème avant ?

Merci
Jean-Michel


Avatar
Philippe Le Van
J.M wrote:

Le problème est que le fichier encodé en base 64 n'est pas le même
que celui envoyé. En particulier, je vois que les caractères "+" ont
disparus.
[...]



Cela ne marche pas non plus. En fait j'ai l'impression que le urldecode
est inutile ici car le paramètre est deja décodé après la commande:

$Image= $_POST['Image'];

C'est apparement ce decodage qui ne fonctionne pas. Personne n'a jamais
eu de problème avant ?



C'est normal. Quand tu codes avec urlencode (ou rawurlencode), ça
encode au format standard des url. Ensuite quand php reçoit la
requète il décode ça automatiquement avant le mettre les valeurs
dans $_POST.

Cordialement,
Philippe



Avatar
J.M
Philippe Le Van wrote:

J.M wrote:

Le problème est que le fichier encodé en base 64 n'est pas le même
que celui envoyé. En particulier, je vois que les caractères "+" ont
disparus.




[...]

Cela ne marche pas non plus. En fait j'ai l'impression que le
urldecode est inutile ici car le paramètre est deja décodé après la
commande:

$Image= $_POST['Image'];

C'est apparement ce decodage qui ne fonctionne pas. Personne n'a
jamais eu de problème avant ?



C'est normal. Quand tu codes avec urlencode (ou rawurlencode), ça
encode au format standard des url. Ensuite quand php reçoit la
requète il décode ça automatiquement avant le mettre les valeurs
dans $_POST.


Oui mais c'est le decodage qui n'a pas l'air bon. J'ai du mal expliquer mon
problème. J'ai donc une applet java qui envoie une image Gif a une url qui est
un script PHP.
L'applet encode d'abord l'image en base 64 puis en x-www-form-urlencoded.
Ensuite, elle l'envoie au script PHP qui n'a theoriquement plus qu'a decoder le
base 64 pour l'écrire dans un fichier. Le problème, c'est que la valeur de Image
apres la commande $Image= $_POST['Image']; n'est pas bonne. Certains caractères
ont sautés ou été remplacés. Je voulais savoir si il y avait des problèmes à ce
niveau.
Merci,
Jean-Michel