-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathsession-start.xml
276 lines (255 loc) · 8.21 KB
/
session-start.xml
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d8849b5554a4b934cc8aacce047d8ec7b7cdec80 Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-start">
<refnamediv>
<refname>session_start</refname>
<refpurpose>Iniciar una nueva sesión o reanudar la existente</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_start</methodname>
<methodparam choice="opt"><type>array</type><parameter>options</parameter><initializer>[]</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_start</function> crea una sesión o reanuda la
actual basada en un identificador de sesión pasado mediante una petición GET o POST,
o pasado mediante una cookie.
</para>
<para>
Cuando <function>session_start</function> es llamada o cuando se autoinicia una sesión,
PHP llamará a los gestores de almacenamiento de sesiones open y read. Éstos serán un gestor
de almacenamiento proporcionado por omisión o por extensiones de PHP (como SQLite o Memcached); o pueden ser
un gestor personalizado como está definido en <function>session_set_save_handler</function>.
La llamada de retorno read recuperará cualquier información se de sesión existente (almacenada en un formato serializado especial)
y será deserializada y usada para rellenar automáticamente la variable superglobal $_SESSION cuando la
llamada de retorno read devuelva la información de sesión guardada a la gestión de sesiones de PHP.
</para>
<para>
Para usar una sesión nominada llame a
<function>session_name</function> antes de llamar a
<function>session_start</function>.
</para>
<para>
Cuando <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link>
está habilidado, la función <function>session_start</function> registrará
un gestor de salida interno para la reescritura de URL.
</para>
<para>
Si un usuario utiliza <literal>ob_gzhandler</literal> o similar con
<function>ob_start</function>, el orden de las funciones es importante para
la salida adecuada. Por ejemplo,
<literal>ob_gzhandler</literal> se debe registrar antes de iniciar una sesión.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<para>
Si se proporciona, este array asociativo de opciones sobrescribirá las
<link linkend="session.configuration">directivas de configuración de sesiones</link>
establecidas actualmente.
Las claves no deben incluir el prefijo <literal>session.</literal>.
</para>
<para>
Además del conjunto habitual de directivas de configuración, también se
puede proporcionar la opción <literal>read_and_close</literal>. Si se establece a
&true;, resultará en el cierre inmediato de la sesión después de haber
sido leída, evitando así el bloqueo inncesario si los datos de la sesión
no han cambiado.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Esta función devuleve &true; si una sesión fue iniciada satisfactoriamente,
si no, devuelve &false;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
Se añadió el parámetro <parameter>options</parameter>.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Si una sesión falla al iniciarse, se devuelve &false;.
Anteriormente se devolvía &true;.
</entry>
</row>
<row>
<entry>4.3.3</entry>
<entry>
A partir de PHP 4.3.3, llamar a <function>session_start</function>
después de que una sesión estuviera previamente iniciada resultaba en un
error de nivel <constant>E_NOTICE</constant>. También, el
segundo inicio de sesión se ignoraba simplemente.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<refsect2>
<title>Un ejemplo de sesión básico</title>
<para>
<example>
<title><filename>pagina1.php</filename></title>
<programlisting role="php">
<![CDATA[
<?php
// pagina1.php
session_start();
echo 'Bienvenido a la página #1';
$_SESSION['color'] = 'verde';
$_SESSION['animal'] = 'gato';
$_SESSION['instante'] = time();
// Funciona si la cookie de sesión fue aceptada
echo '<br /><a href="pagina2.php">página 2</a>';
// O quizás pasar el id de sesión, si fuera necesario
echo '<br /><a href="pagina2.php?' . SID . '">página 2</a>';
?>
]]>
</programlisting>
</example>
</para>
<para>
Después de ver <filename>pagina1.php</filename>, la segunda página
<filename>pagina2.php</filename> contendrá mágicamente la información de la
sesión. Consulte la <link linkend="ref.session">referencia de sesiones</link>
para informarse sobre la <link linkend="session.idpassing">propagación de
los ID de sesiones</link> ya que explica, por ejemplo, en qué consiste la constante
<constant>SID</constant>.
</para>
<para>
<example>
<title><filename>pagina2.php</filename></title>
<programlisting role="php">
<![CDATA[
<?php
// pagina2.php
session_start();
echo 'Bienvenido a la página #2<br />';
echo $_SESSION['color']; // verde
echo $_SESSION['animal']; // gato
echo date('Y m d H:i:s', $_SESSION['instante']);
// Puede ser conveniente usar el SID aquí, como hicimos en pagina1.php
echo '<br /><a href="pagina1.php">página 1</a>';
?>
]]>
</programlisting>
</example>
</para>
</refsect2>
<refsect2>
<title>Proporcionar opciones a <function>session_start</function></title>
<example>
<title>Sobrescribir el tiempo de vida de la cookie</title>
<programlisting role="php">
<![CDATA[
<?php
// Esto envía una cookie persistente que dura un día day.
session_start([
'cookie_lifetime' => 86400,
]);
?>
]]>
</programlisting>
</example>
<example>
<title>Leer la sesión y cerrarla</title>
<programlisting role="php">
<![CDATA[
<?php
// Si sabemos que no necesitamos cambiar nada de la sesión,
// podemos simplemente leerla y cerrarla inmediatamente para evitar
// bloquear el fichero de sesión y otras páginas
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
]]>
</programlisting>
</example>
</refsect2>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Para usar sesiones basadas en cookies, <function>session_start</function>
debe ser llamada antes de imprimir cualquier cosa en el navegador.
</para>
</note>
<note>
<para>
Se recomienda el uso de <link linkend="ini.zlib.output-compression">zlib.output_compression</link>
en vez de <function>ob_gzhandler</function>
</para>
</note>
<note>
<para>
Esta función envía varias cabeceras HTTP dependiendo de la
configuración. Véase <function>session_cache_limiter</function> para
personalizar estas cabeceras.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><varname>$_SESSION</varname></member>
<member>
La directiva de configuarción <link linkend="ini.session.auto-start">session.auto_start</link>
</member>
<member><function>session_id</function></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
-->