-
Notifications
You must be signed in to change notification settings - Fork 40
/
session-destroy.xml
149 lines (140 loc) · 4.8 KB
/
session-destroy.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 682510e91d1f19fb59d2f7aef6ab370e8af842a1 Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-destroy">
<refnamediv>
<refname>session_destroy</refname>
<refpurpose>Löscht alle in einer Session registrierten Daten</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_destroy</methodname>
<void/>
</methodsynopsis>
<simpara>
<function>session_destroy</function> löscht alle in Verbindung mit der
aktuellen Session stehenden Daten. Mit der Session zusammenhängende globale
Variablen und das Session-Cookie werden nicht gelöscht. Um wieder
Session-Variablen verwenden zu können, muss
<function>session_start</function> aufgerufen werden.
</simpara>
<note>
<simpara>
Normalerweise ist es nicht erforderlich <function>session_destroy</function>
aufzurufen. Statt die Session zu löchen, sollte das $_SESSION-Array
bereinigt werden.
</simpara>
</note>
<para>
Um die Session komplett zu löschen, muss auch die Session-ID gelöscht
werden. Wenn zum Verfolgen der Session ein Cookie benutzt wird
(standardmäßige Einstellung), muss das Session-Cookie gelöscht werden.
Dafür kann <function>setcookie</function> verwendet werden.
</para>
<para>
Ist <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
aktiviert, dann ist es nicht nötig, veraltete Session-ID-Cookies zu
löschen, da das Session-Modul dann kein Session-ID-Cookie akzeptiert, wenn
keine zu dieser Session-ID gehörigen Daten vorhanden sind, so dass ein
neues Session-ID-Cookie gesetzt würde. Das Aktivieren von
<link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
wird grundsätzlich empfohlen.
</para>
<warning>
<para>
Das sofortige Löschen der Session kann zu unerwünschten Ergebnissen
führen. Wenn es gleichzeitige Anfragen gibt, können andere Verbindungen,
&zb; Anfragen von JavaScript und/oder Anfragen von URL-Links, plötzlich
Session-Daten verlieren.
</para>
<para>
Das aktuelle Session-Modul akzeptiert zwar keine leeres Session-ID-Cookie,
aber das sofortige Löschen der Session kann aufgrund einer Client-
(Browser-) seitigen Race-Condition zu einem leeren Session-ID-Cookie
führen. Dies würde dazu führen, dass der Client unnötig viele Session-IDs
erzeugt.
</para>
<para>
Um diese zu vermeiden, müssen Sie den Löschzeitstempel auf $_SESSION
setzen und den Zugriff zu einem späteren Zeitpunkt verweigern. Oder
stellen Sie sicher, dass Ihre Anwendung keine gleichzeitige Anfragen hat.
Dies gilt auch für <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>Löschen einer Session mit <varname>$_SESSION</varname></title>
<programlisting role="php">
<![CDATA[
<?php
// Initialisierung der Session.
// Wenn Sie session_name("irgendwas") verwenden, vergessen Sie es
// jetzt nicht!
session_start();
// Löschen aller Session-Variablen.
$_SESSION = array();
// Falls die Session gelöscht werden soll, löschen Sie auch das
// Session-Cookie.
// Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000, $params["path"],
$params["domain"], $params["secure"], $params["httponly"]
);
}
// Zum Schluß, löschen der 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
-->