<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/session.examples.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'session.examples.basic.php',
    1 => 'Grundlegende Anwendung',
    2 => 'Grundlegende Anwendung',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Beispiele',
  ),
  'prev' => 
  array (
    0 => 'session.examples.php',
    1 => 'Beispiele',
  ),
  'next' => 
  array (
    0 => 'session.idpassing.php',
    1 => '&Uuml;bermittlung der Session-ID',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/session/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="session.examples.basic" class="section">
  <h2 class="title">Grundlegende Anwendung</h2>
  <p class="para">
   Sessions bieten eine einfache Möglichkeit, Daten für individuelle Benutzer
   unter einer eindeutigen Session-ID zu speichern. Sie können verwendet
   werden, damit Daten zwischen Seitenanforderungen bestehen bleiben.
   Session-IDs werden in der Regel über Session-Cookies an den Browser
   gesendet und die ID wird verwendet, um vorhandene Session-Daten abzurufen.
   Wenn es keine ID oder kein Session-Cookie gibt, wird PHP veranlasst, eine
   neue Session zu erstellen und eine neue Session-ID zu erzeugen.
  </p>
  <p class="para">
   Sessions folgen einem einfachen Ablauf. Wenn eine Session gestartet wird,
   ruft PHP entweder eine vorhandene Session unter Verwendung einer
   (normalerweise von einem Session-Cookie) übergebenen ID ab oder erzeugt
   eine neue Session, falls keine Session-ID übergeben wurde. Nachdem
   die Session gestartet wurde, füllt PHP die
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>-Superglobale mit allen Session-Daten. Am Ende
   des Skripts nimmt PHP automatisch den Inhalt der
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>-Superglobalen, serialisiert ihn und verwendet
   die Session-Speicherroutine um ihn zu speichern.
  </p>
  <p class="para">
   Standardmäßig verwendet PHP die interne
   <code class="parameter">files</code>-Speicherroutine, die mittels
   <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>
   festgelegt ist. Diese speichert die Session-Daten auf dem Server an der mit
   der Konfigurationsanweisung
   <a href="session.configuration.php#ini.session.save-path" class="link">session.save_path</a> angegebenen
   Stelle.
  </p>
  <p class="para">
   Sessions können über die Funktion <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span>
   gestartet werden. Falls die Konfigurationsanweisung
   <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a> auf
   <code class="parameter">1</code> gesetzt ist, wird eine Session automatisch zu
   Beginn einer Anfrage gestartet.
  </p>
  <p class="para">
   Sessions werden normalerweise automatisch geschlossen, wenn PHP am Ende
   eines Skripts ist, können aber über
   <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> auch manuell geschlossen werden.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 
     Registrierung einer Variablen mit <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>.
    </strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />session_start</span><span style="color: #007700">();<br />if (!isset(</span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'zaehler'</span><span style="color: #007700">])) {<br />  </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'zaehler'</span><span style="color: #007700">] = </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />} else {<br />  </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'zaehler'</span><span style="color: #007700">]++;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 
     Aufheben der Registrierung einer Variablen mit
     <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>.
    </strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />session_start</span><span style="color: #007700">();<br />unset(</span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'zaehler'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="caution"><strong class="caution">Achtung</strong>
    <p class="para">
     Die Variable <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> selbst darf NICHT mit
     <code class="literal">unset($_SESSION)</code> gelöscht werden, da dies die
     Registrierung von Session-Variablen über die Superglobale
     <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> deaktivieren würde.
    </p>
   </div>
  </p>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    In Session-Variablen können keine Referenzen verwendet werden, weil es
    keine praktikable Möglichkeit gibt, eine Referenz in eine andere Variable
    zurückzuführen.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Bei dateibasierten Sessions (der Standard in PHP) wird die Session-Datei
    gesperrt, wenn eine Session über <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> oder
    implizit über
    <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a> geöffnet
    wurde. Einmal gesperrt, kann solange kein anderes Skript auf dieselbe
    Session-Datei zugreifen, bis die Session durch Beenden des ersten Skripts
    oder durch den Aufruf von <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span>
    geschlossen wurde.
   </p>
   <p class="para">
    Dies ist wahrscheinlich ein Problem auf Websites, die verstärkt AJAX
    verwenden und mehrere gleichzeitige Zugriffe haben. Der einfachste Weg,
    damit umzugehen, ist, <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> möglichst
    früh im Skript aufzurufen, sobald alle nötigen Änderungen an der Session
    vorgenommen wurden. Alternativ könnte ein Session-Backend verwendet
    werden, das gleichzeitige Zugriffe unterstützt.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>