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:
$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:
$v1 = $_GET['variable1']; $v2 = $_GET['variable2'];
96 comentarios
muy bien
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.
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.
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…
Hola marlen, no entiendo bien lo que quieres conseguir. Si me lo explicas mejor, quizás pueda ayudarte.
yo buscaba como pasar datos de un usuario de un juego a otro server de el mismo juego
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.
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?
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.
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 :)
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.
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??
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.
Error undefined index descr. ¿Porque?
Descripcion :
Salva, intenta explicar lo que te ocurre. Con estos datos no puedo ayudarte.
Mil Gracias, me acabas de salvar la vida, usando el metodo del Paso de variables mediante URL y $_GET.
Funciona de maravilla, Gracias :)
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…
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']
.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….
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
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:
name="nombre"
method="post"
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!
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.
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.
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?
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.
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!
Lo siento, done pone.
«Pág. destino: » y » Pág. origen»:
Elige tu
es así no me lo había publicado antes.
No se porque pero no se me publica el contenido de los H1
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.
Hola y si quiero que los datos ingresados en el formulario se pasen a otro servidor. cómo lo puedo hacer?. Me puede ayudar?
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.
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!
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.
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
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.
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
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.
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
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.
Gracias loco lo voy a probar muy buena explicación.
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!!!
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.
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.
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.
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.
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.
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.
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
Hola Edgar, para ayudarte necesito más información. Ver el código. Puedes subirlo a un tester online, por ejemplo.
gracias, estuve buscando un rato en internet y esta información es la mas clara
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.
Hola Carlos,
puedes envolver la imagen en una marca
a
para convertirla en un enlace. En el parámetrohref
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
.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?
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.
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
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?
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 :)
Hola Ever, no, no puedes copiar datos de esta manera a una página externa.
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
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.
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
Recomiendo que como medida de seguridad envies una clave que al recibirla puedas decifrar, para saber que se trata de una fuente segura, ejemplo:
enviar.php
<input type='hidden' name='clave' value='’>
recibir.php
<?php
if($_POST("clave)==sha1("mi.clave")){
// accion a realizar
}
En el comentario anterior en el value del input no se puso que era:
value= » «
aaaaaahhhh se borra jeje, perdon, es
(abre php) echo sha1(«mi.clave») (cierra php) dentro del value del input
puedes especificar para que pagina son cada codigo? porfa
Hola José,
en el artículo está especificado para qué página es cada código: página de origen y página de destino.
Hola, buenas tardes, acabo de ver tu artículo y me gustaría que me apoyaras con un problema que tengo.
Hace unos días adquirí un par de libros digitales con una empresa española, los accesos son mediante un usuario y contraseña, pero no puede haber dos usuarios conectados al mismo tiempo, ya que se desconectan las cuentas, quisiera saber si podría hacer este mismo proceso de pasar las variables fijas (usuario y contraseña de los libros) de una página que administraría las conexiones a la página que me da acceso a los libros, como si fuera lo mismo, pero administrado por mi y evitando que alguien más acceda a mi sesión de usuario, agradezco su apoyo.
Hola Julio,
el código explicado en este post de cómo pasar variables entre páginas web no permite hacer lo que necesitas.
existe algún otro código que permita realizar dicha función???
Hola , gracias de antebrazo , he entrado hace poco a una empresa , y me han mandado que complete una pagina web que ya había sido empezada por otros usuarios y está creada con XCRUD.(php)
Mi pregunta es , tengo tabla clientes y tabla correos , relacionadas entre sí por el id_cliente que existe en las 2 tablas; En la tabla correos cuando creo uno nuevo me muestra todos los usuarios que están en mi base de datos,
lo que quiero es que cuando seleccione un cliente, en el campo email de la tabla correos se rellene con el email de dicho usuario escogido previamente , pero lo importante es que me lo rellene nada más escoger el cliente , porque cuando le doy a guardar automáticamente me lo envía , pero como no hay email peta .
Muchas gracias
Retomo: solo quiero latitud y longitud del que envia el formulario. Desde ya muchas gracias.
Hola Nicolás, estos cambios en formularios sin recargar la página en la que estás tienes que hacerlo con AJAX.
Te queri consultar, tengo un formulario html que se envia automaticamente lo toma el php y lo pasa a un txt. y quiero agregar que me tome la localizacion dell que lo envia solo los parametros y que porsupuesto no pida autorizacion ya que es envio automatico. como puedo hacerlo?
Para escribir en un archivo txt usando PHP puedes consultar este tutorial.
Mi duda es ¿y qué pasa si queremos pasar $variable a otra página?
Hola José María,
eso es exactamente lo que hace el código que contiene este mini-tutorial.
Hola, he estado buscando informacion en internet de como recoger valores en un formulario y enviarlos a otra pagina y presionar un boton de accion.
Mi idea es la siguiente para q me entiendan. Tengo una internet pero tiene un portal cautivo que se pone usuario y contrasenna para iniciar sesion. Pero en mi negocio cree mi propio portal cautivo con usuarios para los clientes y lo que quiero es que desde mi portal cautivo recoger el nombre de usuario y la contrasenna del cliente y enviarlo hacia el login de la red que tiene internet y presionar el boton de aceptar.
Como podria hacer esto?
La pagina del portal cautivo donde quiero pasar los datos esta en https.
Saludos espero por su ayuda
en la pagina dos tienes que poner
Hola tengo una duda espero alguien pueda ayudarme, estoy pasando como variable en una url el id de usuario pero quisiera saber como proteger la vista ya que si cambian el numero de id pueden acceder al id de otro usuario y no quisiera que eso pase
Hola Mitch, si quieres pasar variables de una página a otra que no quieres que sean públicas, el método $_GET no es la manera. Puedes usar $_POST en su lugar. Además, para asegurar la privacidad de los datos enviados las páginas desde las que estés enviando y recogiendo esos datos deberían funcionar usando el protocolo HTTPS, no HTTP.
excelente explicacion mil gracias
Hola, yo no sé qué estoy haciendo mal, pero no me pasa el valor numérico de mi variable sino el texto plano. Simplemente quiero pasar un id.
Tengo:
Origen:
$var = $_GET[‘id’] //el valor de var es por ejemplo 46
Destino:
$idd = $_GET[‘id’] //el valor que contiene idd es el string var, no el valor numérico 46
Estoy fallando en la sintaxis? o estoy intentando algo que no se puede hacer así?
Muchas gracias si me pudieras responder. Un saludo
Para recuperar una variable usando el protocolo GET, tienes que incluirla en la URL. Por ejemplo, si quiero pasar la variable id de la página https://voragine.net/pagina1 a la página https://voragine.net/pagina2 haré lo siguiente:
$var = $_GET[‘id’] //el valor de var es 46