martes, 9 de septiembre de 2014

El método $_REQUEST en PHP



1. El método $_REQUEST

$_REQUEST es una tabla asociativa que reagrupa los métodos $_GET, $_POST y $_COOKIE. Esta tabla también es superglobal; por lo tanto, es accesible en todos los scripts PHP. Si los datos se envían con POST, GET o COOKIE, se pueden recuperar con $_REQUEST.

En el siguiente ejemplo, la página formulario.php contiene dos botones : uno para enviar los datos con POST y el otro con GET.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejemplo con REQUEST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<SCRIPT lenguaje="JAVASCRIPT">
function enviar_formulario() {
//llama la página recibe_post.php con transmisión de las
//variables en la URL
document.location.href="recibe_post.php?nombre="+documento.formulario.
nombre.value+"&nombre="+documento.formulario.nombre.value;
}
</SCRIPT>
</head>
<body>
<form action="recibe_post.php" method="POST" name="formulario">
<h2>Formulario para enviar el nombre y los apellidos</h2>
Nombre: <input type="text" name="nombre" /><br />
Apellidos: <input type="text" name="apellidos" /><br />
<input type="submit" name="enviarPOST" value="Enviar por POST" /> &nbsp;
<input type="button" name="enviarGET" value="Enviar por GET"
onClick="enviar_formulario()"/>
</form>
</body>
</html>

El método $_REQUEST, que recupera los datos de la tabla $_GET y de la tabla $_POST, se puede utilizar para recibir los datos de las dos tablas al mismo tiempo.

La página recibe_post.php es:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejemplo con REQUEST</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<h2>Recuperación de datos por $_POST y $_GET</h2>
<?php
if (isset($_REQUEST["nom"])) {
echo "Su apellido es:".$_REQUEST[’apellido’]."<br />";
}
if (isset($_REQUEST["nombre"])) {
echo "Su nombre es:".$_REQUEST[’nombre’];
}
?>
</body>
</html>

Si hace clic en enviar por GET o en enviar por POST, da como resultado:

Recuperación de datos por $_POST y $_GET
Su apellido es:MORALES
Su nombre es:David

La función import_request_variables permite crear de manera automática una variable por cada dato que se ha recuperado por GET, POST o COOKIE, y que está obsoleta desde la versión PHP5.4.


  • Zonas con el mismo nombre

Si en un formulario dos o más zonas tienen el mismo nombre, se utilizará la última.

Por ejemplo:

<form action=”recibe_post.php” method=”POST” name=”formulario”>
<h2>Formulario para enviar el nombre y los apellidos</h2>
Apellido: <input type=”text” name=nombre /><br />
Nombre: <input type=”text” name=nombre /><br />
<input type=”submit” name=”enviarPOST” value=”enviar por POST” />
</form>

El valor que se introduce en la zona junto al nombre se transmite por $ POST, ya que las dos zonas se denominan nombre.

  • Varios formularios en la misma página

Si hay varios formularios en la misma página, estos formularios son independientes y cada botón submit envía los valores del propio formulario.

Por ejemplo:

<form action=”recibe_post.php” method=”POST” name=”formulario”>
<h2>Formulario para enviar el nombre y los apellidos</h2>
Apellido: <input type=”text” name=apellido1 /><br />
Nombre: <input type=”text” name=nombre1 /><br />
<input type=”submit” name=”enviar1” value=”enviar 1” />
</form>

<form action=”recibe_post.php” method=”POST” name=”formulario2”>
<h2>Formulario para enviar el nombre y los apellidos</h2>
Apellido: <input type=”text” name=apellido2 /><br />
Nombre: <input type=”text” name=nombre2 /><br />
<input type=”submit” name=”enviar2” value=”enviar 2” />
</form>

Si pulsa en el botón enviar1, solo se envían los valores de los campos nombre1 y apellido1.



Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada