<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'session.idpassing.php',
    1 => 'Passer l\'identifiant de session (session ID)',
    2 => 'Passer l\'identifiant de session (session ID)',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Exemples',
  ),
  'prev' => 
  array (
    0 => 'session.examples.basic.php',
    1 => 'Utilisation simple',
  ),
  'next' => 
  array (
    0 => 'session.customhandler.php',
    1 => 'Gestion personnalis&eacute;e des sessions',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Passer l&#039;identifiant de session (session ID)</h2>
  <p class="para">
   Il y a deux méthodes de propagation de l&#039;identifiant de session :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Cookies
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Par URL
     </span>
    </li>
   </ul>
  </p>
  <p class="para">
   Le module de session supporte les deux méthodes. Les cookies sont
   optimaux, mais comme ils ne sont pas sûrs (tous les internautes
   ne les acceptent pas), ils ne sont pas fiables. La seconde
   méthode place l&#039;identifiant de session directement dans les URL.
  </p>
  <p class="para">
   PHP est capable de faire cela de manière transparente.
   Si l&#039;option de compilation
   <code class="literal">session.use_trans_sid</code> est activée, 
   les URLs relatives seront modifiées pour contenir l&#039;identifiant
   de session automatiquement.
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     L&#039;option <a href="ini.core.php#ini.arg-separator.output" class="link">arg_separator.output</a>
     de <var class="filename">php.ini</var> permet de personnaliser le séparateur d&#039;arguments.
     Pour être complètement en accord avec les spécifications XHTML, spécifiez
     &amp;amp; ici.
    </p>
   </p></blockquote>
  </p>
  <p class="para">
   Alternativement, il est possible d&#039;utiliser la constante <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>
   qui est définie si la session a commencé. Si le client n&#039;envoie pas un cookie de session
   approprié, il aura la forme <code class="literal">session_name=session_id</code>.
   Sinon, il vaudra une chaîne vide. Ainsi, il est possible de l&#039;inclure dans tous les cas
   dans l&#039;URL.
  </p>
  <p class="para">
   L&#039;exemple suivant montre comment enregistrer une variable et comment
   réaliser un lien correct avec une autre page, avec
   <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>.
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Compter le nombre de passages d&#039;un utilisateur sur une page</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 /> Bonjour visiteur, vous avez vu cette page <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> fois.<br />&lt;/p&gt;<br /><br />&lt;p&gt;<br /> Pour continuer, &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;cliquez ici&lt;/a&gt;.<br />&lt;/p&gt;</span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   La fonction <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span> est utilisée lors de l&#039;affichage
   du <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong> dans le but de contrer les attaques XSS.
  </p>
  <p class="para">
   L&#039;affichage du <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>, comme montré dans l&#039;exemple
   ci-dessus, n&#039;est pas nécessaire si <a href="session.configuration.php#ini.session.use-trans-sid" class="link">
   --enable-trans-sid</a> a été utilisé pour compiler
   PHP.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Les URL non-relatives sont considérées comme externes au site, et ne
    recevront pas le <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>, car la fuite du <strong><code><a href="session.constants.php#constant.sid">SID</a></code></strong>
    vers un serveur différent présente un risque de sécurité important.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>