Método GET
Es mucho más veloz, pero tiene ciertas limitaciones como la cantidad de datos a enviar, no se permite enviar archivos y se visualiza el valor enviado por el URL, lo que lo puede hacer aparentemente frágil para sistemas de autentificación, pero si se le añade encriptamiento resulta en un método seguro y veloz.Supongamos el siguiente formulario en una página llamada "formulario.html"
<!DOCTYPE html>
<html>
<head>
<title>Formulario GET</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="receptorget.php" method="GET">
<label>Nombre</label><br/>
<input type="text" name="txtNombre"/><br/><br/>
<label>Clave</label><br/>
<input type="password" name="txtClave"/>
<br/><br/>
<select name="txtIdioma">
<option value="esp">Español</option>
<option value="ing">Inglés</option>
<option value="fra">Francés</option>
</select><br/><br/><br/>
<button type="submit">Enviar por GET</button>
</form>
</body>
</html>
Se aprecia que en el formulario aparecen dos atributos con sus respectivos valores que son:
- action: indica a que página viajarán los datos
- method: indica la forma de enviar los datos, en este caso GET
La salida visual sería:
En una página llamada "receptorget.php" vamos a recibir estos valores enviados por GET, el URL que aparecerá en el navegador tendrá la siguiente forma:
http://localhost/test/receptorget.php?txtNombre=Paul&txtClave=12345&txtIdioma=ing
El código de "receptorget.php" sería:
<?php
$nombre = $_GET["txtNombre"];
$clave = $_GET["txtClave"];
$idioma = $_GET["txtIdioma"];
echo "Nombre: $nombre <br/>";
echo "Longitud de la clave: " . strlen($clave) . "<br/>";
switch ($idioma) {
case "esp":
echo "Habla español";
break;
case "ing":
echo "Habla inglés";
break;
case "fra":
echo "Habla francés";
break;
case "":
echo "No ingresó idioma";
break;
default:
echo "ERROR";
break;
} ?>
El resultado visual sería el siguiente:
Nombre: Paul Longitud de la clave: 5 Habla inglés
Método POST
Es menos veloz que el método GET, pero permite enviar una gran la cantidad de datos, incluidos archivos como fotos y no se visualiza los valores enviados en el URL, lo que lo convierte en el método favorito para inicio de sesión.Supongamos el siguiente formulario en una página llamada "formulario.html"
<!DOCTYPE html>
<html>
<head>
<title>Formulario GET</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="receptorget.php" method="POST">
<label>Nombre</label><br/>
<input type="text" name="txtNombre"/><br/><br/>
<label>Clave</label><br/>
<input type="password" name="txtClave"/>
<br/><br/>
<select name="txtIdioma">
<option value="esp">Español</option>
<option value="ing">Inglés</option>
<option value="fra">Francés</option>
</select><br/><br/><br/>
<button type="submit">Enviar por POST</button>
</form>
</body>
</html>
Se aprecia que en el formulario aparecen dos atributos con sus respectivos valores que son:
- action: indica a que página viajarán los datos
- method: indica la forma de enviar los datos, en este caso POST
La salida visual sería:
En una página llamada "receptorpost.php" vamos a recibir estos valores enviados por POST, el URL que aparecerá en el navegador no tiene ninguna modificación
El código de "receptorget.php" sería:
<?php
$nombre = $_POST["txtNombre"];
$clave = $_POST["txtClave"];
$idioma = $_POST["txtIdioma"];
echo "Nombre: $nombre <br/>";
echo "Longitud de la clave: " . strlen($clave) . "<br/>";
switch ($idioma) {
case "esp":
echo "Habla español";
break;
case "ing":
echo "Habla inglés";
break;
case "fra":
echo "Habla francés";
break;
case "":
echo "No ingresó idioma";
break;
default:
echo "ERROR";
break;
} ?>
El resultado visual sería el siguiente:
Nombre: Paul Longitud de la clave: 5 Habla inglés
El método $_Request["name"]
PHP tiene como método de entrada a GET y POST, pero cuando se desconoce el medio por el que llegarán los datos se puede recurrir al método $<?php
$nombre = $_REQUEST["txtNombre"];
$clave = $_REQUEST["txtClave"];
$idioma = $_REQUEST["txtIdioma"];
?>
Modificaciones de seguridad
Por cuestiones de seguridad y adaptándonos a los nuevos cambios se reemplaza los $_GET y $POST por:<?php
$dia = filter_input(INPUT_GET, 'txtIdioma', FILTER_SANITIZE_STRING);
$clave = filter_input(INPUT_POST, 'txtIdioma', FILTER_SANITIZE_STRING);
?>
No hay comentarios:
Publicar un comentario