Envio de variables con GET y POST en PHP





En el siguiente texto tratare de explicar de la manera más sencilla y detallada, como enviamos variables desde un formulario hacia nuestra página PHP para que esta realice una operación.

Veremos envíos usando GET y POST, muy importante será el envió de Arreglos ya que estos son muy útiles y causa problemas a los programadores novatos.

¿Que necesito antes de empezar?

Si harás las pruebas locales, como en este ejemplo requeriremos de un Servidor instalado en nuestra PC que tenga soporte para PHP, yo en lo personal recomiendo el XAMPP, WAMP o AppServer por su fácil configuración, estos paquetes incluyen básicamente el Servidor Web Apache, MySQL (Manejador de Base de Datos) PHPMyAdmin (Interfaz Web para MySQL) y PHP o bien contar con una cuenta en un servidor que tenga soporte PHP.

Utilizaremos Dreamweaver pues es muy sencillo dibujar formularios usando la vista de diseño.

Ahora empecemos:

Haremos una pequeña aplicación que nos permita enviar el Nombre Apellido y Número telefónico de una persona. Para ello requeriremos de hacer un formulario que contendrá 3 campos de texto y 2 botones uno tipo Submit y otro tipo Reset. Estos componentes los encontraremos en el menú INSERTAR/FORMULARIO

1x1.trans Envio de variables con GET y POST en PHP

El resultado debe verse de la siguiente manera:

1x1.trans Envio de variables con GET y POST en PHP

y el código se verá parecido al siguiente; lo importante es la etiqueta FORM e INPUT, lo demás puede variar según el formato que le demos.

Nombre: Apellido: No. Telefonico:

Si nos fijamos en el código del formulario el atributo NAME es el nombre del objeto, a través de este haremos referencia en el código de PHP para obtener su valor, así pues cambiaremos los Atributos NAME por unos más amigables, al primer texfield le pondremos "nombre_form", al segundo "apellido_form" y al tercero "tel_form". Para ello seleccionamos el textfield y en la barra de propiedades generalmente ubicada en la parte inferior de la ventana ponemos el nombre del textfield, y repetimos el procedimiento hasta cambiárselo a los 3.

1x1.trans Envio de variables con GET y POST en PHP

El código:



Ahora cambiaremos el mensaje de los botones, para ello necesitamos cambiar el atributo VALUE eliminar el mensaje por defecto y reemplazarlo por el de nuestra elección.

1x1.trans Envio de variables con GET y POST en PHP

El código:


Por ultimo ajustaremos el Formulario, en la etiqueta FORM debemos fijarnos en dos atributos el llamado ACTION y el METHOD, el ACTION será a la pagina a donde enviará el formulario (nuestra pagina en PHP) y METHOD es la forma en la que enviará los valores.

 

Guardaremos la pagina con el nombre "formulario_miniagenda.html"

 

UTILIZANDO EL METODO POST.

Bien nuestra etique FORM esta así:

Como podemos ver tenemos como método a utilizar POST (method="post") y el ACTION se encuentra vacío, ahí es donde debemos poner la ruta hacia nuestro SCRIPT PHP lo llamaremos miniagenda.php y la etiqueta pasará a verse de la siguiente forma:

Con esto tendremos finalizada la preparación de nuestro formulario para el envio de datos. No olvidemos que haremos referencia las variables utilizando el atributo NAME que especificamos en el Formulario.

RECIBIENDO DATOS DESDE PHP ENVIADOS POR EL METODO POST.

La recepción de datos la hacemos de la siguiente forma:

$nombre_de_variable=$_POST['nombre_de_objeto'] ;

Nota: En PHP toda variable va precedida del símbolo $

Entonces para recibir nuestras variables usaremos lo siguiente:

$nombre=$_POST['nombre_form'] ;
$apellido=$_POST['apellido_form'] ;
$tel=$_POST['tel_form'];

Con ello tendremos almacenado las 3 variables para poder utilizarlas en nuestro Script, así que imprimiremos los valores de dichas variables, utilizando la sentencia ECHO, ahora veremos el Script completo:

Nota: Sintaxis de la sentencia ECHO: echo "cadena a desplegar"; o echo $variable;

Ahora colocaremos el Script que acabamos de realizar, hay 2 formas abrir un bloc de notas, escribir el código y guardar el archivo como "miniagenda.php" o en el dreamweaver hacer clic en el Menú ARCHIVO/NUEVO y en el menú que aparece escoger PAGINA DINAMICA y seleccionar PHP, entonces procedemos a colocar el Script entre las etiquetas BODY, es una buena práctica utilizar el código PHP en una Pagina HTML, aunque con el puro Script en el archivo Funciona.

Ahora probaremos que funcione, según el Servidor que instalemos la carpeta por la cual accederemos a nuestras paginas almacenadas en el puede ser WWW o HTDOCS ahi debemos copiar ambos archivos y acceder a través del navegador web con la dirección http://localhost/formulario_miniagenda.html, rellenamos el formulario y le damos Aceptar, en la siguiente pagina obtendremos una pagina en blanco con los datos que enviamos.

Una ventaja de usar POST es que los valores no se muestran y que es mayor la cantidad de datos que podemos enviar por este método.

Ahora modificaremos levemente el formulario y el script para que funcione con el método GET …

RECIBIENDO DATOS DESDE PHP ENVIADOS POR EL METODO GET.

Lo primero que haremos es modificar la etiqueta FORM, cambiaremos el método de POST a GET se verá de la siguiente forma:

En el script PHP debes reemplazar "$_POST" por "$_GET" como se muestra a continuación:

Como verán no cambiamos el nombre de los objetos, esto es por una sencilla razón el formulario enviará a través de la URL el nombre de los campos con su valor asociado, como habíamos mencionado haremos referencia al contenido de los campos a través del nombre que le hayamos puesto al objeto.

Una vez hecho esto cargamos nuestra pagina como lo hicimos antes, rellenamos los campos y le damos enviar, notarán que el resultado en la pagina web es el mismo pero la URL será diferente.

http://localhost/miniagenda.php?nombre_form=DaHouseCat&apellido_form=PHP_RULZ&tel_form=555-55555&Submit=Aceptar

Fijándonos nos damos cuenta que a partir del símbolo "?" tendremos el nombre del objeto en el formulario con el contenido del mismo. Esta es la particularidad de GET pasar las variables por la URL, pero me van a decir que caso tiene hacer esto, si POST lo hace manteniendo la dirección limpia… bueno cuando programamos en PHP a veces requerimos hacer cosas dinámicamente, en particular un recurso muy socorrido es la creación de un link con variables, veamos un ejemplo:

Construimos un link de la siguiente manera y lo colocamos después de la etiqueta </form>

1x1.trans Envio de variables con GET y POST en PHP

El pase de valores suele ser muy útil en la creación de paneles o paginas dinámicas, WordPress el gestor de Blogs lo utiliza mucho así como el Joomla y otros CMS (Content Manager System).

Bueno me dirán ¡Nos prometiste envío de Arreglos!, si ahí vamos…

Enviando Arreglos con PHP.

Los arreglos son la estructura de datos más solicitada y utilizada en programación, bien el envío del arreglos es básicamente una pequeña modificación en nuestro formulario, lo que haremos ahora es modificar nuestro envío de datos para que lo mande a través de un arreglo y lo imprimamos con el Script PHP. La forma de hacer que una serie de valores se guarden en un arreglo es poniendo en el nombre del formulario el nombre del objeto con los símbolos "[]", entonces cambiaremos todos los nombres de los objetos por "datos[]" y el codigo del formulario se verá así:


Nombre:

Apellido:

No. Telefonico:





Nótese que no cambie el método GET, lo sigo mandando por la URL. Ahora veremos como cambia el Script PHP

Lo primero que notamos es que recibimos con la variable $datos y que esta le dice por medio de GET que tome al objeto datos de la URL, fíjense que no tiene los "[]" de esta manera obtendremos los datos, la impresión del arreglo se da usando los indices, como vemos la posición cero "$datos[0]" contiene el nombre y así sucesivamente, entonces por intuición nos damos cuenta que recibimos los datos de manera ordenada, según nuestro formulario.

Y ahora se preguntaran como hacerlo por POST, simplemente en lugar de poner GET pongan POST la estructura no cambia en nada.

Hay un tercer método llamado REQUEST, este no nos sirve para enviar pero si para recibir, la ventaja que tiene este es que podemos recibir variables enviadas por cualquiera de los 2 métodos anteriores, si por curiosidad cambian el formulario para que envíe por GET y el Script lo dejan Recibiendo por POST verán que no capturarán nada, pero si cambian el método en el script por $_REQUEST verán que aunque manden el formulario por GET o POST este siempre lo recibirá.

Por ultimo cabe señalar que POST es más utilizado para el envío de información sensible, formularios de login o de ese tipo aunque no quiere decir que sea exclusivamente para eso, la principal diferencia es que POST permite el envío de mucha más información que GET.

Bueno así finalizamos este tutorial de envío de variables utilizando POST y GET, así como el envío y recepción de Arreglos.

Si tienen alguna duda no olviden dirigirla a los foros de BLUEForte.


Ver Ejemplos:
Ver Ejemplo de Envio por GET
Ver Ejemplo de Envio por POST
Ver Ejemplo de Envio de Arreglos por GET
Ver Ejemplo de Envio de Arreglos por POST

Descargar:

Descargar Archivos de los Ejemplos



Visitantes llegan a esta pagina buscando:
  • enviar variable por post php
  • post get php

  • post y get php

  • php enviar variables post
  • enviar arreglo por post
  • get y post php

  • enviar variables post php
  • enviar variable php post
  • get y post en php

  • get post php

21 Comentarios en Envio de variables con GET y POST en PHP
  1. josefina dice:

    hola!

    mira lo que esta en la pagina me parece excelente
    pero yo necesito saber como descargar archivos que estan en la base de datos y enviarlos al navegador
    para que se visualizen .

  2. programador dice:

    meti datos de una colomna de una tabla a un array en php, ahora como puedo mandar este array a otra pagina de php

  3. Van dice:

    disculpen , alguien sabe si puedo enviar variables de formularios con ambos metodos , por el post con un boton submit y una segunda opcion con un boton en la funcion onClick por url , las variables va a 2 lugares distintos,por favor si alguien sabe algo, deantemano muchisimas gracias !!!!

  4. Paulino dice:

    Hola,

    Y si quisiera adjuntar unos datos ya establecidos y sumar los de cada casilla del formulario y enviarlos por url a un servidor externo y me devolviese datos.

    C

  5. Gustavo dice:

    No funciona.. Tengo que hacer alguna configuraci

  6. DaHouseCat dice:

    Todo funciona esta 100% probado, los archivos de ejemplo y descarga se los debo, los perd

  7. dani dice:

    mi duda es como recargar una pagina, mandandole valores….es decir, quiero hacer una busqueda segun algunos parametros, y al hacer clic en el boton quiero que el action sea la misma pagina, que segun unos flags q yo mande como parametros, pueda mostrar en la misma pagina el resultado de la busqueda….hago lo que dice en la explicacion anterior y no me funciona, talvez hay alguna restriccion cuando el action es la misma pagina…..se me pierden los valores que quiero enviar como parametros….
    si alguien entiende mi consulta y me puede ayudar , seria muy top
    garcias

    • jv dice:

      amigo creo q tiene c olocar en action el nombre de la misma pagina .php, para q ancle la informacion me entiende es anclar la informacion y mostrar en la misma pagina es decir recibir los datos en la misma pagina

  8. enrique dice:

    programo en php desde hace 2 a

  9. Alocao dice:

    Filtro por una variable “x” un formulario mediante $_POST["x"], recojo esa variable y la imprimo. Pero y si esa variable tiene m

  10. AlexCuba dice:

    Bueno soy principiante en de php, siempre he programado con flash y la verdad me encanto estar en este sitio, gracias a todos por eso del metodo get y post.

    sinceramente desde cuba un amigo mas.

  11. Oskym dice:

    Cuando verifiquen problemas para pasar via GET o POST lean lo siguiente:

    register_globals
    La directiva register_globals especifica si las variables EGPCS (Entorno, GET, POST, Cookies y Servidor) se registran autom

  12. Edward dice:

    Buen dia, una consulta… si deseo mediante un “FORM ACTION”, ir a un formulario, previa validacion de passsw (contraseña), pero si es errada la contraseña hacer un AUTOLLAMADO (utilizando el form action) y regresar a la pagina donde intentara otra vez logearse….Gracias…..como hago???

  13. Carlos Guardado dice:

    hola yo deseo saber como llamr una pagina una vez llenado un formulario y mandando un mensaje que todo salio correcto

  14. spedrot3 dice:

    tengo el siguiente codigo html que llama al php para cargar valores del formulario a la bd:
    1
    Nuevo Trabajo de Gado

    Ingresar Nuevo Trabajo de Gado

    Cota
    Autor
    Tema
    Tutor

    y el siguiente codigo php:

    Introducir nuevos trabajos de grado en el sistema

    <?php
    if (!$cota || !$autor || !$tema || !$tutor)
    {
    echo “No has introducido los datos requeridos.”
    .”Por Favor Vuelve a Intentarlo Nuevamente.”;
    exit;
    }

    $cota=doubleval ($cota);
    $autor=addslashes ($autor);
    $tema=addslashes ($tema);
    $tutor=addslashes ($tutor);

    @ $db=mysql_pconnet(“localhost”, “root”, “”);

    if (!$db)
    {
    echo “ERROR”;
    exit;
    }

    mysql_select_db(“comision”);
    $query = “INSERT INTO tesis VALUES (‘”.$cota.”‘, ‘”.$autor.”‘, ‘”.$tema.”‘, ‘”.$tutor.”‘)”;
    $result = mysql_query($query);
    if ($result)
    echo mysql_affected_rows().”Trabajo Introducido en la Bases de Datos.”;

    ?>

    ****el problema es que me bota el mensaje que le coloque al php que no e introducido los datos necesarios que estare haiendo mal que alguien me ayude pues soy nuevo en esto…

  15. LIZZY dice:

    necesito alguien urgente!!!! que pueda ayudarme por favor!!!

    lo que quiero hacer es sumar unos datos de una celda del formulario… por ejemplo….

    CELDA

    a

    b

    a

    a

    c

    c

    _____3_______(que aqui sume cuantas a tengo en la celda)

    _____1_______(que aqui sume cuantas b tengo en la celda)

    _____2_______(que aqui sume cuantas c tengo en la celda)

    estoy utilizando PHP!!!
    y por mas sencillo que se mire no puedo!!!!
    porfavor!!! necesito ayuda@!!!
    alguien puede darme su correo???
    si me reponde por favor! gracias

  16. LUIS ROJAS dice:

    TENGO UN FORMULARIO QUE ENVIA VARIABLES POR POST ME FUNCIONA BIEN PERO EN OTRA VERSION DEL XAMPP SE VE TODO BIEN PERO NO EJECUTA EL SCRIPT AL PRESIONAR EL BOTON NO SALE NI UN ERROR AL PARECER NO DECTECTA LAS VARIABLES

  17. Dante dice:

    Personalmente me gusta jugar con la función include para avisar al usuario el resultado de la consulta.

    les paso una pare del codigo que use en un formulario de envio de mensajes (pedir presupuesto y demas).
    ________________________________________________

    <?
    /* verifico si ya envio el formulario o lo esta por hacer */
    if($HTTP_POST_VARS["cmdEnviar"]==”Enviar”)
    {
    /* Leo las variables */
    $HTTP_POST_VARS["cmdEnviar"]=”nada”;
    $destino=”[email protected]”;
    $asunto=$HTTP_POST_VARS["asunto"];
    $email=$HTTP_POST_VARS["email"];
    $nombre=$HTTP_POST_VARS["nombre"];
    $mensaje=$HTTP_POST_VARS["mensaje"];
    $texto= “El Sr.”. $nombre. ” dice:\r\n”. $mensaje. “\r\nSu e-mail es:”. $email;
    $cabecera=”Enviado del sitio”;

    /* Verico el e-mail (version básica) */
    $aroba=”@”;
    $punto=”.”;

    if((strpos($email,$aroba))

    ________________________________________________

    El formulario tiene una variable “bandera” para saber si la pagina que imprimo es la primera, o si ya se realizo la consulta (cmdEnviar==Enviar). Suponemos que el formulario envía la consulta a la misma página.

    _______________________________________________

    Nombre:

    E-mail:

    Asunto:

    _____________________________________________________

    Espero les sirva.

  18. emmanuel dice:

    es muy buena la info como una buena alternativa al uso de variables por url, un buen server es easyphp
    http://fresprog.blogspot.com/2009/01/easy-php-tu-servidor-local-ahora-es-mas.html

  19. fresprog dice:

    Recomiendo utilizar el metodo $_get["mi-variable"] en vez de configurar en nuestro server la opcion register_globals=On en el archivo php.ini, segun mencionan los foros es inseguro.

    Lo podemos implementar de la siguiente manera.

    Index.php

    la direccion se escribiria asi


    mipagina.php?saludo=hola&nombre=usuario

    De esta manera podemos enviar de marea comoda y segura nuestras variables mendiante nuestra url.

  20. Nelson dice:

    GRACIAS MEN ESTABA BUSCANDO LO DEL LINK

    Enviar Datos de BLUEForte”

    BUENISIMO ERES UN DIOS GRACIAAAAAAAAASSSSSS

    no sabia como poner esto ya me podri de los botones