Un bug dans les test conditionnel if en php
Résolu/Fermé
A voir également:
- Un bug dans les test conditionnel if en php
- Test performance pc - Guide
- Bug yahoo mail - Accueil - Mail
- Test composant pc - Guide
- Mise en forme conditionnelle excel - Guide
- Redmi note 13 5g test - Accueil - Téléphones
4 réponses
thunder413
Messages postés
167
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
16 novembre 2012
23
11 mai 2010 à 10:06
11 mai 2010 à 10:06
bonjour est-ce que t'a mis session_start() avant de travailler avec les variables session je demande parce que je l'ai pas vu dans ton code
bien entendu. :p je le met dans ma page index qui include le reste, mon session_start() est du coup toujours actif.
Petit precision sur le fonctionnement du script:
le if session pseudo sert a verifier si il y a un pseudo donc si la personne est loguer, alors on regarde si elle est dans la base avec son ip, si oui on met a jour sa ligne d'ip en timestamp et en pseudo sinon on l'inscrit dedans (personne ayant un log auto prevu pour plus tard) Si il n'y a pas de session pseudo, la personne n'est pas logue, on fait alors presque es meme manip pour savoir si ele est dans la table oui on modifie la timestamp non on l'inscrit dedans.
Apres on regarde uniquement ceux qui ont mis a jour depuis (1 minute dans le script) et on afficher leur pseudo i ils sont different de null puis on compte le nombre de ligne ou pseudo = null
Ainsi on devrait pouvoir afficher les pseudo des membres connecter et le nombre de visiteur en simultanee.
Seul probleme, les if imbrique qui ne verifie pas comme si l'ip est deja dans la table ou pas.
(Je precis que je le fais en local donc mon ip est 127.0.0.1 mais je ne pense pas que cela joue dan sle fonctionnement du script.)
Petit precision sur le fonctionnement du script:
le if session pseudo sert a verifier si il y a un pseudo donc si la personne est loguer, alors on regarde si elle est dans la base avec son ip, si oui on met a jour sa ligne d'ip en timestamp et en pseudo sinon on l'inscrit dedans (personne ayant un log auto prevu pour plus tard) Si il n'y a pas de session pseudo, la personne n'est pas logue, on fait alors presque es meme manip pour savoir si ele est dans la table oui on modifie la timestamp non on l'inscrit dedans.
Apres on regarde uniquement ceux qui ont mis a jour depuis (1 minute dans le script) et on afficher leur pseudo i ils sont different de null puis on compte le nombre de ligne ou pseudo = null
Ainsi on devrait pouvoir afficher les pseudo des membres connecter et le nombre de visiteur en simultanee.
Seul probleme, les if imbrique qui ne verifie pas comme si l'ip est deja dans la table ou pas.
(Je precis que je le fais en local donc mon ip est 127.0.0.1 mais je ne pense pas que cela joue dan sle fonctionnement du script.)
thunder413
Messages postés
167
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
16 novembre 2012
23
11 mai 2010 à 10:34
11 mai 2010 à 10:34
re-bonjour le probleme venait du fait que tu tester si la requete c'est bien executer au lieu de tester si oui ou non elle a retourner un resultat donc je reposte ton code corriger
<?php echo '<br><b><u>Membres connectes:</u></b><br>'; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SESSION['pseudo'])){ $querypseud = "SELECT * FROM connectes WHERE ip='".$ip."'"; $resultpseud = mysql_query($querypseud)or die(mysql_error()); if(mysql_num_rows($resultpseud)== 0){ $lastquerytime = time(); $querytime = "UPDATE connectes SET timestam='".$lastquerytime."', pseudo='".$_SESSION['pseudo']."' WHERE ip='".$ip."'"; mysql_query($querytime)or die(mysql_error()); echo '1<br>'; }else{ $lastquerytime = time(); $querytime = "INSERT INTO connectes VALUES ('".$ip."', '".$lastquerytime."', '".$_SESSION['pseudo']."')"; mysql_query($querytime)or die(mysql_error()); echo '2<br>'; } }else{ $querypseud = "SELECT * FROM connectes WHERE ip='".$ip."' AND pseudo='NULL'"; $resultpseud = mysql_query($querypseud)or die(mysql_error()); if(mysql_num_rows($resultpseud)== 0){ $lastquerytime = time(); $querytime = "INSERT INTO connectes VALUES ('".$ip."', '".$lastquerytime."', 'NULL')"; mysql_query($querytime)or die(mysql_error()); echo '3<br>'; }else{ $lastquerytime = time(); $querytime = "UPDATE connectes SET timestam='".$lastquerytime."' WHERE ip='".$ip."' AND pseudo='NULL'"; mysql_query($querytime)or die(mysql_error()); echo '4<br>'; } } $timeago = time() - 1 * 60;//5*60 soit 5 minutes $queryago = "SELECT pseudo FROM connectes WHERE timestam>'".$timeago."' AND pseudo!='NULL'"; $resultago = mysql_query($queryago)or die(mysql_error()); while ($rowpseud = mysql_fetch_array($resultago)){ echo "<b><i>".$rowpseud[0]."</i></b><br>"; } $querycont = "SELECT COUNT(*) AS total FROM connectes WHERE timestam>'".$timeago."' AND pseudo='NULL'"; $resultcont = mysql_query($querycont)or die(mysql_error()); $retourcont2=mysql_fetch_array($resultcont); $total=$retourcont2['total']; ?> <br /><b><u>Visiteurs:</u></b><br /> Il y à <?php echo $total; ?> visiteurs sur le site.<br /> <br /> (basées sur les utilisateurs actifs des 5 dernières minutes) <?php $querysup = "DELETE FROM connectes WHERE timestam<'".$timeago."'"; mysql_query($querysup); ?>