<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'session.examples.basic.php',
    1 => 'Uso b&aacute;sico',
    2 => 'Uso b&aacute;sico',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Ejemplos',
  ),
  'prev' => 
  array (
    0 => 'session.examples.php',
    1 => 'Ejemplos',
  ),
  'next' => 
  array (
    0 => 'session.idpassing.php',
    1 => 'Pasar el identificador de sesi&oacute;n (session ID)',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Uso básico</h2>
  <p class="para">
   Las sesiones son una forma sencilla de almacenar datos individuales para cada
   usuario mediante un identificador de sesión único. Pueden utilizarse
   para persistir información entre varias páginas. Los identificadores de sesión
   se envían normalmente al navegador a través de cookies de sesión, y el identificador
   se utiliza para recuperar los datos existentes de la sesión. La ausencia de un identificador
   o de una cookie de sesión indica a PHP que debe crear una nueva sesión, generando así
   un nuevo identificador de sesión.
  </p>
  <p class="para">
   Las sesiones siguen una cinemática simple. Cuando se inicia una sesión, PHP
   recuperará una sesión existente utilizando el identificador de sesión pasado (habitualmente
   desde una cookie de sesión) o, si no se pasa ningún identificador de sesión, creará una
   nueva sesión. PHP poblará entonces la variable superglobal <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
   con todos los datos de la sesión una vez iniciada. Cuando PHP finaliza,
   tomará automáticamente el contenido de la variable superglobal <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>,
   lo serializará y lo enviará para su almacenamiento al gestor de guardado de sesión.
  </p>
  <p class="para">
   Por omisión, PHP utiliza internamente el gestor de guardado <code class="parameter">files</code>
   que está definido mediante la directiva <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>.
   Los datos de sesión se guardarán en el servidor en el lugar especificado por
   la directiva de configuración <a href="session.configuration.php#ini.session.save-path" class="link">session.save_path</a>.
  </p>
  <p class="para">
   Las sesiones pueden iniciarse manualmente utilizando la función
   <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span>. Si la directiva de configuración
   <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a> está definida como
   <code class="parameter">1</code>, una sesión se iniciará automáticamente al comienzo
   de la solicitud.
  </p>
  <p class="para">
   Las sesiones se detienen automáticamente cuando PHP ha terminado de ejecutar un script, pero
   pueden detenerse manualmente utilizando la función
   <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span>.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 
     Almacenar una variable con <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">'count'</span><span style="color: #007700">])) {<br />  </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'count'</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">'count'</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>Ejemplo #2 
     Eliminar una variable de sesión con la superglobal <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">'count'</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">Precaución</strong>
    <p class="para">
     No utilice la función <span class="function"><a href="function.unset.php" class="function">unset()</a></span>
     con <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> de la forma
     <code class="literal">unset($_SESSION)</code> ya que esto hará imposible
     el almacenamiento de datos en la sesión utilizando la superglobal
     <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>.
    </p>
   </div>
  </p>
  <div class="warning"><strong class="warning">Advertencia</strong>
   <p class="para">
    No se pueden utilizar referencias en variables de sesión
    ya que no hay ninguna manera factible de restaurar una referencia a otra
    variable.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Las sesiones basadas en ficheros (por omisión en PHP) bloquean
    el fichero de sesión cuando una sesión se abre mediante la función
    <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> o implícitamente mediante la directiva
    de configuración <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a>.
    Una vez bloqueado, ningún otro script puede acceder al mismo fichero
    de sesión hasta que la sesión no haya sido cerrada por el script
    que la abrió, o hasta que la función
    <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> no haya sido llamada.
   </p>
   <p class="para">
    Esto puede ser problemático para los sitios web que utilizan AJAX y producen
    múltiples solicitudes concurrentes. La forma más sencilla de evitar
    este problema es llamar a la función <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span>
    una vez que se hayan realizado los cambios en la sesión,
    preferiblemente al principio del script. También se puede utilizar
    otro gestor de sesión que soporte concurrencia.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>