Files
doc-fr/reference/session/functions/session-destroy.xml
2023-03-09 06:56:37 +00:00

155 lines
5.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 682510e91d1f19fb59d2f7aef6ab370e8af842a1 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-destroy">
<refnamediv>
<refname>session_destroy</refname>
<refpurpose>Détruit une session</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_destroy</methodname>
<void/>
</methodsynopsis>
<simpara>
<function>session_destroy</function> détruit toutes les données
associées à la session courante. Cette fonction ne détruit pas
les variables globales associées à la session, de même, elle ne
détruit pas le cookie de session. Pour accéder à nouveau aux variables
de session, la fonction <function>session_start</function> doit être
appelée de nouveau.
</simpara>
<note>
<simpara>
Vous n'avez pas besoin d'appeler <function>session_destroy</function>
depuis le programme généralement.
Nettoyer le tableau $_SESSION plutôt que de détruire les données de session.
</simpara>
</note>
<para>
Pour détruire complètement une session,
l'identifiant de la session doit également être effacé. Si un cookie est utilisé
pour propager l'identifiant de session (comportement par défaut), alors le cookie
de session doit être effacé. La fonction <function>setcookie</function>
peut être utilisée pour cela.
</para>
<para>
Quand <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
est activé. Vous n'avez pas besoin d'effacer le cookies d'ID de session
obsolète car le module de session n'accepte pas les cookies d'ID de sessions
quand il n'y a pas données associer avec ces ID de sessions et définira un
nouvel cookie d'ID de session.
Activer <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
est recommandé pour tous les sites.
</para>
<warning>
<para>
La suppression immédiate d'une session peut causer des résultats inattendus.
Quand il y a des requêtes simultanées, les autres connexions peuvent
soudainement perdre des données de session. Par exemple des requêtes
depuis JavaScript et/ou des requêtes depuis des liens URL.
</para>
<para>
Bien que le module de session actuel n'accepte pas un cookie d'ID de session
vide, mais la suppression immédiate de session peut provoquer un cookie
d'ID de session vide à cause d'une condition de concurrence côté client
(navigateur). Ceci provoquera la création de beaucoup d'ID de session
inutile par le client.
</para>
<para>
Pour éviter ceci, vous devez définir un horodatage à $_SESSION et
refuser l'accès à toutes les dates ultérieures. Ou assurer vous que votre
application n'a pas de requêtes simultanées. Ceci s'applique aussi à
<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>Destruction d'une session avec <varname>$_SESSION</varname></title>
<programlisting role="php">
<![CDATA[
<?php
// Initialisation de la session.
// Si vous utilisez un autre nom
// session_name("autrenom")
session_start();
// Détruit toutes les variables de session
$_SESSION = array();
// Si vous voulez détruire complètement la session, effacez également
// le cookie de session.
// Note : cela détruira la session et pas seulement les données de session !
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finalement, on détruit la session.
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
-->