Variables desde fuentes externas
Cookies HTTP
PHP soporta cookies de HTTP de forma transparente tal y como están
definidas en » RFC 6265. 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 están disponibles en el array de datos de la
cookies apropiada, tal como $_COOKIE y $_REQUEST.
Véase la página de setcookie() del manual para más
detalles y ejemplos.
Nota:
A partir de PHP 7.2.34, 7.3.23 y 7.4.11, respectivamente, los
nombres de las cookies entrantes ya no son con url-decoded
por razones de seguridad.
Si se quieren asignar múltiples valores a una sola cookie, basta con
asignarlo como un array. Por ejemplo:
Esto creará dos cookies separadas aunque MiCookie será un array simple
en el script. Si se quiere definir una sola cookie con valores
múltiples, considere el uso de la función serialize()
o explode() primero en el valor.
Nótese que una cookie reemplazará a una cookie anterior que tuviese el
mismo nombre en el navegador a menos que la ruta o el dominio
fuesen diferentes. Así, para una aplicación de carrito de compras se
podría querer mantener un contador e ir pasándolo. Es decir:
Ejemplo #4 Un ejemplo de setcookie()
<?php
if (isset($_COOKIE['count'])) {
$count = $_COOKIE['count'] + 1;
} else {
$count = 1;
}
setcookie('conteo', $count, time()+3600);
setcookie("Carrito[$count]", $item, time()+3600);
?>
Puntos en los nombres de variables de entrada
Típicamente, PHP no altera los nombres de las variables cuando se pasan
a un script. Sin embargo, hay que notar que el punto no es un
carácter válido en el nombre de una variable PHP. Para conocer la razón,
considere el siguiente ejemplo:
<?php
$varname.ext; /* nombre de variable inválido */
?>
Lo que el intérprete vé es el nombre de una variable
$varname, seguido
por el operador de concatenación, y seguido por la cadena pura (es
decir, una cadena sin entrecomillar que no coincide con ninguna palabra
clave o reservada conocida) 'ext'. Obviamente, no se pretendía que fuese
éste 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).
Determinación de los tipos de variables
Dado que PHP determina los tipos de las variables y los convierte
(generalmente) según lo que 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.
HTTP being a text protocol, most, if not all, content that comes in
Superglobal arrays,
like $_POST and $_GET will remain
as strings. PHP will not try to convert values to a specific type.
In the example below, $_GET["var1"] will contain the
string "null" and $_GET["var2"], the string "123".
/index.php?var1=null&var2=123