Cuando se envía un formulario a un script PHP, las
variables de dicho formulario pasan a estar automáticamente
disponibles en el script gracias a PHP_ Por ejemplo, consideremos
el siguiente formulario:
Dependiendo de tu configuración y preferencias personales, existen
muchas maneras de acceder a los datos de tus formularios
HTML_ Algunos ejemplos:
Ejemplo 7_2_ Accediendo datos de un formulario simple HTML POST
<?php
// Available since PHP 4_1_0
print $_POST['username'];
print $_REQUEST['username'];
import_request_variables('p', 'p_');
print $p_username;
// Available since PHP 3_ As of PHP 5_0_0, these long predefined
// variables can be disabled with the register_long_arrays directive_
print $HTTP_POST_VARS['username'];
// Available if the PHP directive register_globals = on_ As of
// PHP 4_2_0 the default value of register_globals = off_
// Using/relying on this method is not preferred_
print $username;
?>
Usando un formulario GET es similar excepto en el uso de variables
predefinidas, que en este caso serán del tipo GET_ GET también se
usa con QUERY_STRING (la información despues del símbolo '?' en
una URL)_ Por ejemplo
http://www_example_com/test_php?id=3 contiene
datos GET que son accesibles con
$_GET['id']_ Vea también $_REQUEST y
import_request_variables()_
Como hemos dicho, antes de PHP 4_2_0, el valor por defecto de
register_globals era
on (activado)_ Y, en PHP 3 estba siempre
activado_ La comunidad PHP anima a no confiar en esta directiva
ya que es preferible asumir que tiene el valor
off (desactivada) y programar teniendo en
cuenta esto_
Nota:
La directiva de configuración magic_quotes_gpc afecta a
valores Get, Post y Cookie, Si esta activada (on) el valor (It's
"PHP!") sera convertido automaticamente a (It\'s
\"PHP!\")_ "Escaping" es necesario en inserciones a bases de
datos_ Vea también addslashes(),
stripslashes() y magic_quotes_sybase_
PHP tambien entiende matrices en el contexto de variables de
formularios_ (vea la faq
relacionada)_ Se puede, por ejemplo, agrupar juntas
variables relacionadas ó usar esta característica para obtener
valores de una entrada "select2 múltiple_ Por ejemplo, vamos a
mandar un formulario asi mismo y a presentar los datos cuando se
reciban:
Ejemplo 7_3_ Variables de formulario más complejas
en PHP 3, el uso de matrices de variables de formularios está
limitado a matrices unidimensionales_ En PHP 4, no existe esta
restricción_
IMAGE SUBMIT variable names
Cuando mandamos un formulario, es posible usar una imagen en vez
del botón estandar de "mandar":
<input type="image" src="image_gif" name="sub">
Cuando el usuario hace click en cualquier parte de la imagen, el
formulario que la acompaña se transmitirá al
servidor con dos variables adicionales, sub_x y sub_y_ Estas
contienen las coordenadas del click del usuario dentro de la
imagen_ Los más experimentados puede notar que los
nombres de variable enviados por el navegador contienen un
guión en vez de un subrayado (guión bajo), pero PHP
convierte el guión en subrayado automáticamente_
Cookies HTTP
PHP soporta cookies de HTTP de forma transparente tal y como
están definidas en en las Netscape's Spec_ Las cookies son un
mecanismo para almacenar datos en el navegador y así
rastrear o identificar a usuarios que vuelven_ Se pueden crear
cookies usando la función SetCookie()_
Las cookies son parte de la cabecera HTTP, así que se debe
llamar a la función SetCookie antes de que se envíe
cualquier salida al navegador_ Es la misma restricción que
para la función header()_ Los datos de
una cookie estan disponibles en la matriz con datos de cookies
apropiada, tal como $_COOKIE,
$HTTP_COOKIE_VARS y también en
$_REQUEST_ vea la función
setcookie() para más detalles y ejemplos_
Si se quieren asignar múltiples valores a una sola cookie,
basta con añadir [] al nombre de la
cookie para definirla como una matriz_ Por ejemplo:
Esto creara dos cookies separadas aunque MyCookie será una matriz
simple en el script_ Si se quiere definir una sola cookie con
valores multiples, considerar primero el uso de la función
serialize() ó explode() en
el valor_
Nótese que una cookie reemplazará a una cookie
anterior que tuviese el mismo nombre en el navegador a menos que
el camino (path) o el dominio fuesen diferentes_ Así, para
una aplicación de carro de la compra se podría
querer mantener un contador e ir pasándolo_ P_ej_
Típicamente, PHP no altera los nombres de las variables
cuando se pasan a un script_ De todas formas, hay que notar que el
punto no es un carácter válido en el nombre de una
variable PHP_ Por esta razón:
<?php
$varname_ext; /* nombre de variable invalido */
?>
Lo que el intérprete ve es el nombre de una variable
$varname, seguido por el operador de concatenación, y
seguido por la prueba (es decir, una cadena sin entrecomillar que
no coincide con ninguna palabra clave o reservada conocida)
'ext'_ Obviamente, no se pretendía que fuese este el
resultado_
Por esta razón, es importante hacer notar que PHP
reemplazará automáticamente cualquier punto en los
nombres de variables de entrada por guiones bajos (subrayados)_
Determinando los tipos de variables
Dado que PHP determina los tipos de las variables y los convierte
(generalmente) según lo necesita, no siempre resulta obvio
de qué tipo es una variable dada en un momento concreto_
PHP incluye varias funciones que descubren de qué tipo es
una variable: gettype(),
is_array(), is_float(),
is_int(), is_object(), y
is_string()_ Vea también el capítulo sobre Tipos_