Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1063 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Savoir qui est connecter dans une BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Savoir qui est connecter dans une BDD

n°1836784
shigi
Posté le 12-01-2009 à 11:26:11  profilanswer
 

bonjours,
 
j'aurai voulu savoir si quelqu'un connaisse un moyen de savoir qui est connecter a la base de donnée.
je suis en train de faire un site et j'aimerai savoir qui est connecter avec son login a la base de donnée, pour l'instant j'ai essayer en mettant un flag ( sous phpmyadmin ) :
 

Code :
  1. $IdMedecin = (int) base64_decode($_COOKIE["IdMedecin"]);
  2.   $req = "select * from medecins where IdMedecin = $IdMedecin";
  3.   $rs_meds = ExecRequete($req, $connexion);
  4.   $habil_med = ObjetSuivant($rs_meds);
  5.   $online = (string) $_REQUEST["FlagConnect"];
  6.   $req3 = "select FlagConnect from medecins where IdMedecin = $IdMedecin";
  7.   $res3=ExecRequete($req3, $connexion);
  8.   $online = ObjetSuivant ($res3);
  9.  if ($IdMedecin>0)
  10.  {
  11.   $online = "O";
  12.  }


 
donc si il est connecter je mes un "O" sinon c'est N le problème c'est que si les personne quitte mal le site sans cliqué sur déconnecter cela ne fonctionne pas !  
j'aurai voulu savoir si vous pourriez m'aidez car la sa fais une semaine que je galère la dessus.
 
merci d'avance.

mood
Publicité
Posté le 12-01-2009 à 11:26:11  profilanswer
 

n°1836857
rufo
Pas me confondre avec Lycos!
Posté le 12-01-2009 à 13:18:37  profilanswer
 

stockes aussi la date et l'heure de dernière connexion (requête dans la BD) de chaque personne. Au bout d'un timeout, si y'a pas eu de nouvelle connexion pour l'utilisateur, c'est qu'il est parti, alors tu remets le flac à N. Sous Linux, tu peux utiliser le cron pour lancer le script qui sera chargé de monitorer le timeout des connexions...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1836864
shigi
Posté le 12-01-2009 à 13:28:52  profilanswer
 

merci de ta réponse ,
donc , oui je viens de voir que l'heure va pouvoir m'aidai a gérer sa, le problème est que je n'arrive pas trop a utilisé les Iframe donc voila ce que j'ai fais si vous pouvez me dire ce qui cloche :
 
tout d'abord dans le body:

Code :
  1. <body onload="reloadFrame('test', 2000)"


 
ensuite la fonction:
 

Code :
  1. <script>
  2. function reloadFrame(test, 20)
  3. {
  4. setInterval(function(){window.frames[test].location.reload();}, 20);
  5. }
  6. </script>


 
et enfin l'iframe:

Code :
  1. <iframe name="test" SRC="http://localhost/Sami/test.php" scrolling="no" height="2" width="2" FRAMEBORDER="no">
  2.   </iframe>


et dans la page ou ce situe l'iframe j'ai mis :
 

Code :
  1. <?php
  2.   $req = "update medecins set DernierAcces=NOW() where IdMedecin = " . $medecin->IdMedecin;
  3.   ExecRequete($req, $connexion);
  4.    ?>


( il récupère l'Id du médecin un peut plus haut).
 
voila, merci d'avance.

n°1836953
shigi
Posté le 12-01-2009 à 16:28:49  profilanswer
 

j'ai essayer avec la commande  
<meta http-equiv=refresh content=20;url="test.php">
 
mais le problème est qu'il me rafraichi toute ma page ce que je ne veut surtout pas car ceux qui utiliseront ce site doivent toujours y rester.( sur la page ou il son ) donc faut que cette action soit invisible ^^

n°1837284
rufo
Pas me confondre avec Lycos!
Posté le 13-01-2009 à 13:25:06  profilanswer
 

t'as entendu parler d'AJAX (pas le produit ménager)? Parce que là, c'est un cas d'utilisation typique et approprié. Regardes du côté des lib javascript Prototype et script.aculo.us. Comme ça, t'auras pas besoin de ses affreuses iframe!


Message édité par rufo le 13-01-2009 à 13:25:34

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1837290
esox_ch
Posté le 13-01-2009 à 13:30:41  profilanswer
 

Si ce que tu veux savoir c'est vraiment : Qui est connecté à la base de donnée, tu peux utiliser la query : SHOW PROCESSLIST , qui te donne les process et la personne qui les a lancés. Par contre ça ne marche pas si tu utilises un script qui connecte tout le monde avec le même username/password à mysql (ce que je crois que tu fais justement)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1837374
omega2
Posté le 13-01-2009 à 15:15:31  profilanswer
 

"SHOW PROCESSLIST" n'est pas de toute manière une solution quand on accède à la base de donné à travers un site web même si chaque utilisateur avait son propre compte dans la bdd : les connections ne durent pas assez longtemps (fermeture dès la fin de la création de la page) ou durent vraiment trop longtemps (une heure avec mysql et php il me semble pour les connections dites persistantes)
 
shigi > En fait, le plus simple c'est simplement de faire ce qui t'as été suggéré plus haut : noter la date heure à la seconde près de la dernière demande d'une page par chacun et considérer que s'il n'en a pas demandé d'autre après X minutes, il n'est plus là.
Ensuite tu peux rendre le système plus fin en faisant des appels en ajax et en considérant que c'est un appel toutes les X secondes et que donc si le dernier appel ajax date de 3X secondes (pour éviter de déconnecter trop vite quelqu'un qui a juste fait ramer son navigateur en allant sur un autre site) , c'est qu'il n'est plus là. Cette modification doit être faite en gardant le fonctionnement initial pour éviter de perdre, dans le décompte, ceux qui n'ont pas javascript d'activé (obligé de garder une donné qui dit si la date/heure correspond à une demande de page ou juste à un BIP, en ajax, de présence).
 
 
A noter que dans tous les cas, ça n'est pas par ce que le navigateur continue de rafraichir le lien ajax que la personne est encore devant son ordi ou n'est pas entrain de regarder une autre fenêtre. ;)

n°1837710
shigi
Posté le 14-01-2009 à 10:40:42  profilanswer
 

Bonjours,
 
désoler si cela n'était pas assez précis, donc en faite le but de mon projet la gestion des malade par des médecin.
l'une des fonction du site doit être de voir les centre qui sont connecter au site en ce moment donc pour cela j'ai créer un Flag, que je mes a "O" lors qu'il appui sur la touche "ce connecter".
Maintenant je recherche la possibilité de mettre ce Flag a "N" d'après ce que j'ai vu il n'y a aucune fonction qui indique si un utilisateur et connecter a la base de donnée a par ce moyen la.
donc j'ai pu lire qu'il étais "simple" de comparé 2 heures donc j'ai mis dans ma base de donné un champ "datetime" et dans mon code php un update now() avec un refresh toute les x minute ( pas encors determiner ) et une cariable dans mon code php qui reprend la valeur time() ( que je convertit ensuite en "$result=date('Y-m-d H:i:s')" et donc si le refresh de la page ne ce fait plus la date et ou l'heure sera inferieur a celle que j'ai mis dans ma variable et donc le flag passe a "N".
donc ma question est :
-soit est il possible de de passer la date enregistrer dans ma base en timstamp pour la comparer plus facilement avec ma variable sui est directement sous cette forme?
-ou si je doit les comparer sous la forme (Y-m-d H:i:s) mais cela ne marche pas avec un simple "if($result>$rec){"
ou si vous avez d'autre solution je sui preneur.
pour mon code a mettre je ne vois pas quoi mettre d'autre car c'est une nouvelle fonction du site.
 
Code d'affichage de mes connection ou deconnection :

Code :
  1. <?php
  2.                    
  3.                    
  4.                                     //Affichage qui est connecter partie connecté
  5.                                    $req2 = "select * from federations where FlagConnect='O'";
  6.                                   $rs_medecins2 = ExecRequete($req2, $connexion);
  7.                                
  8.                                
  9.                                  while ($medecin2 = ObjetSuivant($rs_medecins2)) {
  10.                                       if ($medecin2->IdFederation>0) {
  11.                     ?>
  12.                                   <tr>
  13.                               <td><img align="right" src="images/ic_online.gif" ></td>
  14.                               <td> <?php echo lib_html(strtolower($medecin2->Nom)); ?> </td>
  15.                                 </tr>
  16.                                   <?php
  17.                                     } // ne pas afficher le compte Fcmicro
  18.                                    
  19.                                   } // fin boucle des comptes médecins ?>
  20.                    
  21.                    
  22.                    
  23.                    
  24.                    
  25.                       <?php
  26.                                 //Affichage qui est connecter partie non connecté   
  27.                                   $req = "select * from federations where FlagConnect='N'";
  28.                                   $rs_medecins = ExecRequete($req, $connexion);
  29.                                
  30.                                  while ($medecin = ObjetSuivant($rs_medecins)) {
  31.                                       if ($medecin->IdFederation>0) {
  32.                                       ?>
  33.                                   <tr>
  34.                               <td><img align="right" src="images/offline.gif" ></td>
  35.                               <td> <?php echo lib_html(strtolower($medecin->Nom));?> </td>
  36.                                 </tr>
  37.                                   <?php
  38.                                     }
  39.                                    
  40.                                   }
  41.                                   ?>


 
et mon brouillon:

Code :
  1. <?php
  2.      
  3.             if ($IdMedecin==0)
  4.             {
  5.          
  6.             }
  7.             else{
  8.             $req = "select DernierAcces from medecins where IdMedecin= $IdMedecin";
  9.             $res = ExecRequete($req, $connexion);
  10.             $deco = ObjetSuivant ($res);
  11.             $rec=$deco->DernierAcces;
  12.          
  13.             echo $rec;
  14.             $timestamp = time();
  15.             $result=date('Y-m-d H:i:s');
  16.             if($result>$rec){
  17.          
  18.         $req = "update federations set FlagConnect='N' where IdFederation = $recup";
  19.         $res=ExecRequete($req, $connexion);
  20.         $flagco = ObjetSuivant ($res);
  21.         }
  22.          
  23.             }
  24.             ?>


j'ai aussi trouver ce script que je n'est pas reussi a utiliser avec mes propre variable:
 

Code :
  1. <script>
  2.     function date_diff (date_recent, date_old) {
  3.    return date_to_timestamp(date_recent) - date_to_timestamp(date_old);
  4. }
  5. </script>


 
en ce qui concerne Ajax je ne connais pas du tout :s  
 
je vous remercie d'avance
 
Cordialement :)
 

n°1837927
rufo
Pas me confondre avec Lycos!
Posté le 14-01-2009 à 17:16:35  profilanswer
 

Avec Ajax (javascript donc), en gros, toutes les x secondes, la page web affichée dans le navigateur web va envoyer au serveur une info comme quoi la personne est toujours en train de consulter le site. Lorsque la personne quitte l'appli web, le serveur ne reçoit donc plus l'info envoyée périodiquement. Il en déduit donc que la personne a quitté le site et met à jour le flag dans le BD...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1838090
shigi
Posté le 15-01-2009 à 10:13:56  profilanswer
 

ok je regarde sa ;) merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Savoir qui est connecter dans une BDD

 

Sujets relatifs
[C] Savoir si un type de fichier est présent dans un répertoirLDAP : Comment savoir si un compte utilisateur est vérrouillé ?
Réplication BDDPartage de FTP, BDD; quelles garanties ?
Socket TCP Savoir si quelqu'un est connecté à l’autre boutcomment savoir si un fichier sous linux a été modifier ?
Connaitre les pc connecter à un réseau avec une page en phpQuel schéma relationnel est le bon ?
[VB.Net2003-2005+SQL-Access] Commandes et Syntaxes pour travail de BDD 
Plus de sujets relatifs à : Savoir qui est connecter dans une BDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR