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
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?
A voir également:

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
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()
1
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
salut,
je pense que tu peux faire une requete SQL et tu compars les resultats
0
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
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
0
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
tu veux que ton pragramme creer a chaque fois un nouveau numero de session? ou bien l'utilisateur le saisit?
0

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
le numéro de session est créé arbitrairement, en hexadécimal.
0
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
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
0
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
// 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.
0
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
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.
0
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
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.
0
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
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.
0
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
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'")
0
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
si le nick est vide, il y a quand même session, mais session anonyme.
0
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
Session anonyme ??
C'est à dire, un numéro de session vide .
Qu'est-ce qui est invalide alors ?
--
Sylvain
0
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
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.
0
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
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
0
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
Ok donc pour en revenir à la question d'origine, une telle fonction n'existe donc pas?
0
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
Pas à ma connaissance.

EDIT : regardes ceci pour une explication plus claire : http://www.commentcamarche.net/forum/affich 3921833#27
--
Sylvain
0
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
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...
0