-
Notifications
You must be signed in to change notification settings - Fork 39
/
session-create-id.xml
156 lines (146 loc) · 5.07 KB
/
session-create-id.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 151e61773c016edcae8fd4989ad9a86ffd03c283 Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.session-create-id" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_create_id</refname>
<refpurpose>Erzeugt eine neue Session-ID</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> wird verwendet, um für die aktuelle
Session eine neue Session-ID zu erstellen. Die Funktion gibt eine
kollisionsfreie Session-ID zurück.
</para>
<para>
Wenn keine Session aktiv ist, entfällt die Kollisionsprüfung.
</para>
<para>
Die Session-ID wird entsprechend der php.ini-Einstellungen erstellt.
</para>
<para>
Es ist wichtig, dass bei der Garbage Collection (GC) dieselbe Benutzer-ID
verwendet wird wie beim Webserver. Andernfalls kann es insbesondere bei der
Dateispeicherverwaltung zu Problemen mit den Zugriffsrechten kommen.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>prefix</parameter></term>
<listitem>
<para>
Wenn <parameter>prefix</parameter> angegeben wird, wird der neuen
Session-ID das <parameter>prefix</parameter> vorangestellt. In der
Session-ID sind nicht alle Zeichen erlaubt. Erlaubt sind Zeichen aus
dem Bereich <literal>a-z A-Z 0-9 , (Komma) und - (Minus)</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>session_create_id</function> gibt eine neue kollisionsfreie
Session-ID für die aktuelle Session zurück. Wenn diese Funktion ohne aktive
Session verwendet wird, entfällt die Kollisionsprüfung. Bei einem Fehler
wird &false; zurückgegeben.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>session_create_id</function>-Beispiel mit <function>session_regenerate_id</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Meine Session-Start-Funktion unterstützt die Verwaltung von Zeitstempeln
function my_session_start() {
session_start();
// Zu alte Session-ID nicht zulassen
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}
// Meine Funktion zur Erneuerung der Session-ID
function my_session_regenerate_id() {
// Bei einer aktiven Session wird session_create_id() aufgerufen,
// um sicherzustellen, dass es keine Kollisionen gibt.
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// WARNUNG: Niemals vertrauliche Zeichenfolgen als Präfix verwenden!
$newid = session_create_id('myprefix-');
// Zeitstempel für das Löschen setzen. Session-Daten dürfen aus
// verschiedenen Gründen nicht sofort gelöscht werden.
$_SESSION['deleted_time'] = time();
// Beenden der Session.
session_commit();
// Sicherstellen, dass die benutzerdefinierte Session-ID akzeptiert wird
// HINWEIS: Für den normalen Betrieb muss use_strict_mode aktiviert werden.
ini_set('session.use_strict_mode', 0);
// Neue benutzerdefinierte Session-ID festlegen
session_id($newid);
// Starten mit benutzerdefinierter Session-ID
session_start();
}
// Sicherstellen, dass use_strict_mode aktiviert ist.
// use_strict_mode ist aus Sicherheitsgründen zwingend erforderlich.
ini_set('session.use_strict_mode', 1);
my_session_start();
// Die Session-ID muss neu generiert werden, wenn
// - sich ein Benutzer anmeldet
// - sich ein Benutzer abmeldet
// - ein bestimmter Zeitraum verstrichen ist
my_session_regenerate_id();
// Nachfolgend der eigentliche Code des Programms
?>
]]>
</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
-->