Php - validité d'un numéro de session
Fermé
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
-
3 nov. 2007 à 12:30
Ah_Kin Messages postés 21 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 13 octobre 2009 - 4 nov. 2007 à 15:33
Ah_Kin Messages postés 21 Date d'inscription samedi 3 novembre 2007 Statut Membre Dernière intervention 13 octobre 2009 - 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?
Quelle est la fonction ou la méthode pour tester la validité d'un numéro de session stocké dans ma base sql?
A voir également:
- Php - validité d'un numéro de session
- Numero prive - Guide
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Récupérer un numéro de téléphone effacé - Accueil - Android
- Word numéro de page 1/2 - Guide
- À qui correspond ce numéro suisse ✓ - Forum Mail
18 réponses
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 12:38
3 nov. 2007 à 12:38
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()
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()
socquetsarah
Messages postés
163
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
26 juin 2008
35
3 nov. 2007 à 12:32
3 nov. 2007 à 12:32
salut,
je pense que tu peux faire une requete SQL et tu compars les resultats
je pense que tu peux faire une requete SQL et tu compars les resultats
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 12:32
3 nov. 2007 à 12:32
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
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
socquetsarah
Messages postés
163
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
26 juin 2008
35
3 nov. 2007 à 12:35
3 nov. 2007 à 12:35
tu veux que ton pragramme creer a chaque fois un nouveau numero de session? ou bien l'utilisateur le saisit?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 12:41
3 nov. 2007 à 12:41
le numéro de session est créé arbitrairement, en hexadécimal.
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 12:45
3 nov. 2007 à 12:45
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
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
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 12:46
3 nov. 2007 à 12:46
// 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.
$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.
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 12:49
3 nov. 2007 à 12:49
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.
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 12:55
3 nov. 2007 à 12:55
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.
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 14:08
3 nov. 2007 à 14:08
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.
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 14:24
3 nov. 2007 à 14:24
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'")
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 14:33
3 nov. 2007 à 14:33
si le nick est vide, il y a quand même session, mais session anonyme.
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 14:38
3 nov. 2007 à 14:38
Session anonyme ??
C'est à dire, un numéro de session vide .
Qu'est-ce qui est invalide alors ?
--
Sylvain
C'est à dire, un numéro de session vide .
Qu'est-ce qui est invalide alors ?
--
Sylvain
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 15:56
3 nov. 2007 à 15:56
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.
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.
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 16:04
3 nov. 2007 à 16:04
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
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
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
3 nov. 2007 à 16:07
3 nov. 2007 à 16:07
Ok donc pour en revenir à la question d'origine, une telle fonction n'existe donc pas?
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
3 nov. 2007 à 16:08
3 nov. 2007 à 16:08
Pas à ma connaissance.
EDIT : regardes ceci pour une explication plus claire : http://www.commentcamarche.net/forum/affich 3921833#27
--
Sylvain
EDIT : regardes ceci pour une explication plus claire : http://www.commentcamarche.net/forum/affich 3921833#27
--
Sylvain
Ah_Kin
Messages postés
21
Date d'inscription
samedi 3 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2009
15
4 nov. 2007 à 15:33
4 nov. 2007 à 15:33
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...
<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...