-
Notifications
You must be signed in to change notification settings - Fork 164
Expand file tree
/
Copy pathsession-destroy.xml
More file actions
154 lines (143 loc) · 4.96 KB
/
session-destroy.xml
File metadata and controls
154 lines (143 loc) · 4.96 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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 682510e91d1f19fb59d2f7aef6ab370e8af842a1 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-destroy">
<refnamediv>
<refname>session_destroy</refname>
<refpurpose>Détruit une session</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_destroy</methodname>
<void/>
</methodsynopsis>
<simpara>
<function>session_destroy</function> détruit toutes les données
associées à la session courante. Cette fonction ne détruit pas
les variables globales associées à la session, de même, elle ne
détruit pas le cookie de session. Pour accéder à nouveau aux variables
de session, la fonction <function>session_start</function> doit être
appelée de nouveau.
</simpara>
<note>
<simpara>
Il n'est pas nécessaire d'appeler <function>session_destroy</function>
depuis le programme généralement.
Nettoyer le tableau $_SESSION plutôt que de détruire les données de session.
</simpara>
</note>
<para>
Pour détruire complètement une session,
l'identifiant de la session doit également être effacé. Si un cookie est utilisé
pour propager l'identifiant de session (comportement par défaut), alors le cookie
de session doit être effacé. La fonction <function>setcookie</function>
peut être utilisée pour cela.
</para>
<para>
Quand <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
est activé. Il n'est pas nécessaire d'effacer le cookie d'ID de session
obsolète car le module de session n'accepte pas les cookies d'ID de sessions
quand il n'y a pas de données associées à cet ID de session et définira un
nouvel cookie d'ID de session.
Activer <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
est recommandé pour tous les sites.
</para>
<warning>
<para>
La suppression immédiate d'une session peut causer des résultats inattendus.
Quand il y a des requêtes simultanées, les autres connexions peuvent
soudainement perdre des données de session. Par exemple des requêtes
depuis JavaScript et/ou des requêtes depuis des liens URL.
</para>
<para>
Bien que le module de session actuel n'accepte pas un cookie d'ID de session
vide, mais la suppression immédiate de session peut provoquer un cookie
d'ID de session vide à cause d'une condition de concurrence côté client
(navigateur). Ceci provoquera la création de beaucoup d'ID de session
inutiles par le client.
</para>
<para>
Pour éviter ceci, il faut définir un horodatage à $_SESSION et
refuser l'accès à toutes les dates ultérieures. Ou il faut s'assurer que
l'application n'a pas de requêtes simultanées. Ceci s'applique aussi à
<function>session_regenerate_id</function>.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Destruction d'une session avec <varname>$_SESSION</varname></title>
<programlisting role="php">
<![CDATA[
<?php
// Initialisation de la session.
// Si vous utiliser un autre nom
// session_name("autrenom")
session_start();
// Détruit toutes les variables de session
$_SESSION = array();
// Si vous voulez détruire complètement la session, effacez également
// le cookie de session.
// Note : cela détruira la session et pas seulement les données de session !
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finalement, on détruit la session.
session_destroy();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="ini.session.use-strict-mode">session.use_strict_mode</link></member>
<member><function>session_reset</function></member>
<member><function>session_regenerate_id</function></member>
<member><function>unset</function></member>
<member><function>setcookie</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
-->