<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.session-create-id.php',
    1 => 'session_create_id',
    2 => 'Crear un nuevo ID de sesi&oacute;n',
  ),
  'up' => 
  array (
    0 => 'ref.session.php',
    1 => 'Funciones de sesi&oacute;n',
  ),
  'prev' => 
  array (
    0 => 'function.session-commit.php',
    1 => 'session_commit',
  ),
  'next' => 
  array (
    0 => 'function.session-decode.php',
    1 => 'session_decode',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/session/functions/session-create-id.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.session-create-id" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">session_create_id</h1>
  <p class="verinfo">(PHP 7 &gt;= 7.1.0, PHP 8)</p><p class="refpurpose"><span class="refname">session_create_id</span> &mdash; <span class="dc-title">Crear un nuevo ID de sesión</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.session-create-id-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>session_create_id</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$prefix</code><span class="initializer"> = &quot;&quot;</span></span>): <span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>session_create_id()</strong></span> se utiliza para crear un nuevo
   ID de sesión para la sesión actual. Esto devuelve un ID de
   sesión sin colisión.
  </p>
  <p class="para">
   Si la sesión no está activa, la verificación de colisión se omite.
  </p>
  <p class="para">
   El ID de sesión se crea de acuerdo con los parámetros php.ini.
  </p>
  <p class="para">
   Es importante utilizar el mismo ID de usuario de su servidor web
   para el script de la tarea de Recogida de Basura (Garbage Collection).
   De lo contrario, se pueden tener problemas de permisos, especialmente
   con los gestores de guardado de ficheros.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.session-create-id-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">prefix</code></dt>
      <dd>
       <p class="para">
        Si <code class="parameter">prefix</code> está especificado, el nuevo ID de sesión
        se prefiere con <code class="parameter">prefix</code>. No todos
        los caracteres están permitidos en el ID de sesión. Los caracteres
        entre <code class="literal">[a-z A-Z 0-9]</code> están permitidos. La longitud máxima es de 256 caracteres.
       </p>
      </dd>
     
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.session-create-id-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   <span class="function"><strong>session_create_id()</strong></span> devuelve un nuevo ID de sesión
   sin colisión para la sesión actual. Si se utiliza sin una sesión
   activa, la verificación de colisión se omite.
   En caso de error, <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> se devuelve.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.session-create-id-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo de <span class="function"><strong>session_create_id()</strong></span> con <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Mi función de inicio de sesión soporta la gestión de marcas de tiempo<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">my_session_start</span><span style="color: #007700">() {<br />    </span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br />    </span><span style="color: #FF8000">// No permite el uso de antiguos ID de sesión<br />    </span><span style="color: #007700">if (!empty(</span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'deleted_time'</span><span style="color: #007700">]) &amp;&amp; </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'deleted_time'</span><span style="color: #007700">] &lt; </span><span style="color: #0000BB">time</span><span style="color: #007700">() - </span><span style="color: #0000BB">180</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">session_destroy</span><span style="color: #007700">();<br />        </span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br />    }<br />}<br /><br /></span><span style="color: #FF8000">// Mi función de regeneración de ID<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">my_session_regenerate_id</span><span style="color: #007700">() {<br />    </span><span style="color: #FF8000">// Llamada a session_create_id() cuando la sesión está activa<br />    // para asegurarse de que no hay colisión.<br />    </span><span style="color: #007700">if (</span><span style="color: #0000BB">session_status</span><span style="color: #007700">() != </span><span style="color: #0000BB">PHP_SESSION_ACTIVE</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br />    }<br />    </span><span style="color: #FF8000">// ADVERTENCIA: Nunca utilizar cadenas confidenciales como prefijo<br />    </span><span style="color: #0000BB">$newid </span><span style="color: #007700">= </span><span style="color: #0000BB">session_create_id</span><span style="color: #007700">(</span><span style="color: #DD0000">'myprefix-'</span><span style="color: #007700">);<br />    </span><span style="color: #FF8000">// Establece la marca de tiempo de eliminación.<br />    // Los datos de sesión no deben eliminarse inmediatamente por ciertas razones.<br />    </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'deleted_time'</span><span style="color: #007700">] = </span><span style="color: #0000BB">time</span><span style="color: #007700">();<br />    </span><span style="color: #FF8000">// Termina la sesión<br />    </span><span style="color: #0000BB">session_commit</span><span style="color: #007700">();<br />    </span><span style="color: #FF8000">// Asegúrese de aceptar los ID de sesión definidos por el usuario<br />    // NOTA: Debe activar use_strict_mode para operaciones normales.<br />    </span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'session.use_strict_mode'</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />    </span><span style="color: #FF8000">// Definir un nuevo ID de sesión personalizado<br />    </span><span style="color: #0000BB">session_id</span><span style="color: #007700">(</span><span style="color: #0000BB">$newid</span><span style="color: #007700">);<br />    </span><span style="color: #FF8000">// Inicio con un ID de sesión personalizado<br />    </span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #FF8000">// Asegúrese de que use_strict_mode esté activado.<br />// use_strict_mode es obligatorio por razones de seguridad.<br /></span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">'session.use_strict_mode'</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">my_session_start</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// El ID de sesión debe regenerarse cuando<br />//  - Un usuario se conecta<br />//  - Un usuario se desconecta<br />//  - Ha transcurrido un cierto período de tiempo<br /></span><span style="color: #0000BB">my_session_regenerate_id</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Lógica de aplicación<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.session-create-id-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.session-regenerate-id.php" class="function" rel="rdfs-seeAlso">session_regenerate_id()</a> - Reemplaza el identificador de sesi&oacute;n actual por uno nuevo</span></li>
    <li><span class="function"><a href="function.session-start.php" class="function" rel="rdfs-seeAlso">session_start()</a> - Inicia una nueva sesi&oacute;n o reanuda una sesi&oacute;n existente</span></li>
    <li><a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a></li>
    <li><span class="methodname"><a href="sessionhandler.create-sid.php" class="methodname" rel="rdfs-seeAlso">SessionHandler::create_sid()</a> - Devuelve un nuevo ID de sesi&oacute;n</span></li>
   </ul>
  </p>
 </div>

</div><?php manual_footer($setup); ?>