Savoir qui est connecter dans une BDD - PHP - Programmation
Marsh Posté le 12-01-2009 à 13:18:37
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...
Marsh Posté le 12-01-2009 à 13:28:52
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 :
|
ensuite la fonction:
Code :
|
et enfin l'iframe:
Code :
|
et dans la page ou ce situe l'iframe j'ai mis :
Code :
|
( il récupère l'Id du médecin un peut plus haut).
voila, merci d'avance.
Marsh Posté le 12-01-2009 à 16:28:49
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 ^^
Marsh Posté le 13-01-2009 à 13:25:06
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!
Marsh Posté le 13-01-2009 à 13:30:41
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)
Marsh Posté le 13-01-2009 à 15:15:31
"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.
Marsh Posté le 14-01-2009 à 10:40:42
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 :
|
et mon brouillon:
Code :
|
j'ai aussi trouver ce script que je n'est pas reussi a utiliser avec mes propre variable:
Code :
|
en ce qui concerne Ajax je ne connais pas du tout :s
je vous remercie d'avance
Cordialement
Marsh Posté le 14-01-2009 à 17:16:35
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...
Marsh Posté le 12-01-2009 à 11:26:11
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 ) :
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.