Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2004, 14:38
Avatar de sism82
sism82
 
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
urlencode, rawurldecode y el RFC 1738

Saludos...

Espero alguien pueda aclararme este inconveniente.
Tengo una llave encriptada por RSA para autentificación telefónica. El problema es que al enviar la llave pública por URL, la codifico con urlencode($key), y al recibirla hago urldecode($key). Pero no funciona. Al parecer hay un problema con los signos "+" en la decodificación. Tengo php5 en ambos servidores (el que envia y el que recibe). Hice la siguiente prueba:

Código PHP:
$key '+';
echo 
'Original Plus Sign:'.$key;
echo 
'<br />UrlEncoded Plus Sign:'.urlencode($key);
echo 
'<br />UrlDecoded Plus Sign:'.urldecode($key);
echo 
'<br /><br /><br />';

$key '+';
echo 
'Original Plus Sign:'.$key;
echo 
'<br />rawUrlEncoded Plus Sign:'.rawurlencode($key);
echo 
'<br />rawUrlDecoded Plus Sign:'.rawurldecode($key); 
Y los resultados son:

Código:
Original Plus Sign:+
UrlEncoded Plus Sign:%2B
UrlDecoded Plus Sign:


Original Plus Sign:+
rawUrlEncoded Plus Sign:%2B
rawUrlDecoded Plus Sign:+
como ven, cuandos e utiliza urlencode sobre el signo, al decodificarlo no me devuelve el signo, sino un espacio, no vacio, sino un caracter espacio.

Naturalmente el problema lo tengo resuelto usando rawurldecode y rawurlencode, sin embargo no encuentro la razón por la que urlencode y urldecode no coinciden.

Ideas?