Tutorial para novatos de paso de variables entre scripts

rargueso
03 de Febrero del 2004
Visto que es una duda muy comun y tengo un par de correos de gente que me pide ayuda en este tema voy a explicar rapidamente como pasar variables entre scripts PHP mediante los metodos post y get. Estos metodos son los mas habituales cuando usamos formularios.

Ante todo hay que tener claro que ya no debemos trabajar con register_globals a on. Las nuevas versiones de php ya vienen con ellas a off y el hecho de conservar esta caracteristica solo se debe a que aplicaciones anteriores sean compatibles.
Por tanto usaremos los arrays globales siguientes:

$HTTP_GET_VARS o mejor su version corta $_GET
$HTTP_POST_VARS o mejor su version corta $_POST

En esos dos arrays contaremos con todas las variables que lleguen a un script mediante GET o POST. Si no esta una variable en ese array es porque simplemente no ha sido recibida. Estos array no se deben declarar puesto que ya existen en todos los scripts de php.

Envio mediante GET:

Se puede dar de dos formas

1) Paso por url

Ejemplo: <a href="index.php?type=1&mode=a">Enlace</a>

Aqui estamos pasando 2 variables mediante URL (GET).

Si analizamos el query string (?type=1&mode=a) vemos que hay 2 variables separadas por &.
type=1 y mode=a

Usando la funcion print_r() podemos ver en index.php que valores llegan: print_r($_GET).

Si ejecutais esa orden apareceran esas dos variables.

Podemos acceder a ellas mediante el array $_GET

echo $_GET["type"]." - ".$_GET["mode"].

2) Paso por formulario (metodo Get)

<form action="index.php" method="get">
<input type="text" name="nombre">
<input type="submit" value="Enviar">
</form>

Si rellenamos este formulario con nombre "Soy Ruben" y enviamos se generara la siguiente url:

... index.php?nombre=Soy%20Ruben

tenemos un query string con la variable nombre y su valor (Los espacios en blanco se codifican pq una URL no puede interrumpirse con espacios en blanco).

Podemos acceder a la variable en el script que recibe el formulario mediante el array $_GET

echo $_GET["nombre"];

Bueno de momento no es dificil no?

Vamos por el metodo POST:

<form action="index.php" method="post">
<input type="text" name="nombre">
<input type="submit" value="Enviar">
</form>

Si rellenamos este formulario con nombre "Soy Ruben" y enviamos se generara la siguiente url:

... index.php

Sorpresa, no hay query string. Eso es una caracteristica del metodo post. No se muestra el query string.

Podemos acceder a la variable en el script que recibe el formulario mediante el array $_GET

echo $_POST["nombre"];


Indicaciones: El metodo get permite contruir urls con parametros y post no. El metodo post no muestra los datos en el url y el get si. Esto es importante cuando haces una web.

Espero que os sirva.

Un saludo

Alvaro
03 de Febrero del 2004
Hola, en el 4º parrafo enpezando por abajo, pones

Podemos acceder a la variable en el script que recibe el formulario mediante el array $_GET

Otra duda es si la funcion print_r() es una funcion predefinida, y si lo es, en que se diferecncia de echo o print ??

Gracias.

echo $_POST["nombre"];

imahino que quierrás decir Podemos acceder a la variable en el script que recibe el formulario mediante el array $_POST

(por si alguien no se fija y no lo entiende)

Una duda es si la unica manera de pasar variables por post es mediante formularios. Si alguien cntesta, por favor, avisadme por email.

Gracias.

rargueso
03 de Febrero del 2004
>Hola, en el 4º parrafo enpezando por abajo, pones
>
>Podemos acceder a la variable en el script que recibe el formulario mediante >el array $_GET

Perdon, en ese caso es $_POST.
>
>Otra duda es si la funcion print_r() es una funcion predefinida, y si lo es, >en que se diferecncia de echo o print ??

Si, lo es. Permite mostrar el contenido de un array. Se usa para debug de scripts y no tiene nada que ver con echo (print no me gusta xD).

>
>Gracias.
>
De nada.
>echo $_POST["nombre"];
>
>imahino que quierrás decir Podemos acceder a la variable en el script que >recibe el formulario mediante el array $_POST
>
>(por si alguien no se fija y no lo entiende)
>
>Una duda es si la unica manera de pasar variables por post es mediante >formularios. Si alguien cntesta, por favor, avisadme por email.
>
Que yo sepa si. Queda pendiente paso de variables por cookies y sesiones :-D
>Gracias

De nada

Os dejo links a otros dos tutorials rapidos que he posteado:

http://www.programacion.com/foros/7/msg/62931/
http://www.programacion.com/foros/7/msg/62393/