Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo pasar variables de una página a otra en una web con PHP

Imago voragine.net
[actualizado el ]

Hay dos métodos para pasar variables de una página a otra: utilizando un formulario o mediante la URL. Cada uno tiene una manera de recuperar los datos en la página de destino, el primero mediante el uso de la variable global $_POST, el segundo mediente $_GET.

Utilizaremos el primer método cuando tengamos que usar un formulario para que el usuario introduzca algún valor, como por ejemplo en un formulario de búsqueda o en uno de contacto que permita enviar un mensaje. Utilizaremos el segundo cuando sean variables que no dependan en absoluto de la interacción del usuario, sino que sencillamente queramos transferir de una página a otra.

Paso de variables mediante formulario y $_POST

En la página de origen construiremos un formulario. Transferiremos a la página de destino las variables deseadas mediante la marca input de tipo hidden, con el atributo name las definiremos, y con el atributo value les asignaremos un valor.

<form action="http://url.pagina.destino" method="post">
 <input type="hidden" name="variable1" value="valor1" />
 <input type="hidden" name="variable2" value="valor2" />
 <input type="text" value="" />
 <input type="submit" value="Buscar" />
</form>

Para recuperar las variables en la página dedestino bastará utilizar la variable global $_POST:

<?php
$v1 = $_POST['variable1'];
$v2 = $_POST['variable2'];
?>

Paso de variables mediante URL y $_GET

En la página de origen construiremos un enlace a la página de destino que incluya las variables a transferir, de la siguiente manera:

<a href="http://url.pagina.destino/?variable1=valor1&variable2=valor2">Enlace a página de destino</a>

Para recuperar las variables en la página dedestino bastará utilizar la variable global $_GET:

<?php
$v1 = $_GET['variable1'];
$v2 = $_GET['variable2'];
?>

62 comentarios

    • Por beeto •

    muy bien

  1. gracias por tu articulo. Muy interesante. Tengo una duda y te estaria altamente agradecido si me la respondes. Este metodo sirve cuando pasas variables entre varias paginas, me explico. tengo una variable en la pagina 1, pasas a la pagina 2, pasas a la pagina 3, debes utilizar la variable en la pagina 3. Se puede hacer esto con este metodo?. Agradecido de antemano. Saludos.

    1. Hola francisco,

      sí, con $_GET y $_POST se pueden pasar variables entre páginas. Con $_GET utilizando la URL y con $_POST utilizando un formulario.

      En la primera página puedes hacer que el usuario introduzca la información mediante un formulario. En la segunda las recoges con $_POST. A partir de este punto, basta ir enviando las variables mediante la URL y recogiéndolas con $_GET.

    • Por marlen •

    ola que tal mm después de a ver terminando en la primera pagina de agregar un limite de imágenes quiero que la siguiente los siga agregando como puedo hacer esto para que me muestra sucesivamente…

    1. Hola marlen, no entiendo bien lo que quieres conseguir. Si me lo explicas mejor, quizás pueda ayudarte.

    • Por asdfghk •

    yo buscaba como pasar datos de un usuario de un juego a otro server de el mismo juego

    1. Eso depende de cómo esté programado.

      En cualquier caso para pasar datos de un servidor a otro no te vale esta receta.

      Ésta explica como pasar datos de una página a otra dentro de la misma web, lease el mismo dominio.

  2. Muy clara tu explicacion. Ojala escribas sobre mas temas, yo estoy empezando en esto y tengo muchas dudas. ahora mis preguntas:
    Como deben ser pasados los valores de login y passwod a una pagina con codigo php que verifica los datos? pueden mezclarze los dos metodos? es decir una pagina puede pasar valor con post y con get?
    Que pasa si mando el password por get en la url? por ejemplo encriptado con sha1?

    1. Hola liliana, con respecto a los temas, si tienes alguna sugerencia, adelante, proponla y veo si es posible escribir sobre ello.

      Tus preguntas: puedes mezclar POST y GET sin problema, pero no sé si es muy útil. En cuanto a pasar un password por GET, no es muy recomendable, ya que estará a la vista en la URL, aunque esté encriptado. Tampoco sé bien la utilidad de pasar el password de una página a otra… Si me cuentas más sobre el caso, quizás te pueda sugerir una solución alternativa.

    • Por liliana velez •

    gracias por las respuestas. Estoy modificando un programa que recibe los datos de login, password y sucursal y luego los manda a otro script php que verifica los datos con base a tablas mysql user y user-sucursl ademas de realizar otras tareas. (seguramente podria hacerse todo en un solo script, pero hace el codigo mas largo) El que desarrollo este programa, lo hiizo pasando los datos a la url. El password estaba en texto claro. Mi tarea es solo encriptar el pasword. Pero ahora estoy cambiando al envio por post.
    Sobre sugerencias, tengo particularmente interes en como mejorar el performance de una aplicacion cuando el problema no esta en el rendimiento de la Base de datos o la capacidad del servidor linux, en mi caso, sino en php. Hay tecnicas para programar en php aplicaciones de alto rendimiento? Seguro tendre mas sugerencias mas adelante.
    gracias de nuevo :)

    1. Liliana, puedes monitorizar los tiempos de carga de trozos de código PHP mediante microtime, y así saber cuáles son los más pesados y dónde puedes optimizar.

    • Por liliana •

    Tengo que poner este comando en todos los scripts… Uff!
    otra pregunta: Sabes que necesito instalar en Linux para poder enviar email con Php? En una maquina linux de prueba, instale Postfix y el mailutils de linux y funciona perfectamente. Lo que no se es si es lo mas indicado. Solo necesito enviar correo a un mail server. que pasa con Spam y problemas de seguridad?? hay que tomar alguna medida??

    1. Para monitorizar, sí, tienes que ir introduciendo esas órdenes de PHP.

      Para enviar correos desde una máquina linux, hay multitud de manuales que te permiten configurar un servidor de correo únicamente para enviar correo y no para recibirlo.

      Para uno de mis servidores, yo he seguido esta guía.

    • Por Salva •

    Error undefined index descr. ¿Porque?

    Descripcion :

    1. Salva, intenta explicar lo que te ocurre. Con estos datos no puedo ayudarte.

    • Por Daniel

    Mil Gracias, me acabas de salvar la vida, usando el metodo del Paso de variables mediante URL y $_GET.

    Funciona de maravilla, Gracias :)

    • Por Pedrito Rojas •

    Saludos, quisiera hacer una pregunta ya que tengo una duda y agradezco si pueden ayudarme, estoy diseñando un sistema de control de alumnos de un liceo, todo iba bien hasta que empece a paginar los resultados los cuales los muestra de 10n en 10, cuando la consulta es general todo va bien pero cuando es por año la cosa se complica porque cuando pulso para que me muestre los resultados siguientes o sea desde el 11 hasta el 20 me dice Notice: Undefined index:Grado en….ta ta ta.. donde Grado es la cadena que trae desde el formulario y no se como hacer para que me guarde esa variable y no me diga que ese valor esta indefinido.
    si pueden ayudar se los agradezco de corazon, Gracias…

    1. Hola Pedrito,

      lo más sencillo es que pases esa variable por URL, de la siguiente manera:

      http://example.org/?variable=valor

      y la recuperes en la página de destino con $_GET['variable'].

        • Por Pedrito Rojas •

        Gracias, pondré eso en practica así no me solucione el problema estaré agradecido por haber respondido.
        Dios va a darte cada día mas sabiduría por ayudar a otros, así lo ha hecho conmigo….

    • Por Nidia •

    Hola, tengo casi el mismo problema que Pedrito Rojas,
    Tengo un form, donde quiero pasar una variable a otra página.
    Cuando pulso el botón, se abre la otra página, y aparece:

    Notice: Undefined index: nombre in ruta/pagina.php on line 4.

    Mi línea 4 de pagina.php: $nombre = $_POST[‘nombre’];

    También lo intenté mediante una función javascript, con ajax, pero me sale exactamente lo mismo. No se me ocurre qué puede ser…

    Alguna idea del por qué?? estaré agradecida por su/s respuesta/s.

    Saludooos,
    Nidis

    1. Hola Nidia,

      con “undefined index” se ha referencia al índice 'nombre' de dentro de $_POST. Quiere decir que no existe ningún índice “nombre” dentro de $_POST.

      Esto puede deberse a varias causas:

      • que en la página en la que tienes el formulario, no hayas definido ningún campo con el name="nombre"
      • que estés usando el método equivocado a la hora de enviar el form, GET en vez de POST. Comprueba method="post"
        • Por Nidia •

        Skotperez,

        method está como post, y en el formulario, el único dato que estoy enviando es nombre… tengo name=”nombre” e incluso, también dejé id=”nombre” pero no funciona x.x

        Qué otra cosa podría ser?

        Saludos!

  3. Hola Nidia, aparentemente todo estâ correcto… Quizas algûn error a la hora de escribir el côdigo… Revisa, si no encuentras error necesitarîa ver el côdigo completo.

    • Por MiguelDdac •

    Hola Skotperez,
    Utilizando el método GET , de forma que ya he pasado la primera variable de una página a otra, con lo cual mis clientes ya verian una selección de datos.
    Ahora en la página de destino quiero que me muestre la primera variable de forma que sea filtrada por una segunda que me eligiría unas determinadas ciudades y logicamente ocultarían los resultados que no se correspondieran con la ciudad elegida.
    No acabo de conseguir el resultado deseado,
    Me podrías ayudar, muchas gracias de antemano.

    1. Hola MiguelDdac,

      para poder ayudarte necesito más detalles de dónde está el problema. ¿No consigues pasar de la página anterior esa segunda variable? ¿No consigues hacer el filtro?

    • Por MiguelDdac •

    Hola Skotperez,
    Bueno he conseguido parte del objetivo, como es enlazar una página con la otra y que en el de la pág. de destino me apareciera el producto y la población deseados, te dejo el ejemplo:

    Pág. origen:
    Elige tu

    <a href="http://localhost/creacion/alimentacion_poblacion.php?anno= en Alaquas”>Alaquas

    Pág. destino:
    Elige tu

    Bien, la clave estaba en el enlace de la pág. de origen que no sabía como hacerlo y me empeñaba en modificar el de la pág. destino lo cual no debía tocar.
    Ahora lo que quiero es poder pasar además los datos; por el momento lo tengo filtrado por “producto” a la pág. de origen: con imágenes, enlace a web propia del producto en sí, el título, descripción y un jquery.
    Me falta aplicar el filtro de “cuidades” al pasar a la pág. de destino, pero estoy en ello.
    Si tienes alguna sugerencia…te lo agradecería.
    Lo dicho muchas gracias de nuevo.

    1. No puedo ver el ejemplo que me envías porque está en tu máquina local, localhost, a la que no hay acceso desde internet.

      En cualquier caso, el procedimiento para pasar datos de una página a otra es siempre el mismo. Si pasas varios mediante $_GET, no olvides añadir el caracter & entre ellos, para que la URL sea interpretada correctamente por la página de destino.

      Ánimo!

    • Por MiguelDdac •

    Lo siento, done pone.

    “Pág. destino: ” y ” Pág. origen”:
    Elige tu

    es así no me lo había publicado antes.

    • Por MiguelDdac •

    No se porque pero no se me publica el contenido de los H1

    1. En los comentarios de voragine.net solo se permiten ciertas marcas HTML. Los h1 no están entre ellas. Por eso no te los publica.

    • Por Mercedez •

    Hola y si quiero que los datos ingresados en el formulario se pasen a otro servidor. cómo lo puedo hacer?. Me puede ayudar?

    1. Hola Mercedez,

      para eso existen lenguajes y estándares libres de comunicación: XML, JSON, que te permiten exportar los datos de una web y recuperarlos en otro servidor mediante un intérprete como PHP, o javascript.

    • Por Rodrigo •

    Hola muy buenas tardes, estoy haciendo una aplicación de geolocalizacion, mi plan es hacer dos aplicaciones, la primera manda su ubicación a un servidor, la segunda app pide la ubicación de la primera app y el servidor se la proporciona mostrándola en un mapa de Google Maps. Mi pregunta es si esto lo puedo hacer con la variable $_GET? Estoy algo atorado en esta parte y me ayudaría muchísimo que alguien me ayudara un poco! Gracias y saludos!

    1. Hola Rodrigo,

      sí, el envío de datos entre dos servidores lo puedes hacer con $_GET, incluyendo los parámetros en la URL y recogiéndolos mediante la variable $_GET en el servidor de destino.

    • Por Yoselin •

    Hola, mi pregunta es: tengo un formulario y de ahi quiero generar una consulta en otra pagina, dependiendo del input que este yeno, el poblema es que si le doy recargar se pierden todos los valores guardados en las varibles, ojala me pudieran ayudar

    1. Hola Yoselin,

      no es mala cosa que se pierdan los valores cuando recargas la página, de lo contrario el formulario se podría enviar varias veces.

      ¿Para qué necesitas darle a recargar? Si lo que necesitas es matener los valores que te generan la consulta más tiempo, puedes usar cookies o base de datos para alojar las variables.

    • Por Mares •

    Disculpen soy nuevo, copie el ejemplo pero no me funciona, al menos el “echo” no me dice el valor de la variable, porfaor si me pudieran decir en que me estoy equivocando; aqui mi prueba

    ***************index.php***************

    Inicio de sesión

    ***************Control.php***************

    PHP Test

    1. Hola Mares, no se puede incluir código PHP en los comentarios.

      Si quieres mostrar código PHP puedes usar cualquiera de estas herramientas y poner aquí el enlace.

    • Por VIDA

    Buenas tengo que resolver un ejercicio que tenga 3 paginas el index respuesta1 y respuesta2. En el index tengo que tener un formulario en donde este una caja de texto un combo y un botón que envié, según la opción escogida enviar a respuesta1 o respuesta2 enviando lo que escribí en la caja de texto…. tengo este código que logre hacer pero solo me envía a 1 pagina….

    pagina1

    Problema

    Ingrese primer valor:

    perecedero
    comibles

    pagina2

    Problema

    ayúdenme por favor

    1. Hola VIDA, no se puede incluir código PHP en los comentarios.

      Si quieres mostrar código PHP puedes usar cualquiera de estas herramientas y poner aquí el enlace.

    • Por valen •

    Gracias loco lo voy a probar muy buena explicación.

    • Por Jordi

    Tio!!!! me acabas de salvar la vida!

    Yo creia que se podia postear las variables de otra manera como esta(en la hoja de destino):

    Name:
    E-mail:

    habiendo guardado las variables en un $_SESSION
    pero no me salian….

    he puesto esto:
    Name:
    E-mail:

    y como dios!!!

    thx!!!

    • Por Jose •

    Hola buenos días,
    Llevo un par de días atorado porque estoy intentando crear un html local sencillo que me recoja usuario y pasword y a través de un botón abra una web externa, por ejemplo hotmail o facebook, y le pase esos dos parámetros para que rellene esos datos en el formulario destino y haga login en diferentes webs sin pasar por cada uno de los logins de esas webs. He probado de todo, con js con php, incluso he intentado diseñar cookies pero no consigo poder pasar los parámetros. Una vez lanzo el comando windows.open desde el script y abre la web externa ya dejo de tener el control.
    Agradecería enormemente cualquier aporte o pista que me indique el camino.
    Muchisimas gracias por anticipado, un saludo.

    1. Hola Jose,

      si entiendo bien lo que quieres es iniciar sesión automáticamente en una web. Este procedimiento depende completamente de la web en la que quieras iniciar sesión, y puede variar enormemente de unas a otras.

      Mira por ejemplo este tutorial de cómo iniciar sesión automáticamente.

  4. Hola..
    quiero pasar variables mediante URL, pues no necesito los textbox, pro no quiero que se vean las variables a pasar pagina.php?variablen=valorn como es que lo puedo hacer?.. me podria tomar los type hidden? y aun asi pasarlos sin form?.. grs.

    1. Hola Daniel, las variables pasadas mediante GET siempre son visibles en la URL, ya que precisamente se pasan vía URL. Si no quieres que se vean puedes usar POST como método.

    • Por Ana •

    Hola, buenos días:
    Quiero eliminar un evento de la API Google Calendar. En el formulario, voy recorriendo el calendario y presento un listado con todos los eventos. El usuario selecciona cuál desea eliminar a través de un INPUT con NAME = OPCION y TYPE = RADIO. El formulario con POST tiene que pasar el ID del evento escogido para eliminarlo y no sé cómo hacerlo. Únicamente me pasa OPCION con valor ON y no sé cómo asociarle el ID del evento y que también lo envíe.
    Espero haberme explicado bien. ¿Me podrías ayudar?
    Muchas gracias. Un saludo, Ana.

    1. Hola Ana,

      lo que tienes que cambiar es el valor del campo input, el parámetro value, para que cuando se marque sea ese valor el que se pase a la siguiente página mediante el método POST.

    • Por edgar •

    tengo uno problema tengo un formulario y lo jalo a un php con metodo post
    y esos datos se insertan en una tabla despues quiero mandar uno de esos datos a un update pero no me los recupera en el update que puedo hacer

    1. Hola Edgar, para ayudarte necesito más información. Ver el código. Puedes subirlo a un tester online, por ejemplo.

    • Por jorge •

    gracias, estuve buscando un rato en internet y esta información es la mas clara

    • Por Carlos M •

    Consulta: Como puedo pasar un link y una variable (id) desde una imágen que tome la función de botón? Muchas gracias de antemano.

    1. Hola Carlos,

      puedes envolver la imagen en una marca a para convertirla en un enlace. En el parámetro href del enlace pondrás el enlace de destino. Le puedes añadir los parámetros que quieras pasar a la página siguiente de la siguiente manera: http://example.org?id=43.

  5. Hola tengo una pregunta, quiero enviar datos de usuario y contraseña a otra pagina que no es mía, te explico.

    Tengo mi paguina de logueo de usuarios pero quiero redireccionar con un boton a otra pagina que no es mia y quiero que el usuario se autologuee ya no ingrese sus datos.

    Como envio estos datos a la pagina destino que no es mia?? este tuto me sirve para ello?

    1. Hola fernando, a menos que esa página que no es tuya tenga un protocolo habilitado, una API, para iniciar sesión de manera remota, no podrás hacer lo que quieras.

      De hecho, puede que no sea una buena idea enviar la información de tus usuarios (username y contraseña) a otro servidor.

      Este tutorial explica cómo pasar información entre páginas PHP en el mismo servidor, no de manera remota.

    • Por Ariel Garcia •

    hola mi pregunta es:
    Como puedo comprar una variable que tengo en una pagina ya con un valor traido de la base de datos en diferentes paginas php
    por ejemplo:
    mi variable es $bandera, la cual contiene un valor 1 traido de la base de dato;

    ¿como puedo usar bandera en un if en cada pagina:
    en index.php
    if ($banderra ==1){ //pase algo}

    en otrapagina.php
    if ($banderra ==1){ //pase algo}

    me explico?gracias de ante mano

    1. Hola Ariel,

      Dices que la variable la tienes ya en la página, así que no la tienes que traer de la página anterior usando $_GET o $_POST.

      No entiendo tu pregunta. ¿Quieres saber cómo obtener un valor que está almacenado en base de datos?

    • Por Ever •

    hola! me gustaría saber si de esta manera puedo puedo llenar un formulario creado por mi, y esa información poder copiarla a una pagina externa, que no aya sido creada por mi mismo? no se si me explico :)

    1. Hola Ever, no, no puedes copiar datos de esta manera a una página externa.

    • Por sebastian •

    hola amigo. mira mi pregunta es la siguiente: tengo un formulario BUSCAR USUARIO que al enviarlo por POST me consulta en la Base de datos si existe ese Numero de cedula. si lo encuentra listo me me muestra el registro todo bien.
    lo que no se, es como hacer para que cuando no exista esa cedula en la BDD me aparezca esa cedula ya asignada en el formulario CREAR USUARIO en el INPUT cedula.
    lógicamente para pasar al formulario CREAR USUARIO lo hago por medio de un button que me direcione a el.
    agardeceria tu ayuda

    1. Hola Sebastián, puedes crear una condicional y en el caso de que no exista generarla dinámicamente con PHP y mostrarla en el input.

    • Por carlos •

    Hola… muy buenas tus explicaciones… tengo un problema te cuento a ver si puedes ayudarme… Muchas gracias por anticipado.
    Quiero saber como puede pasar en el servidor hosting con el que trabajo la segunda web a la primera… o sea quitar el index.php/main/automoviles para que cuando pinchen en centraldetasacion.es salga centraldetasacion.es/index.php/main/automoviles…

    Es una web con codeigniter… Gracias por tu tiempo a ver si me puedes echar una mano. Un saludo

Dejar un comentario

*
*

 

3 trackbacks