Repository navigation
Expand file tree
/
Copy pathsession-create-id.xml
More file actions
155 lines (147 loc) · 5.02 KB
/
Copy pathsession-create-id.xml
File metadata and controls
155 lines (147 loc) · 5.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: f5c124befdf7c2791877694a86ead123b179d935 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.session-create-id" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_create_id</refname>
<refpurpose>Crear un nuevo ID de sesión</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>session_create_id</methodname>
<methodparam choice="opt"><type>string</type><parameter>prefix</parameter><initializer>""</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_create_id</function> se utiliza para crear un nuevo
ID de sesión para la sesión actual. Esto devuelve un ID de
sesión sin colisión.
</para>
<para>
Si la sesión no está activa, la verificación de colisión se omite.
</para>
<para>
El ID de sesión se crea de acuerdo con los parámetros php.ini.
</para>
<para>
Es importante utilizar el mismo ID de usuario de su servidor web
para el script de la tarea de Recogida de Basura (Garbage Collection).
De lo contrario, se pueden tener problemas de permisos, especialmente
con los gestores de guardado de ficheros.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>prefix</parameter></term>
<listitem>
<para>
Si <parameter>prefix</parameter> está especificado, el nuevo ID de sesión
se prefiere con <parameter>prefix</parameter>. No todos
los caracteres están permitidos en el ID de sesión. Los caracteres
entre <literal>[a-z A-Z 0-9]</literal> están permitidos. La longitud máxima es de 256 caracteres.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>session_create_id</function> devuelve un nuevo ID de sesión
sin colisión para la sesión actual. Si se utiliza sin una sesión
activa, la verificación de colisión se omite.
En caso de error, &false; se devuelve.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>session_create_id</function> con <function>session_regenerate_id</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Mi función de inicio de sesión soporta la gestión de marcas de tiempo
function my_session_start() {
session_start();
// No permite el uso de antiguos ID de sesión
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}
// Mi función de regeneración de ID
function my_session_regenerate_id() {
// Llamada a session_create_id() cuando la sesión está activa
// para asegurarse de que no hay colisión.
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// ADVERTENCIA: Nunca utilizar cadenas confidenciales como prefijo
$newid = session_create_id('myprefix-');
// Establece la marca de tiempo de eliminación.
// Los datos de sesión no deben eliminarse inmediatamente por ciertas razones.
$_SESSION['deleted_time'] = time();
// Termina la sesión
session_commit();
// Asegúrese de aceptar los ID de sesión definidos por el usuario
// NOTA: Debe activar use_strict_mode para operaciones normales.
ini_set('session.use_strict_mode', 0);
// Definir un nuevo ID de sesión personalizado
session_id($newid);
// Inicio con un ID de sesión personalizado
session_start();
}
// Asegúrese de que use_strict_mode esté activado.
// use_strict_mode es obligatorio por razones de seguridad.
ini_set('session.use_strict_mode', 1);
my_session_start();
// El ID de sesión debe regenerarse cuando
// - Un usuario se conecta
// - Un usuario se desconecta
// - Ha transcurrido un cierto período de tiempo
my_session_regenerate_id();
// Lógica de aplicación
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>session_regenerate_id</function></member>
<member><function>session_start</function></member>
<member><link linkend="ini.session.use-strict-mode">session.use_strict_mode</link></member>
<member><methodname>SessionHandler::create_sid</methodname></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->