| Variables externas |
Variables externas
• PHP permite enviar datos desde un formulario hasta un script PHP que pasan a estar disponibles en este como variablesRegister globals=Off
Todo lo que te comenté hasta ahora funciona sin problema en el caso de que el php.ini tenga configurada como ON la opción register_globals, pero... si se te ocurre configurar esa opción como OFF o si simplemente tratas de utilizarlas en un servidor configurado así (es posible que tengas que utilizar un servidor remoto en el que no tengas privilegios para modificar el fichero php.ini) deberás hacer algunas modificaciones.Versiones PHP 4.2.0 o superior
Si tu servidor está utilizando la versión PHP 4.2.0 o una superior puedes utilizar las nuevas variables predefinidas:Una posibilidad añadida
Una amabilísmo visitante -¡¡gracias Log Out!!- me envia un mensaje sugiriéndome que comente la posibilidad de aplicar las variables de variables como ejemplo práctico aplicable en los ejemplos de script para la opción register_globals en off.Métodos de envio
Tal como te comentaba más arriba existen dos métodos posibles para en envío de información: get y post.
Variables externas...
<HTML> <HEAD> <TITLE>Ejemplo 9 - PHP </HEAD> <BODY> <form action='formu1.php' method='post'> Escribe tu nombre: <input type='text' name='nombre' value='' size=15><br> Escribe tu clave: <input type='password' name='clave' value=''><br> Elige tu color de coche favorito:<br> <input type='radio' name='color' value='Rojo'>Rojo</br> <input type='radio' name='color' value='Verde'>Verde</br> <input type='radio' name='color' value='Azul'>Azul</br> Elige los extras:<br> <input type='checkbox' name="acondicionado" value="Aire"> Aire acondicionado<br> <input type='checkbox' name="tapiceria" value="Tapicieria"> Tapiceria en piel<br> <input type='checkbox' name="llantas" value="aluminio"> Llantas de aluminio<br> ¿Cual es el precio máximo que estarías dispuesto a pagar?<br> <select name="precio"> <Option>Menos de 6.000 euros</option> <Option>6.001 - 8.000 euros</option> <Option>8.001 - 10.000 euros</option> <Option>10.001 - 12.000 euros</option> <Option>12.001 - 14.000 euros</option> <Option>Más de 14.000 euros</option> </select>
<textarea rows=5 cols=50 name='texto'></textarea> <input type="submit" value="enviar"> <input type="reset" value="borrar"> </BODY> </HTML>
<HTML> <HEAD> <TITLE>Formu1 - PHP</TITLE> </HEAD> <BODY> <? echo "El method que ha usado fué: ",$REQUEST_METHOD,"<br>"; echo $nombre,"<br>"; echo $clave,"<br>"; echo $color,"<br>"; echo $acondicionado,"<br>"; echo $tapiceria,"<br>"; echo $llantas,"<br>"; echo $precio,"<br>"; echo $texto,"<br>"; ?> </BODY> </HTML>
| ejemplo9.php |
El script para el caso de REGISTER_GLOBALS=0FF
Cuando en el formulario de envío has utilizado method="POST" y el fichero php.ini tiene configurada como OFF la opción register_globals estarás obligad@ a utilizar una sintaxis como esta.<HTML> <HEAD> <TITLE>Formu1 - PHP</TITLE> </HEAD> <BODY> <? echo "El method que ha usado fué: ",$HTTP_ENV_VARS[REQUEST_METHOD],"<br>"; echo $HTTP_POST_VARS['nombre'],"<br>"; echo $HTTP_POST_VARS['clave'],"<br>"; echo $HTTP_POST_VARS['color'],"<br>"; echo $HTTP_POST_VARS['acondicionado'],"<br>"; echo $HTTP_POST_VARS['tapiceria'],"<br>"; echo $HTTP_POST_VARS['llantas'],"<br>"; echo $HTTP_POST_VARS['precio'],"<br>"; echo $HTTP_POST_VARS['texto'],"<br>"; ?> </BODY> </HTML>
| ejemplo9a.php |
<HTML> <HEAD> <TITLE>Formu1 - PHP</TITLE> </HEAD> <BODY> <? echo "El method que ha usado fué: ",$HTTP_ENV_VARS[REQUEST_METHOD],"<br>"; echo $HTTP_GET_VARS['nombre'],"<br>"; echo $HTTP_GET_VARS['clave'],"<br>"; echo $HTTP_GET_VARS['color'],"<br>"; echo $HTTP_GET_VARS['acondicionado'],"<br>"; echo $HTTP_GET_VARS['tapiceria'],"<br>"; echo $HTTP_GET_VARS['llantas'],"<br>"; echo $HTTP_GET_VARS['precio'],"<br>"; echo $HTTP_GET_VARS['texto'],"<br>"; ?> </BODY> </HTML>
| ejemplo9c.php |
El script anterior para PHP 4.2.0 o superior
Aquí tienes el script anterior -para el caso de que el método usado sea POST- utilizando las nuevas variables predefinidas -$_POST Y $_ENVque incorporó PHP a partir de su versión 4.2.0.<HTML> <HEAD> <TITLE>Formu1 - PHP</TITLE> </HEAD> <BODY> <? echo "El method que ha usado fué: ",$_ENV[REQUEST_METHOD],"<br>"; echo $_POST['nombre'],"<br>"; echo $_POST['clave'],"<br>"; echo $_POST['color'],"<br>"; echo $_POST['acondicionado'],"<br>"; echo $_POST['tapiceria'],"<br>"; echo $_POST['llantas'],"<br>"; echo $_POST['precio'],"<br>"; echo $_POST['texto'],"<br>"; ?> </BODY> </HTML>
| ejemplo9b.php |
Los scripts anteriores con variables variables
Al escribir $$i['variable'] -estamos refiríendonos a un array- se plantea una situación ambigüa y única en el tratamiento de variables variables.
<HTML>
<HEAD>
<TITLE>Formu1 - PHP
</HEAD>
<BODY>
<?
echo "El method que ha usado fué: ",$HTTP_ENV_VARS[REQUEST_METHOD],"<br>";
$metodo="HTTP_".$HTTP_ENV_VARS[REQUEST_METHOD]."_VARS";
echo ${$metodo}['nombre'],"<br>";
echo ${$metodo}['clave'],"<br>";
echo ${$metodo}['color'],"<br>";
echo ${$metodo}['acondicionado'],"<br>";
echo ${$metodo}['tapiceria'],"<br>";
echo ${$metodo}['llantas'],"<br>";
echo ${$metodo}['precio'],"<br>";
echo ${$metodo}['texto'],"<br>";
?>
</BODY>
</HTML>
| ejemplo9e.php |
<? echo "El method que ha usado fué: ",$_ENV[REQUEST_METHOD],"<br>"; $metodo="_".$_ENV[REQUEST_METHOD]; echo ${$metodo}['nombre'],"<br>"; echo ${$metodo}['clave'],"<br>"; echo ${$metodo}['color'],"<br>"; echo ${$metodo}['acondicionado'],"<br>"; echo ${$metodo}['tapiceria'],"<br>"; echo ${$metodo}['llantas'],"<br>"; echo ${$metodo}['precio'],"<br>"; echo ${$metodo}['texto'],"<br>"; ?> </BODY> </HTML>
Tipos de contenidos de los formularios
Aunque en los ejemplos anteriores no te lo indiqué, la etiqueta form permite especificar el tipo de contenidos del formulario mediante el parámetro enctype que -como puedes observar aquí - si he utilizado cuando se trata de transferir ficheros.