Création
d'entreprise
Posez votre question Signaler

Php - validité d'un numéro de session

Ah_Kin 24Messages postés 3 novembre 2007Date d'inscription - Dernière réponse le 4 nov. 2007 à 15:33
Bonjour à toutes et à tous,
Quelle est la fonction ou la méthode pour tester la validité d'un numéro de session stocké dans ma base sql?
Lire la suite 

Php - validité d'un numéro de session »

18 réponses
Réponse
+1
moins plus
C'est pour la construction d'un site en php.

répondons à l'envers :

il est stocké pour différencier les enregistrements des utilisateurs inconnus dans ma base sql, chaque entrée contenant l'ip, le numéro de session, et le nick d'un utilisateur.

le numéro de session est accessible avec session_id()
Ajouter un commentaire
Réponse
+0
moins plus
salut,
je pense que tu peux faire une requete SQL et tu compars les resultats
Ajouter un commentaire
Réponse
+0
moins plus
Salut.

Soit plus précis
Un numéro de session : comment attribues-tu ce numéro ?
Comment le reçois-tu une fois crée (variable GET, cookie...) ? Comment l'utilises-tu (ou est-il stocké, pourquoi...) ?
--
Sylvain
Ajouter un commentaire
Réponse
+0
moins plus
tu veux que ton pragramme creer a chaque fois un nouveau numero de session? ou bien l'utilisateur le saisit?
Ajouter un commentaire
Réponse
+0
moins plus
le numéro de session est créé arbitrairement, en hexadécimal.
Ajouter un commentaire
Réponse
+0
moins plus
La validité des numéros de session ?
Quand est-ce qu'un numéro est valide et quand est-ce qu'il ne l'est pas ?
Si il est valide quand il correspond à un membre inscrit, il suffit de voir si la personne est connectée ou pas avant d'enregistrer son ID de session.
--
Sylvain
Ajouter un commentaire
Réponse
+0
moins plus
// ajout d'une session

$session = session_id();
$reponse = mysql_query("SELECT * FROM en_ligne WHERE session = '$session'") or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
$nick=$_SESSION['nick'];
if ($donnees['session'] != $session) // si visiteur nouveau
{

mysql_query("INSERT INTO en_ligne VALUES('$ip_courant','$nick','$session')") or die(mysql_error()); // Requête SQL
}
else
{
if ($nick!=$donnees['nick'])
{
mysql_query("UPDATE en_ligne SET nick='$nick' WHERE session='$session'");
}

}

// mise à jour des sessions
--> ...


c'est à la place des '...' que je veux tester la validité de chaque numéro de session contenu dans la table 'en_ligne'. si un numéro de session est invalide, la session serait effacée de la base.
Ajouter un commentaire
Réponse
+0
moins plus
Si la personne n'est pas connectée, elle commence quand même une session mais avec un nick vide. C'est la raison pour laquelle je voulais traiter avec les numéros de session.
Ajouter un commentaire
Réponse
+0
moins plus
Sylvain - est-ce à dire qu'il faut que j'utilise plutôt une variable de session de plus, contenant par exemple l'id de l'enregistrement dans la base? Ce serait une idée un peu tirée par les cheveux à creuser si la réponse à ma question d'origine n'est pas trouvée.
Ajouter un commentaire
Réponse
+0
moins plus
Voilà donc la question reste sans réponse. Je reste à votre disposition pour toute info complémentaire sur ce topic bien qu'il me semble assez éclairci... Merci à toutes et à tous pour l'aide par avance.
Ajouter un commentaire
Réponse
+0
moins plus
Je n'ai pas tout suivi, mais si j'ai bien compris, il te suffit de faire pour les dernières lignes :
 // mise à jour des sessions
if($nick='')//si le psudo est vide (donc pas de session)
  mysql_query('DELETE FROM en_ligne WHERE session=\''."$session'")
Ajouter un commentaire
Réponse
+0
moins plus
si le nick est vide, il y a quand même session, mais session anonyme.
Ajouter un commentaire
Réponse
+0
moins plus
Session anonyme ??
C'est à dire, un numéro de session vide .
Qu'est-ce qui est invalide alors ?
--
Sylvain
Ajouter un commentaire
Réponse
+0
moins plus
le numéro de session n'est pas vide.

C'est pas compliqué, le numéro de session d'un utiilisateur est généré automatiquement. Lorsque la session de celui ci, anonyme ou non, est finie, le numéro de la session n'est plus en vigueur. Or, il est toujours présent dans la base 'en_ligne'.

Je veux que la base soit mise à jour.
Ajouter un commentaire
Réponse
+0
moins plus
Ah...
Mais tu ne peux pas savoir quand un internaute va fermer la fenêtre de ton site qu'il visite (à part avec JS).
Par contre, tu peux enregistrer l'heure de connexion, et supprimer toutes les entrées dans ta table dont la dernière connexion remonte à 5/10 minutes (le temps que tu estimes nécéssaire pour lire une page de ton site)
--
Sylvain
Ajouter un commentaire
Réponse
+0
moins plus
Ok donc pour en revenir à la question d'origine, une telle fonction n'existe donc pas?
Ajouter un commentaire
Réponse
+0
moins plus
Pas à ma connaissance.

EDIT : regardes ceci pour une explication plus claire : http://www.commentcamarche.net/forum/affich 3921833#27
--
Sylvain
Ajouter un commentaire
Réponse
+0
moins plus
Bon la question n'étant pas soluble de sa précocité, il a fallu se résigner à utiliser javascript, comme tout le monde. Après moultes recherches, et trébuchements sur les incompatibilité d'humeurs php/javascript et IE/pop ups, j'en suis arrivé à une solution finale :





<body onbeforeunload="location.href='sessiondestroyer.php'">





'sessiondestroyer.php' contenant bien sûr notamment session.destroy().

cette ligne est dans un fichier 'vide.php' intéressant de par cette ligne et avec un body vide.
ce fichier est engendré par 'parent.php', vide lui aussi, dans un frame. (l'url à taper contenant désormais ce nom de fichier au lieu de 'ma_page.php'). 'parent.php' engendre aussi 'ma_page.php', celui sur lequel surfe l'utilisateur.

- aucune pop up n'est sollicitée lors de la destruction de la session donc IE laisse faire et firefox se fait pas de soucis.

- le rafraichissement ne fait que recréer la même session.

- la fermeture du navigateur et la sortie de 'parent.php' (donc du site de ma_page.php) détruit la session instantanément et sans ambiguïté (les fichiers correspondants sont effacés sur le serveur).


YAPLUKA

et donc pour chaque parsage, il ne reste plus qu'à mettre la base à jour en fonction de l'existence ou non des fichiers - dont le nom contient le numéro de session - dans le dossier réservé aux cookies de session. et pour les enregistrements EXISTANTS et au nick vides dans la base, boucle for, et on a le nombre de visiteurs inconnus.

... Mébon...
Ajouter un commentaire
Ce document intitulé « php - validité d'un numéro de session » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?