Pasar variables en php es muy fácil, lo primero que tenemos que saber es que el ámbito de una variable es el sitio donde la variable tiene validez, de no indicar otra cosa, la variable tendrá su ámbito dentro de la página en la que ha sido creada y no podrá ser utilizada en otra página. Podemos pasar variables en php en la misma página o pasarlas de una página a otra con el método $_POST, indicado para los formularios y los datos sensibles y con $_GET, indicado para enviar datos por la url. Vamos a ver los dos métodos y distintas formas de enviar los datos y recibirlos.

En el mismo documento con $_POST

Creamos un formulario que contenga un campo oculto con un valor que comprobaremos posteriormente al enviar el formulario. Comprobamos si ha llegado algo por post, para ello utilizamos $_SERVER[“REQUEST_METHOD”] para comprobar que se ha enviado algo por el método post contenga o no contenga datos, en mi opinión es más seguro que usar solo $_POST y de esta forma nos ahorramos los mensajes de error en caso de que no recibamos nada, en caso de no recibir datos mostraremos el formulario.

Una vez comprobado $_SERVER[“REQUEST_METHOD”] comprobamos el valor del campo oculto y si es correcto continuamos comprobando si el valor del campo nombre viene vacío, en ese caso mostraremos un mensaje para que el usuario sepa que no ha enviado nada, en caso de recibir los datos le mostramos un mensaje con su nombre.

 

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Pasar variables en php</title>
</head>
<body>
<?php
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		if ($_POST['vienedelform'] == 'si') {
			if ($_POST['nombre'] != '') {
				echo 'Hola ' . $_POST['nombre'];
			}else{
				echo 'Has olvidado poner tu nombre';
			}
		}
	}else{
?>
	<form method="post">
		<input type="hidden" name="vienedelform" value="si" />
		<input type="text" placeholder="Nombre" name="nombre" value="" />
		<input type="submit" value="Enviar" />
	</form>
<?php } ?>
</body>
</html>

 

Enviar el formulario a otro documento con $_POST

Creamos un formulario nuevo y lo apuntamos a un archivo nuevo al que vamos a llamar respuesta.php, en este caso no comprobaremos nada en el index y haremos todas las comprobaciones en el archivo nuevo que va a ser el que reciba los datos por post.

 

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Pasar variables en php</title>
</head>
<body>
	<form action="respuesta.php" method="post">
	 <input type="hidden" name="vienedelform" value="si" />
	 <input type="text" placeholder="Nombre" name="nombre" value="" />
	 <input type="submit" value="Enviar" />
	</form>
</body>
</html>

 

Creamos el archivo respuesta.php en el que vamos a hacer las mismas comprobaciones que antes, con la diferencia de que mostraremos un mensaje de error si se accede al archivo directamente por otra vía diferente a la del formulario.

 

<?php
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		if ($_POST['vienedelform'] == 'si') {
			if ($_POST['nombre'] != '') {
				echo 'Hola ' . $_POST['nombre'];
			}else{
				echo 'Has olvidado poner tu nombre';
			}
		}
	}else{
		echo 'Ha ocurrido un error';
	}
?>

 

Enviar el formulario a otro documento con $_GET

Para pasar variables por el método $_GET tenemos que tener en cuenta que los valores que pasamos son visibles en la url por lo que debemos asegurarnos de que los datos que enviamos no sean datos sensibles como un email o password. Creamos un enlace que apuntará al archivo donde queremos recoger los valores enviados, este enlace debe terminar con ?nombre_variable=valor_variable. Si queremos pasar más variables en el enlace lo haremos con &, Ej: ?nombre_variable=valor_variable&nombre_variable2=valor_variable2. En el caso de que existan carácteres especiales utilizaremos urlencode() para enviar los valores, Ej: ?nombre_variable=<?php echo urlencode(‘valor_variable’); ?>.

 

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Pasar variables en php</title>
</head>
<body>
	<a href="respuesta.php?variable=<?php echo urlencode('valor');?>">Ir a respuesta.php</a>
</body>
</html>

 

La url a la que nos tiene que llevar el enlace es:
dominio.com/respuesta.php?variable=valor
Ahora podemos crear el archivo respuesta.php donde usaremos la variable recibida.

 

<?php
	echo $_GET['variable'];
?>

También podemos tener varios enlaces con una misma variable pero diferentes valores en cada una de ellas.

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Pasar variables en php</title>
</head>
<body>
	<p><a href="respuesta.php?variable=valor1">Valor1</a></p>
	<p><a href="respuesta.php?variable=valor2">Valor2</a></p>
	<p><a href="respuesta.php?variable=valor3">Valor3</a></p>
</body>
</html>

 

Para comprobar si una variable tiene algún valor asignado usaremos de nuevo isset(). En este caso, en vez de anidar tantos bucles if, utilizaremos un switch, que pienso que en este caso es más adecuado, si no se recibe nigún dato, mostraremos un mensaje de error.

 

<?php
	if( isset($_GET["variable"]) ){
		$consulta=($_GET['variable']);
		switch ($consulta) {
			case 'valor1':
				$variable = "valor1";
			break;
			case 'valor2':
				$variable = "valor2";
			break;
			case 'valor3':
				$variable = "valor3";
			break;
		}
		echo $consulta;
	}else{
		echo 'No se han recibido datos';
	}
?>

 

Estos son los métodos para enviar variables en php, aunque existen otras formas de guardar los datos más complejas como pueden ser las sesiones y las cookies de las que hablaremos más adelante.

Valoraciones


4 valoraciones

  • kamisama 24 mayo, 2021

    entendible 😎👌 tenga un buen dia sr.

  • FERNANDO 27 noviembre, 2020

    Y SI QUIERO MANDAR LOS DATOS EN UN LOGIN Y YA TENGO LA VERIFICACION CON EL ACTION SE SALTA TODO MI PROCESO ASI NO ME SIRVE

  • enrique 18 julio, 2020

    Muy bien explicado

  • Mario Alarcon 30 diciembre, 2019

    Muy Bueno.

Tu valoración


* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

CAPTCHA


Utilizamos cookies propias y de terceros para el correcto funcionamiento de la web, personalizar el contenido y mostrar publicidad en función de las preferencias del visitante. Puedes encontrar más información en nuestra Política de cookies.

ACEPTAR
Aviso de cookies