El comportamiento de estas funciones se ve afectado por la configuración de php.ini.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | Disponible desde PHP 4.3.2. |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "" | PHP_INI_ALL | Disponible desde PHP 4.0.4. |
session.cookie_httponly | "" | PHP_INI_ALL | Disponible desde PHP 5.2.0. |
session.use_strict_mode | "0" | PHP_INI_ALL | Disponible desde PHP 5.5.2. |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | Disponible desde PHP 4.3.0. |
session.referer_check | "" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | PHP_INI_ALL en PHP <= 4.2.3. PHP_INI_PERDIR en PHP < 5. Disponible desde PHP 4.0.3. |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Disponible desde PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
PHP_INI_ALL | Disponible desde PHP 7.1.0. |
session.sid_length | "32" | PHP_INI_ALL | Disponible desde PHP 7.1.0. |
session.sid_bits_per_character | "5" | PHP_INI_ALL | Disponible desde PHP 7.1.0. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Disponible desde PHP 5.4.0. |
session.lazy_write | "1" | PHP_INI_ALL | Disponible desde PHP 7.0.0. |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | Disponible desde PHP 4.0.4. Desde PHP 7.1.0 este INI ya no se utiliza en sesiones. |
session.hash_function | "0" | PHP_INI_ALL | Disponible desde PHP 5.0.0. Eliminado en PHP 7.1.0 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | Disponible desde PHP 5.0.0. Eliminado en PHP 7.1.0 |
session.entropy_file | "" | PHP_INI_ALL | Eliminado en PHP 7.1.0. |
session.entropy_length | "0" | PHP_INI_ALL | Eliminado en PHP 7.1.0. |
El sistema de administración de sesiones admite varias opciones de configuración que se pueden colocar en el fichero php.ini. Se dará una visión general breve.
session.save_handler
string
session.save_handler
define el nombre del
gestor que se usa para almacenar y recuperar información
asociada con una sesión. Por defecto es
files
. Observe que las extensiones individuales pueden registrar
sus propios gestores save_handler
; los gestores registrados se pueden
obtener a nivel de instalación consultando
phpinfo(). Véase también
session_set_save_handler().
session.save_path
string
session.save_path
define el argumento que
es pasado al gestor de almacenamiento. Si se elige el gestor de archivos
por defecto, éste es la ruta donde los archivos son creados. Véase también
session_save_path().
Hay un argumento opcional N
para esta directiva que determina
el número de niveles de directorios por donde los archivos de sesión se
desplegarán. Por ejemplo, establecerlo a '5;/tmp'
puede terminar en crear un archivo de sesión y ubicación como
/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
. Para usar N
se deben crear todos estos
directorios antes de utilizarlo. Para realizar esto, existe un pequeño script
tipo shell en ext/session que se llama
mod_files.sh, con una versión de Windows llamada
mod_files.bat. Observe también que si N
se
usa y es más grande que 0 no se llevará a cabo la recolección de basura
automática, vea una copia de php.ini para más
información. También, si usa N
, asegúrese de encerrar
session.save_path
entre
"comillas" ya que el separador (;
) también
se usa para comentarios en php.ini.
El módulo de almacenamiento de ficheros crea ficheros usando el modo 600 de forma predeterminada.
Este valor se puede cambiar con el argumento opcional MODE
:
N;MODE;/path
, donde MODE
es la representación
octal del modo.
Establecer MODE
no afecta al proceso umask.
Si se deja esta configuración para un directorio legilble por todo el mundo, tal como /tmp (por defecto), otros usuarios en el servidor pueden ser capaces de secuestrar sesiones obteniendo la lista de archivos de ese directorio.
Al emplear el argumento opcional de nivel de directorio N
,
como está descrito arriba, observe que al utilizar un valor mayor que 1 o 2 no
es apropiado para la mayoría de los sitios debido al gran número de directorios
requeridos: por ejemplo, un valor de 3 implica que existen 64^3
directorios en el sistema de ficheros, lo que puede resultar en un gran despredicio
de escpacio e inodos.
Utilice solamente N
con un valor mayor que 2 si está absolutamente
seguro de que el sitio es lo suficientemente grande para requerirlo.
Nota: Antes de PHP 4.3.6, los usuarios de Windows tenían que cambiar esta variable para usar las funciones de sesiones de PHP. Se debe especificar una ruta válida, p.ej.: c:/temp.
session.name
string
session.name
specifica el nombre de la
sesión que se usa como nombre de cookie. Sólo debería contener
caracteres alfanuméricos. Por defecto es PHPSESSID
.
Véase también session_name().
session.auto_start
boolean
session.auto_start
especifica si el
módulo de sesión inicia una sesión automáticamente cuando arranque una
petición. Por defecto es 0
(deshabilitado).
session.serialize_handler
string
session.serialize_handler
define el nombre
del manejador que se usa para serializar/deserializar datos. El formato
de serialización de PHP (nombre php_serialize
), formatos
de internos de PHP (nombre php
y
php_binary
) y WDDX son admitidos (nombre
wddx
). WDDX solamente está disponible si PHP está
compilado con soporte para
WDDX. php_serialize
está disponible
desde PHP 5.5.4. php_serialize
usa internamente una
función pura de serialización/deserialización y no tiene
las limitaciones que tienen php
y php_binary
. Los gestores de serialización más antiguos
no pueden almacenar índices numéricos ni de string que contengan caracters
especiales (|
y !
) en
$_SESSION. Use php_serialize
para evitar errores con
índices numéricos o caracteres especiales al cierre del script. Lo predeterminado
es php
.
session.gc_probability
integer
session.gc_probability
se usa junto con
session.gc_divisor
para manejar la probabilidad de
que la rutina de gc (garbage collection, recolección de basura) está iniciada.
Por defecto es 1
. Véase session.gc_divisor para más detalles.
session.gc_divisor
integer
session.gc_divisor
junto con
session.gc_probability
define la probabilidad de
que el proceso de gc (garbage collection, recolección de basura) esté iniciado en
cada inicialización de sesión.
La probabilidad se calcula usando gc_probability/gc_divisor,
p.ej. 1/100 significa que hay un 1% de probabilidad de que el proceso de GC se inicie
en cada petición.
session.gc_divisor
por defecto es 100
.
session.gc_maxlifetime
integer
session.gc_maxlifetime
especifica el número
de segundos después de lo cual la información sea vista como 'basura' y
potencialmente limpiada. La recolección de basura puede suceder durante el inicio de sesiones
(dependiendo de session.gc_probability y
session.gc_divisor).
Nota: Si diferentes scripts tienen diferentes valores de
session.gc_maxlifetime
pero comparten la misma ubicación para almacenar la información de sesión, la información del script con el mínimo valor será limpiada. En este caso use esta directiva junto con session.save_path.
session.referer_check
string
session.referer_check
contiene la
subcadena para comprobar cada HTTP Referer. Si la
Referencia fue enviada por el cliente y la subcadena no se
encontró, el id de sesión embebido será marcado como no válido.
Por defecto es una cadena vacía.
session.entropy_file
string
session.entropy_file
da una ruta a un
recurso externo (archivo) que será usado como una fuente de entropía
adicional en el proceso de creación del id de sesión. Ejemplos:
/dev/random
o /dev/urandom
que están disponibles en la mayoría de sistemas Unix.
Esta función está disponible en Windows desde PHP 5.3.3. Si se establece
session.entropy_length
a un valor que no sea cero
hará que PHP use la Windows Random API como fuente entrópica.
Nota: Eliminado en PHP 7.1.0. A partir de PHP 5.4.0
session.entropy_file
usa de forma predeterminada/dev/urandom
o/dev/arandom
si están disponibles. En PHP 5.3.0, esta directiva se deja vacía por omisión.
session.entropy_length
integer
session.entropy_length
especifica el número
de bytes que serán leídos desde el archivo especificado arriba.
Por defecto es 32
.
Eliminado en PHP 7.1.0.
session.use_strict_mode
boolean
session.use_strict_mode
especifica si el
módulo usará el modo de id de sesión estricto. Si este modo está habilitado,
el módulo no aceptará IDs de sesioines no inicializados. Si se envia desde el
navegador un ID de sesión no inicializado, se envía un nuevo ID de sesión al navegador.
Las aplicaciones están protegidas de la fijación de sesiones mediante la adopción de sesión
con modo estricto.
El valor predeterminado es 0
(deshabilitado).
Nota: Es obligatoria habilitar
session.use_strict_mode
por seguridad general de sesión. Todos los sitios están advertidos de esto. Véase el código de ejemplo de session_create_id() para más detalles.
session.use_cookies
especifica si el
módulo usará cookies para almacenar el id de sesión en la parte
del cliente. Por defecto es 1
(habilitado).
session.use_only_cookies
especifica si
el módulo sólo usará
cookies para almacenar el id de sesión en la parte del cliente.
Habilitar este ajuste previene ataques que implican pasar el id
de sesión en la URL. Este ajuste fue añadido en PHP 4.3.0.
Por defecto es 1
(habilitado) desde PHP 5.3.0.
session.cookie_lifetime
especifica el tiempo de vida en
segundos de la cookie que es enviada al navegador. El valor 0
significa "hasta que el navegador se cierre". Por defecto es
0
. Véase también
session_get_cookie_params() y
session_set_cookie_params().
Nota: La marca de tiempo de caducidad se establece relativa a la hora del servidor, la cúal no es necesariamente la misma que la hora del navegador del cliente.
session.cookie_path
especifica la ruta a establecer
en la cookie de sesión. Por defecto es /
. Véase también
session_get_cookie_params() y
session_set_cookie_params().
session.cookie_domain
especifica el dominio a
establecer en la cookie de sesión. Por defecto es ninguno, significando el nombre de host del
servidor que generó la cookie según la especificación de cookies.
Véase también session_get_cookie_params() y
session_set_cookie_params().
session.cookie_secure
especifica si las
cookies deberían enviarse sólo sobre conexiones seguras. Por defecto es
off
.
Este ajuste fue añadido en PHP 4.0.4. Véase también
session_get_cookie_params() y
session_set_cookie_params().
session.cache_limiter
string
session.cache_limiter
especifica el método
de control de caché usado por páginas de sesión.
Puede ser uno de los siguientes valores:
nocache
, private
,
private_no_expire
, o public
.
Por defecto es nocache
. Vea también la
documentación de session_cache_limiter() para
informarse sobre lo que significan estos valores.
session.cache_expire
integer
session.cache_expire
especifica el tiempo de vida
en minutos para las páginas de sesión examinadas, esto no tiene efecto para
el limitador nocache. Por defecto es 180
. Véase también
session_cache_expire().
session.use_trans_sid
boolean
session.use_trans_sid
si está habilitado sid
transparente o no. Por defecto es
0
(deshabilitado).
Nota: La administración de sesiones basadas en URL tiene riesgos de seguridad adicionales comparada con la administración de sesiones basdas en cookies. Los usuarios pueden enviar una URL que contenga un ID de sesión activo a sus amigos mediante email o los usuarios pueden guardar una URL que contenga una ID de sesión en sus marcadores y acceder a su sitio siempre con el mismo ID de sesión, por ejemplo. Desde PHP 7.1.0, una ruta de URL completa, p.ej. https://php.net/, es manejada por la característa trans sid. Versiones anteriores de PHP manejaban únicamente rutas de URL relativas. Los 'hosts' objetivos de reescritura están definidos por session.trans_sid_hosts.
session.trans_sid_tags
especifica cuáles etiquetas HTML
son reescritas para incluir el ID de sesión cuando está habilitado el soporte
para SID transparente. Las predeterminadas son
a=href,area=href,frame=src,input=src,form=
form
es una etiqueta especial. <input hidden="id_sesión" name="nombre_sesión">
se añade como variable de formulario.
Nota: Antes de PHP 7.1.0, url_rewriter.tags se utilizaba para este propósito. Desde 7.1.0,
fieldset
ya no se considera una etiqueta especial.
session.trans_sid_hosts
string
session.trans_sid_hosts
especifica los hosts que
se reescriben para incluir el ID de sesión cuando el soporte para SID
transparente está habilitado. El predeterminado es $_SERVER['HTTP_HOST']
Se pueden especificar varios hosts mediante ",", y no se permiten espacios
entre hosts. P.ej. php.net,wiki.php.net,bugs.php.net
session.sid_length
integer
session.sid_length
permite especificar la
longitud de la cadena del ID de sesión. Esta longitud puede estar entre
22 y 256.
El valor predeterminado es 32. Si es necesaria compatibilidad se puede especificar 32,
40, etc. Los ID de sesión más largos son más difíciles de adivinar. Se recomienda al
menos 32 caracteres.
Nota sobre la compatibilidad: Use 32 para
session.hash_func
=0 (MD5) y
session.hash_bits_per_character
=4,
session.hash_func
=1 (SHA1) y
session.hash_bits_per_character
=6. Use 26 para
session.hash_func
=0 (MD5) y
session.hash_bits_per_character
=5. Use 22 para
session.hash_func
=0 (MD5) y
session.hash_bits_per_character
=6. Se deben
cofigurar valores INI para tener al menos 128 bits en ID de sesión. No
olvide establecer el valor apropiado en
session.sid_bits_per_character
, de lo contrario se
tendrá un ID de sesión más débil.
Nota: Este ajuste se introdujo en PHP 7.1.0.
session.sid_bits_per_character
integer
session.sid_per_character
permite especificar el
número de bits en caracteres de ID de sesión codificados. Los valores posibles son
'4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ",").
El predeterminado es 4. Cuantos más bits, más fuerte es el ID de sesión. Se recomienda
5 para la mayoría de entornos.
Nota: Este ajuste se introdujo en PHP 7.1.0.
session.hash_function
mixed
session.hash_function
permite especificar el algoritmo
hash utilizado para generar los ID de sesión. '0' significa MD5 (128 bits) y
'1' significa SHA-1 (160 bits).
Desde PHP 5.3.0 también es posible especificar cualquier algoritmo
porporcionado por la extensión hash (si está
disponible), como sha512
o
whirlpool
. Una lista completa de los algoritmos soportados se puede
obtener con la función hash_algos().
Nota: Este ajuste fue introducido en PHP 5.
session.hash_bits_per_character
integer
session.hash_bits_per_character
permite definir
cuántos bits son almacenados en cada carácter cuando se convierte la información
hash binaria a algo legible. Los valores posibles son '4' (0-9, a-f),
'5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ",").
Nota: Esto fue introducido en PHP 5. Eliminado en PHP 7.1.0
session.upload_progress.enabled
boolean
session.upload_progress.cleanup
boolean
Nota: Es muy recomendado mantener esta opción habilitada.
session.upload_progress.prefix
string
$_POST[ini_get("session.upload_progress.name")]
para
proporcionar un índice único.
Por omisión su valor es "upload_progress_".
session.upload_progress.name
string
$_POST[ini_get("session.upload_progress.name")]
o no está disponible, el progreso de subida no será grabado.
Por omisión su valor es"PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq
mixed
session.upload_progress.min-freq
integer
session.lazy_write
boolean
session.lazy_write
, cuando está establecida a 1, significa que los datos
de sesión solamente son rescritos si cambian. El valor predeterminado es 1, habilitado.
El progreso de subida no será registrado a no ser que session.upload_progress.enabled esté habilitado, y la variable $_POST[ini_get("session.upload_progress.name")] esté definida. Ver Session Upload Progress para más información de como funciona.