1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-23 23:28:22 +02:00
Files
2025-07-03 21:51:59 +02:00

155 lines
4.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 682510e91d1f19fb59d2f7aef6ab370e8af842a1 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-destroy">
<refnamediv>
<refname>session_destroy</refname>
<refpurpose>Destruye una sesión</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_destroy</methodname>
<void/>
</methodsynopsis>
<simpara>
<function>session_destroy</function> destruye todos los datos
asociados a la sesión actual. Esta función no destruye
las variables globales asociadas a la sesión, de igual manera, no
destruye la cookie de sesión. Para acceder nuevamente a las variables
de sesión, la función <function>session_start</function> debe ser
llamada nuevamente.
</simpara>
<note>
<simpara>
No es necesario llamar a <function>session_destroy</function>
desde el programa generalmente.
Limpiar el array $_SESSION en lugar de destruir los datos de sesión.
</simpara>
</note>
<para>
Para destruir completamente una sesión,
el identificador de la sesión debe ser eliminado también. Si una cookie es utilizada
para propagar el identificador de sesión (comportamiento por omisión), entonces la cookie
de sesión debe ser eliminada. La función <function>setcookie</function>
puede ser utilizada para esto.
</para>
<para>
Cuando <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
está activado. No es necesario eliminar las cookies de ID de sesión
obsoletas ya que el módulo de sesión no acepta las cookies de ID de sesiones
cuando no hay datos asociados con estos ID de sesiones y definirá
una nueva cookie de ID de sesión.
Activar <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
es recomendado para todos los sitios.
</para>
<warning>
<para>
La eliminación inmediata de una sesión puede causar resultados inesperados.
Cuando hay peticiones simultáneas, otras conexiones pueden
perder repentinamente datos de sesión. Por ejemplo peticiones
desde JavaScript y/o peticiones desde enlaces URL.
</para>
<para>
Aunque el módulo de sesión actual no acepta una cookie de ID de sesión
vacía, la eliminación inmediata de sesión puede provocar una cookie
de ID de sesión vacía debido a una condición de concurrencia lado-cliente
(navegador). Esto provocará la creación de muchos ID de sesión
innecesarios por el cliente.
</para>
<para>
Para evitar esto, se debe definir un timestamp en $_SESSION y
rechazar el acceso a todas las fechas posteriores. O asegurarse de que su
aplicación no tenga peticiones simultáneas. Esto también se aplica a
<function>session_regenerate_id</function>.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Destrucción de una sesión con <varname>$_SESSION</varname></title>
<programlisting role="php">
<![CDATA[
<?php
// Inicialización de la sesión.
// Si se utiliza otro nombre
// session_name("otroNombre")
session_start();
// Destruye todas las variables de sesión
$_SESSION = array();
// Si se quiere destruir completamente la sesión, también se debe eliminar
// la cookie de sesión.
// Nota: esto destruirá la sesión y no solo los datos de sesión !
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finalmente, se destruye la sesión.
session_destroy();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="ini.session.use-strict-mode">session.use_strict_mode</link></member>
<member><function>session_reset</function></member>
<member><function>session_regenerate_id</function></member>
<member><function>unset</function></member>
<member><function>setcookie</function></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
-->