Símbolo +

No sé si esto es más bien un tema de Javascript, de HTML o de PHP, lo sabré cuando conozca la respuesta, pero seguro que no puede ser tan difícil de resolver. Vamos a ver, ...
El usuario me mete en un campo text por ejemplo "coca cola+vino", y cuando recojo el valor con el request obtengo "coca cola vino". El signo "+" ha desaparecido. ¿Cómo puedo evitar que se sustituya por el espacio?

1 respuesta

1
Respuesta de
Hola,
si el usuario introduce "coca cola+vino" en un formulario tanto si es por GET como por POST, lo que se recibe es correcto, porque lo he comprobado.
Otra cosa, es que si tu estas consultando la matriz $_REQUEST quiere decir que estás aceptando tanto datos por POST como datos por GET. Concretamente el dejar la posibilidad de que los datos vengan por GET, permite a un usuario introducir datos en la URL, escribiendo por ejemplo:
www.tudominio.com/tuPaginaReceptora.php?pedido=cocacola+vino
en este caso, recibirás exactamente lo que dices que recibes, porqué en la URL, un símbolo + signifa un espacio. Para colocar allí el equivalente a un símbolo más el usuario debería poner %2B
Si haces que tu página receptora de datos consulte sólo la matriz $_POST (y pones method="post" en tu formuarlio) evitarás que los usuarios puedan introducir datos en la URL.
Saludos.
David Cortés Braña
... Hola David, muchas gracias por contestar. Te explico ...
Todo lo que dices es correctísimo, pero en realidad soy yo el que necesita GET para poder pasar los datos por URL más o menos (te lo resumo) de esta forma:
...
&dato1='+document.getElementById('dato1<?=$codigo?>').value ...
Es una página complicadísima que me obliga a hacerlo así, créeme. Y además, se trata precisamente de que el usuario utilice el símbolo + (y no otro) como separador de los datos que me va a meter, porque es como ellos se expresan habitualmente.
¿Se te ocurre alguna forma de conseguirlo?
Hola,
no hay forma de hacer lo que quieres. Cuando pongas el símbolo '+' en la línea de comandos se interpretara como un espacio antes de que puedas hacer nada.
De hecho cuando escribes '+' estás escribiendo un espacio en el 'idioma' de la URL, por lo tanto es así como lo va a interpretar.
Lo único que se me ocurre es prohibirle al usuario que ponga espacios, así sabrías que los espacios que te llegan son en realidad símbolos '+'.
Saludos.
David Cortés Braña
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema PHP o hacer tu propia pregunta: