<?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.idpassing.php',
    1 => 'Pasar el identificador de sesi&oacute;n (session ID)',
    2 => 'Pasar el identificador de sesi&oacute;n (session ID)',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Ejemplos',
  ),
  'prev' => 
  array (
    0 => 'session.examples.basic.php',
    1 => 'Uso b&aacute;sico',
  ),
  'next' => 
  array (
    0 => 'session.customhandler.php',
    1 => 'Gesti&oacute;n personalizada de sesiones',
  ),
  '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.idpassing" class="section">
  <h2 class="title">Pasar el identificador de sesión (session ID)</h2>
  <p class="para">
   Existen dos métodos de propagación del identificador de sesión:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Cookies
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Por URL
     </span>
    </li>
   </ul>
  </p>
  <p class="para">
   El módulo de sesión soporta ambos métodos. Las cookies son
   óptimas, pero como no son seguras (no todos los internautas
   las aceptan), no son fiables. El segundo
   método coloca el identificador de sesión directamente en las URL.
  </p>
  <p class="para">
   PHP es capaz de hacerlo de manera transparente.
   Si la opción de compilación
   <code class="literal">session.use_trans_sid</code> está activada,
   las URL relativas se modificarán para contener el identificador
   de sesión automáticamente.
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <p class="para">
     La opción <a href="ini.core.php#ini.arg-separator.output" class="link">arg_separator.output</a>
     de <var class="filename">php.ini</var> permite personalizar el separador de argumentos.
     Para estar completamente de acuerdo con las especificaciones XHTML, especifique
     &amp;amp; aquí.
    </p>
   </p></blockquote>
  </p>
  <p class="para">
   Alternativamente, se puede utilizar la constante <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>
   que está definida si la sesión ha comenzado. Si el cliente no envía una cookie de sesión
   apropiada, tendrá la forma <code class="literal">session_name=session_id</code>.
   De lo contrario, valdrá una cadena vacía. Así, en todos los casos
   se puede incluir en la URL.
  </p>
  <p class="para">
   El siguiente ejemplo muestra cómo almacenar una variable y cómo
   realizar un enlace correcto a otra página, con
   <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>.
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Contar el número de visitas de un usuario a una página</strong></p>
    <div class="example-contents">
     <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />session_start</span><span style="color: #007700">();<br /><br />if (empty(</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">1</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;<br /></span><br />&lt;p&gt;<br /> Hola visitante, ha visto esta página <span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </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">?&gt;</span> veces.<br />&lt;/p&gt;<br /><br />&lt;p&gt;<br /> Para continuar, &lt;a href="nextpage.php?<span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #0000BB">htmlspecialchars</span><span style="color: #007700">(</span><span style="color: #0000BB">SID</span><span style="color: #007700">); </span><span style="color: #0000BB">?&gt;</span>"&gt;haga clic aquí&lt;/a&gt;.<br />&lt;/p&gt;</span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   La función <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span> se utiliza al mostrar
   el <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong> con el fin de contrarrestar los ataques XSS.
  </p>
  <p class="para">
   La visualización del <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>, como se muestra en el ejemplo
   anterior, no es necesaria si <a href="session.configuration.php#ini.session.use-trans-sid" class="link">
   --enable-trans-sid</a> se ha utilizado para compilar
   PHP.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Las URL no relativas se consideran externas al sitio y no
    recibirán el <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>, ya que la fuga del <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>
    a un servidor diferente presenta un riesgo de seguridad importante.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>