Position actuelle: Accueil> Derniers articles> Lors de la combinaison de session_start (), comment utiliser la fonction SessionHandler :: create_sid pour personnaliser l'ID de session exclusif?

Lors de la combinaison de session_start (), comment utiliser la fonction SessionHandler :: create_sid pour personnaliser l'ID de session exclusif?

M66 2025-06-21

3. Exemple d'étapes d'implémentation

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// PersonnaliserSessionHandler</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">CustomSessionHandler</span></span><span> </span><span><span class="hljs-keyword">extends</span></span><span> </span><span><span class="hljs-title">SessionHandler</span></span><span>
{
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">create_sid</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
    {
        </span><span><span class="hljs-comment">// Ici16String aléatoire d&#39;octet + L&#39;horodatage actuel constitue une sessionID,Garanti pour être unique et imprévisible</span></span><span>
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-title function_ invoke__">random_bytes</span></span><span>(</span><span><span class="hljs-number">16</span></span><span>)) . </span><span><span class="hljs-string">'-'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
    }
}

</span><span><span class="hljs-comment">// 实例化Personnaliser的processeur</span></span><span>
</span><span><span class="hljs-variable">$handler</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">CustomSessionHandler</span></span><span>();

</span><span><span class="hljs-comment">// 设置Personnaliser的Sessionprocesseur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_set_save_handler</span></span><span>(</span><span><span class="hljs-variable">$handler</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// démarrerSession,使用Personnaliser会话IDGénérer des règles</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"actuelSession ID:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">session_id</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. Instructions et précautions

  • Le deuxième paramètre de session_set_save_handler () est défini sur true , ce qui signifie que PHP appellera automatiquement Open () , Close () , Read () , Write (), Detrère () , GC () et d'autres méthodes implémentées par le processeur enregistré. Après avoir hérité du SessionHandler , le comportement par défaut est conservé sans toute réécriture.

  • create_sid () est uniquement responsable de la génération d'ID de session et n'implique pas la logique de stockage des données de session.

  • L'ID généré doit être suffisamment aléatoire et unique pour éviter les conflits d'identification de session.

  • Après la personnalisation de l'ID de session, l'ancien format d'identification de session peut être incompatible et vous devez être en ligne avec prudence.