Sessions PHP dans la base de données
Comment puis-je stocker les sessions dans la base de données ?
Je l'ai fait à l'aide de ce code :
function write ($session_id, $session_data)
//write session data to the database.
{
if (!empty($this->fieldarray)) {
if ($this->fieldarray['session_id'] != $session_id) {
//user is starting a new session with previous data
$this->fieldarray = array();
} //if
} //if
if (empty($this->fieldarray)) {
//create new record
$array['session_id'] = $session_id;
$array['date_created'] = getTimeStamp();
$array['last_updated'] = getTimeStamp();
$array['session_data'] = addslashes($session_data);
$this->_dml_insertRecord($array);
} else {
//update existing record
if (isset($_SESSION['logon_user_id'])) {
$array['user_id'] = $_SESSION['logon_user_id'];
} //if
$array['last_updated'] = getTimeStamp();
$array['session_data'] = addslashes($session_data);
$this->_dml_updateRecord($array, $this->fieldarray);
} //if
return TRUE;
} //write
Mais comment dois-je le supprimer automatiquement comme avant. Je veux dire, comment faire pour supprimer les sessions après le temps automatiquement?
source d'informationauteur Abadis | 2012-06-30
Vous devez vous connecter pour publier un commentaire.
Découvrez ces jolis messages:
Stocker les Sessions dans une Base de données
Enregistrement de PHP Session de données à une base de données
J'ai eu à traiter avec ce long temps, il y a, et il y a 2 solutions, ce qui n'est pas assez, mais ici il va.
Dans l'ordre des événements (vaguement), votre script va vérifier pour voir si il y avait un ID de session envoyé au serveur, puis il va voir si la session est dans votre base de données, et, si la session a expiré. Dès que vous avez établi la connexion à votre session db, vous pourriez envisager de l'exécution d'une requête de SUPPRESSION sur tous les registres avec une date d'expiration passé l'heure actuelle timbre. Ensuite, la recherche de l'ID de l'utilisateur juste envoyé. De cette façon, le nettoyage est effectué chaque fois que les gens utilisent votre site
De la prochaine, vous pourriez envisager de faire en plus, c'est d'avoir un CHRON Emploi ou une autre script automatisé qui fonctionne de temps en temps pour nettoyer expiré entrées de votre table de session. C'est une bonne méthode si votre site reçoit de la lumière et peu de trafic.
Une combinaison de méthodes est ce. Dans votre script lors de la validation de votre session, vérifiez la date d'expiration de session, lorsque les données sont trouvés. si le code est trouvé, mais la session est expirée, supprimer la session et en commencer une nouvelle. Si vous faites de cette façon, vous n'aurez pas à courir dans de trop nombreux problèmes de collision d'ID ou il y a beaucoup de requêtes de ralentir votre serveur. Vous pouvez toujours exécuter votre chron emploi à la fin de chaque journée pour exécuter un nettoyage complet.
Assurez-vous si votre système dispose d'un bouton de déconnexion de quelque type que la loi manuelle de la connexion, de déclencher la suppression de la session de l'utilisateur.
Prendre un coup d'oeil à HTTP_Session2. De POIRE docs:
Si vous souhaitez mettre en œuvre la vôtre, regardez le code dans
MDB2.php
à l'intérieur de ce paquet. Il contient une méthode de collecte des ordures (gc), qui, combiné avec session_set_save_handler devrait faire l'affaire.À la fin de votre code
session_destroy();
de fermer votre session: