Supprimer session à 0h00

Eléphant du PHP | 51 Messages

28 mai 2013, 09:44

Bonjour,
Je souhaiterais faire une suppression automatique des sessions actives sur mon site. Pour cela j'ai associé le changement d'une valeur dans une table lors de la connexion et la déconnexion d'un utilisateur.

Seulement j'ai du mal à voir comment je pourrais faire la détection du passage de midi et minuit, il faudrait sans doute fixer deux variables, une fixée avant l'actualisation de la page et l'autre après, et après on les compare. Mais je ne vois pas bien comment faire, pouvez-vous m'aider ?

Merci d'avance,

Mammouth du PHP | 619 Messages

28 mai 2013, 10:14

Bonjour,

pourquoi ne pas mettre un expire a la session directe

http://php.net/manual/fr/function.sessi ... expire.php

tu calcule le temps entre maintenant et l'heure j puis tu mets l'expire

je connais pas beaucoup je m'avance peut-être

Eléphant du PHP | 51 Messages

28 mai 2013, 10:31

Bonjour,
Merci de ta réponse. C'est une bonne idée seulement l'expiration de la session n'est pas la seule tache à effectuer. En effet voilà la page php qui doit être exécutée lors de ce passage à midi et minuit
<?php
// On démarre la session
session_start ();
// On détruit les variables de notre session
session_unset ();

// On détruit notre session
session_destroy ();
$prec = $_SERVER['HTTP_REFERER'];
$prec1 = $prec."#index";
$_SESSION['actuel'] = "Aucun";


// On enlève la connexion dans la BDD
        include("connect_db.php");
$verif = "SELECT * FROM membres";
		$exec_verif = mysql_query($verif) or die(mysql_error());
		while($row_verif = mysql_fetch_array($exec_verif)){
		 if ($row_verif['connect'] == "1") {
			$suppr_connect = mysql_query("UPDATE `membres` SET `connect`='0'") or die(mysql_error());
			}
		}
// On redirige le visiteur vers la page d'accueil
header("Location: ". $prec1 );
?>

Mammouth du PHP | 619 Messages

28 mai 2013, 10:49

Re,

pour exécuter un script php a une heure x tu peux utilise les taches crons sois si tu as un dédie par ton serveur sinon il a des sites qui propose ce service

Eléphant du PHP | 51 Messages

28 mai 2013, 11:19

Je te remercie, je vais creuser de ce côté-là.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 mai 2013, 14:52

salut,


ton code met a jour la table membres (toues la table) à chaque fois qu'une membre est connecté ... (s'il y a 5000 membre de connecté tu met à jour 5000 fois la table :mrgreen: )

ton code code de mise à jour peux se résumer à une ligne
$suppr_connect = mysql_query("UPDATE `membres` SET `connect`='0'");

ensuite, est ce vraiment utile de déconnecter tout le monde ?

la tu fait une déconnexion logique en base, mais est ce que tu vérifie ce paramètre en base quand tu affiche toute les page ?
si ce n'est pas le cas, tant que la session est active tu est connecté (après minuit ou pas).
Ensuite le session_destroy que tu met ne s'applique qu'a l'utilisateur qui lance le script.

pour cela tu peux t'orienter vers SessionHandler::gc.


@+
Il en faut peu pour être heureux ......