I. Introducción
En más de una ocasión me han comentado el mismo problema cuando se trabaja con formularios, enlaces y variables en PHP. Consiste, básicamente en que las variables que se envían a través del formulario o las páginas que se acceden enviando los parámetros por la barra de direcciones, luego pierden su valor. Puede llegar a ocasionar pérdidas de tiempo innecesarias que, desde este pequeño manual, intenteremos solventar.
Antes de profundizar en el problema de las «variables perdidas», voy a explicar brevemente qué es eso de POST y GET cuando trabajamos con PHP, formularios y HTML.
II. POST y GET
Existen tres formas de dar valor a variables en PHP en páginas web. Formularios, enlaces HTML y sesiones. Aquí me limitaré a comentar las dos primeras. La última, se comentará en su debido manual.
Formularios
La primera forma es a través de formularios. Lo habitual es usar el método POST debido a una razón que comentaremos a continuación. Los formularios en cuestión se definen de la siguiente forma:
<form action=»url» method=»post»>…</form> || <form action=»url» method=»get»>…</form>
Con el parámetro method, estamos indicando la forma en la que se enviarán las variables del formulario.
Si tomamos como elección GET, todas las variables se enviarán por la dirección html. Me explico, cuando recarguemos la página web al haber enviado el formulario, saldrá algo así:
http://www.dominio.com/index.php?nombre=Un_nombre&tipo=2…
Es decir, ¡las variables aparecen en la barra de direcciones! Esto, para envío de formularios, no es lo normal pues estamos mostrando todos los datos del envío y pueden ser muchísima información, alguna incluso, confidencial que el usuario no debe enterarse. Es por ello por lo que, cuando tratamos con formularios, usamos el método POST.
Este método consiste, básicamente en enviar las variables de forma «oculta» para que nadie pueda ver los datos que ha enviado al pulsar el botón de envío de formulario.
Enlaces HTML
La segunda forma de enviar las variables es a través de enlaces. Aquí, lo que se hace es enviar las variables mediante el método GET. Más que nada porque cuando escribimos el enlace ya le estamos pasando las variables por la línea de dirección:
<a href=»index.php?estilo=4&tipo=2″ mce_href=»index.php?estilo=4&tipo=2″>Recargar</a>
En este caso, las variables PHP estilo y tipo, se envían usando el método GET. Cuando uno pinche en la palabra recargar, accederá justamente a la dirección marcada y las dos variables aparecerán en la barra de direcciones.
Sesiones
Existe un tercer método de manejo de variables en PHP; las sesiones. Pero este no es el artículo donde procede hablar de ellas.
En definitiva, existen dos formas de tratar las variables (las que vemos aquí) y por tanto, y es a lo que quería llegar: Dos formas de recoger el valor de dichas variables. Veámoslo en detalle.
III. Recogida de valores. Problemática
Tal y como se ha explicado, existen dos formas de enviar las variables:
-
Con formularios: En este caso, lo normal es usar el método POST.
-
Con enlaces: Se usará el método GET.
El problema surge debido a que antes, los servidores recogían las variables tal cual. Ésto, produjo que muchos de nosotros nos malacostumbraramos en la «recogida de variables». Me explico, si cuando uno envía un formulario, declara una variable llamada «nombre», a la hora de recargar la página, se creaba automáticamente una variable PHP llamada $nombre. De esta forma, la manera de recoger el valor de la variable era bien sencillo. Esto no sucede en la actualidad.
Suponiendo el mismo caso que antes, para recoger los valores de un formulario donde se ha usado el método POST se debe escribir:
$nombre=$_POST[‘nombre’];
Es decir, si cogemos directamente la variable $nombre, nos encontraremos con que no vale nada. Todas las variables enviadas con el método POST se almacenan en una especie de tabla que se accede tal y como hemos comentado.
Si resulta que la variable se ha enviado usando el método GET o a través de un enlace HTML, habrá que declarar lo siguiente:
$nombre=$_GET[‘nombre’];
El procedimiento es similar a lo anteriormente comentado.
Os puede parecer algo demasiado obvio, pero realmente puede ocasionar muchos quebraderos de cabeza si sois tan despistados como lo fui yo en su momento.
IV. Referencias
-
[ESP] Métodos POST y GET en formularios: POST_y_GET
-
[ESP] POST y GET en desarrolloweb: POST_y_GET
-
[ESP] Recogida automática de variables POST y GET: POST_y_GET
[…] (si fuesen tres idiomas) y cada una de ellas que hiciera que se recargara la página enviando una variable GET que fuese la que luego se […]
hola
aqui en html
x> hola gente http://www.vertutoriales.com/index.php/tag/ph/php/ espero que sirva
io necesito saber como hacer que un servidor me conteste en el idioma correcto ??? :S
hola yo tengo un problema al pasar variables, resulta que estoy haciendo un carrito, en el cual necesito agregar mis productos de la pagina del catalogo al carrito, le paso tres variables, $nombre, $cantidad,$precio, pero en la pagina del carrito no me muestra los valores en mi navegador si pasa los valores pero no los puedo imprimir en mi pagina