Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
Je voudrais faire un script PHP qui compte le nombre de visiteurs actuellement connectés. Je voudrais qu'il soit le plus exacte possible, autant dire : l'utilisateur ouvre la page, on ajoute son IP dans la BDD, on lit combien il y a d'IP sur la table, on affiche ce nombre. L'utilisateur ferme la page, on supprime son IP.
Tout ce script est plutôt facile à faire, sauf la dernière étape : supprimer son IP quand il ferme la page. J'ai essayé de faire comme suit :
<html>
<head>
<script type="text/javascript">
function destroy_ip() {
<?php mysql_connect(...) tout le code ... mysql_close(); ?>
}
</script>
</head>
<body onunload="javascript:destroy_ip();">
la page ...
</body>
</html>
Mais ça ne marche pas ! Pourtant je sais qu'on peut mettre du PHP dans du javascript ...
Si ça se trouve, je n'ai même pas besoin de passer par du javascript.
Si quelqu'un a une solution à se problème, javascript ou non, je suis preneur !
@+ !
PS : j'ai aussi essayé <body onunload="<?php destroy_ip(); ?>"> et <body onunload="<?php tout le code ?>"> mais sans succes.
Hors ligne
hello,
le php s'exécute côte serveur (dont avant que l'utilisateur ne voit la page). Donc aucun code php ne peut être exécuter lors d'un appel javascript.
Par contre, avec javascript, tu peux appeler une nouvelle page qui ne servira qu'à mettre à jour ta base de donnée. Ca s'appelle l'Ajax.
++
Hors ligne
Bonjour lolo3129,
Tout d'abord merci de ta réponse ![]()
Si j'ai bien compris, uniquement avec PHP c'est impossible. Je dois utiliser Javascript qui appelle ma page qui détruira l'IP du visiteur, c'est ça ?
Si j'ai bien compris, alors peux-tu me dire comment procéder ?
Sinon ben ... si tu peux me réexpliquer ... ![]()
Encore merci ! ++
Hors ligne
hello,
effectivement, php tout seul, c'est impossible, puisque ton code php est appelé uniquement AVANT que la page ne soit affichée.
donc ce qu'on fait, c'est qu'avec javascript, on appelle des pages php qui exécute donc du code php. Cela permet d'exécuter du code quand on veut. Par contre, ça nécessite un appel supplémentaire sur le serveur.
cherche un peu du côté de ajax et xmlhttprequest sur google : http://www.google.fr/search?q=ajax+xmlh … =firefox-a
et tu auras plein de tutos.
Hors ligne
Bonjour,
Désolé de répondre un peu tard, mais j'ai un petit problème.
J'ai essayé sans JS/Ajax d'ouvrir la page destroy_ip.php, et elle marche parfaitement, donc mon problème ne vient pas de cette page.
J'ai fais ma page compteur_live.php, et voici mon code (qu'est-ce qui ne va pas ?) :
<html>
<head>
<title>Compteur connectés en temps réel</title>
<script type="text/javascript">
function destroy_ip ()
{
var xhr;
if (window.XMLHttpRequest)
{
xhr = new XMLHttpRequest();
}
else
{
if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
request.onreadystatechange = function();
xhr.open("", "destroy_ip.php", true);
}
</script>
</head>
<body onunload="javascript:destroy_ip();">
<?php
mysql_connect('localhost','root','');
mysql_select_db('testsphp');
$ip = $_SERVER['REMOTE_ADDR'];
$retour = mysql_query("SELECT * FROM connectes WHERE ip = '$ip'") OR DIE (mysql_error());
$donnees = mysql_fetch_array($retour);
if ($donnees == 0)
{
mysql_query("INSERT INTO connectes VALUES('$ip')") OR DIE (mysql_error());
}
$retour = mysql_query("SELECT COUNT(*) AS nbre_ip FROM connectes") OR DIE (mysql_error());
$donnees = mysql_fetch_array($retour);
$connectes = ($donnees['nbre_ip'] == 1) ? 'Il y a 1 visiteur connecté.' : 'Il y a ' . $donnees['nbre_ip'] . ' visiteurs connectés.';
echo $connectes;
mysql_close();
?>
</body>
</html>J'ai de bonnes connaissances en PHP mais JS n'est vraiment pas mon domaine.
Si quelqu'un pouvait me refaire ma fonction destroy_ip() qui fonctionne, j'en serais très reconnaissant.
PS : je ne sais vraiment pas comment m'y prendre pour appeler cette page sachant que je veux n'envoyer de données, que ce soit GET ou POST, est-ce possible ?
Merci à tous ceux qui m'aideront ! @+ !
Dernière modification par Vyk12 (07-03-2008 12:18:04)
Hors ligne