J'écris un module de chat où les utilisateurs anonymes peuvent discuter avec un utilisateur connecté via une connexion websockets externe.
J'ai besoin d'un identifiant pour distinguer de manière unique les utilisateurs anonymes et les affecter à différentes connexions et suivre l'état de la connexion.
Comment puis-je obtenir (en toute sécurité) un identifiant utilisateur unique ou un identifiant de session pour un utilisateur anonyme?
Vous recherchez les PHP session_id()
:
session_id () est utilisé pour obtenir ou définir l'ID de session pour la session en cours.
Drupal a cessé de suivre les sessions anonymes il y a quelques versions. Si vous voulez inciter Drupal à le faire à nouveau, vous devez créer un module avec une implémentation personnalisée de hook_init()
.
/**
* Implements hook_init().
*
* <soapbox>The Drupal team decided to remove support for anonymous user sessions
* starting in Drupal 7.37. This fundamentally breaks several things related to Drupal.
* I cannot find any documentation of this change in any changeme dating back to 7.33.
* The answer comes to us from:</soapbox>
*
* https://dgtlmoon.com/drupal_7_anonymous_sessions
*/
function mymodule_init() {
drupal_session_start();
$_SESSION['nosave'] = TRUE;
}