RÉCUPÉRER LE NOMBRE D'UTILISATEUR SUR UN CHANNEL IRC

vbtom Messages postés 229 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 5 octobre 2003 - 24 mai 2003 à 11:31
cs_elite12000 Messages postés 3 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 13 novembre 2008 - 13 nov. 2008 à 10:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13294-recuperer-le-nombre-d-utilisateur-sur-un-channel-irc

cs_elite12000 Messages postés 3 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 13 novembre 2008
13 nov. 2008 à 10:10
bonjour
c bon le compteur tourne parfaitement par contre je cherche la solution en mettant if pour les salons car je mets en place le compteur pour chaque salon d'un serveur donc si je mets le script pour chaque salon la page va mettre 4 heures a demarrer

davance merci
cs_elite12000 Messages postés 3 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 13 novembre 2008
12 nov. 2008 à 18:51
euh je suis desoler
je dois apprendre a lire car j'ai chercher une erreur ligne 11 dans le mauvais document lol je m'excuse d'avoir poster ceci et si un admin veux supprimer mon post pas de souci
merci
cs_elite12000 Messages postés 3 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 13 novembre 2008
12 nov. 2008 à 18:45
bonjour

jai repris le code et ajouter ce que vince a ajouter car rien ne fonctionner.

voici mon code:
<?php
$strServeur = "irc.liberty-chat.org"; // serveur IRC
$intPort = 6667; // port..
$strNick = uniqid(asp); // on génère un sn aléatoire
$strChannel = "#liberty-chat"; // votre channel IRC
$Sock = @fsockopen($strServeur, $intPort); // ouverture socket sur le serveur IRC
fputs($Sock, "user Aspect UNIX aspect@rezium.net: robot\n"); // infos utilisateur
fputs($Sock, "nick $strNick\n"); // envoie de notre sn
fputs($Sock, "list $strChannel\n"); // on exécute la cmd LIST
while($strLigne = fgets($Sock, 1024)){ // on récupère les donné
$a = explode(" ", $strLigne);
if ($a[0] == "PING") {
fputs($Sock, "PONG $a[1]");
fputs($Sock, "LIST ".$strChannel."\r\n"); // on exécute la cmd LIST
}
if(strstr($strLigne, "322")){ // on détecte si c'est la réponse à notre cmd LIST
$strDonne = $strLigne; // si oui on la stock
break; // et on quit la boucle
}
}
/* on décortique le nombre d'utilisateur */
$aArray = explode(":", $strDonne);
$strDonne = $aArray[1];
$aArray1 = explode("322", $strDonne);
$strDonne = $aArray1[1];
$strDonne = str_replace($strNick, "", $strDonne);
$strDonne = str_replace($strChannel, "", $strDonne);
$strDonne = str_replace(" ", "", $strDonne);
/* et on affiche */
print "document.write("".$strDonne."");";
/* on déconnecte d'IRC avec la cmd QUIT */
fputs($Sock, "QUIT\n");
/* fermeture sock */
fclose($Sock);
?>

sur ma page d'affichage
jai ceci en code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>

</head>


ici on voit le nombre d'user
<? <script src="compteur2.php"></scrip> ?>

</html>


et voila a laffichage ce qu'il me donne
Parse error: parse error, unexpected '<' in /home/julesweb/domains/liberty-chat_org/www/affichecompteur.php on line 11

donc ben si vous avez une idee je suis preneur
davance merci
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
7 févr. 2008 à 14:40
Personnellement j'ai une petite erreur, elle ne plante pas le code mais j'aimerais corriger ca :

Undefined variable: asp in chat.php sur la ligne : $strNick = uniqid($asp); // on génère un sn aléatoire

Comment faire ?
Vince_02 Messages postés 32 Date d'inscription dimanche 15 mai 2005 Statut Membre Dernière intervention 14 janvier 2016 2
1 févr. 2006 à 03:34
En faite j'ai trouvé tout seul comme un grand, il suffisait que j'ajouté c'est 3 lignes dans la la boucle While et déplacer la ligne => fputs($Sock, "list $strChannel\n"); // on exécute la cmd LIST <=

comme ceci :

while($strLigne = fgets($Sock, 1024)){ // on récupère les donné
$a = explode(" ", $strLigne);
if ($a[0] == "PING") {
fputs($Sock, "PONG $a[1]");
fputs($Sock, "LIST ".$strChannel."\r\n"); // on exécute la cmd LIST
}
if(strstr($strLigne, "322")){ // on détecte si c'est la réponse à notre cmd LIST
$strDonne = $strLigne; // si oui on la stock
break; // et on quit la boucle
}
}

Après ça roule nickel ^^ enfin il y a que sur moi que ça tombe les bugs en ce moment je sais pas ce qu'il se passe mais bon...

Si ça intéresse personne, ou si quelqu'un voudrait voir la source, je suis entrain de me faire un script PHP, SQL basé sur le Chat JAVA PJIRC, je pense que vous connaissez ... En faite, j'ai fait une Gestion de Membres, Administrations et tout une petite panoplie pour personnalisé le chat, commande perso, smileys etc (presque un concurent direct a mIRC lol)... si quelqu'un serait curieux de voir ce que c'est et en même si possible me donné des p'tits tuyaux pour optimiser la chose, j'en serais très content ^^

si non, pas mal la source, ça me permettra de faire des p'tits trucs supplémentaire sur mon script ^^
Vince_02 Messages postés 32 Date d'inscription dimanche 15 mai 2005 Statut Membre Dernière intervention 14 janvier 2016 2
1 févr. 2006 à 00:46
Yop tou le monde, pour ma part, j'ai essayer le script dans l'état... résultat marche pas, j'ai droit au débug de Java ^^'
En cherchant un peut, et essayant de bidouiller ton script, je suis arrivé à cette erreur =>

---------------
:WebShonen.com NOTICE infos :*** If you are having problems connecting due to ping timeouts, please type /quote pong 23C2C7BD or /raw pong 23C2C7BD now.

PING :23C2C7BD
:WebShonen.com 451 list :You have not registered <=== Ce truc là, pas catolique du tout :s
---------------

Je l'ai fait fonctionner en local sur un Serv IRC Unreal 3.2 + Anope 1.7 . Mais bon même sans anope j'ai le même problème. De plus, même en étant IRCop sur le client IRC je ne le vois même pas se connecter... (Adresse Serveur + Port sont correct [ 127.0.0.1 : 6667 ] )

Auriez-vous une petite astuce ou idée pour éclaircir la chose ? Ca serait gentils de votre part, merci d'avance ;)
tipexx94 Messages postés 60 Date d'inscription vendredi 12 novembre 2004 Statut Membre Dernière intervention 20 juin 2007
8 nov. 2005 à 21:28
ne mets pas le code php et le <script src dans la meme page

crée une page par exemple nbusers.php ou tu place le code php , ensuite sur la page ou tu veux que sa saffiche tu place <script src="nbusers.php"></scrip> Utilisateur(s) en ce moment .
duduchmann Messages postés 30 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 14 juillet 2015
8 oct. 2005 à 12:22
Pour ma part .. j'ai celà :

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


<?php
$strServeur = "irc.galactika.net"; // serveur IRC
$intPort = 7200; // port..
$strNick = uniqid(asp); // on génère un sn aléatoire
$strChannel = "#titaxium"; // votre channel IRC

$Sock = @fsockopen($strServeur, $intPort); // ouverture socket sur le serveur IRC

fputs($Sock, "user Aspect UNIX aspect@rezium.net: robot\n"); // infos utilisateur
fputs($Sock, "nick $strNick\n"); // envoie de notre sn

fputs($Sock, "list $strChannel\n"); // on exécute la cmd LIST

while($strLigne = fgets($Sock, 1024)){ // on récupère les donné
if(strstr($strLigne, "322")){ // on détecte si c'est la réponse à notre cmd LIST
$strDonne = $strLigne; // si oui on la stock
break; // et on quit la boucle
}
}

/* on décortique le nombre d'utilisateur */
$aArray = explode(":", $strDonne);
$strDonne = $aArray[1];
$aArray1 = explode("322", $strDonne);
$strDonne = $aArray1[1];

$strDonne = str_replace($strNick, "", $strDonne);
$strDonne = str_replace($strChannel, "", $strDonne);
$strDonne = str_replace(" ", "", $strDonne);

/* et on affiche */
print "document.write("".$strDonne."");";

/* on déconnecte d'IRC avec la cmd QUIT */
fputs($Sock, "QUIT\n");
/* fermeture sock */
fclose($Sock);
?>


<script src="lescript.php"></script>

</html>


Résultat :
PHP Page :
Notice: Use of undefined constant asp - assumed 'asp' in f:\site street-fighters\lescript.php on line 11

Fatal error: Maximum execution time of 30 seconds exceeded in f:\site street-fighters\lescript.php on line 21

Server :
[12:14:54] * asp43479c17da0fa (Aspect@HipHopRezo-6C6E5C69.ppp.tiscali.fr) has joined #Street-Fighters
[12:16:05] * asp43479c17da0fa (Aspect@HipHopRezo-6C6E5C69.ppp.tiscali.fr) Quit (Client exited)

Quelqu'un peut-il m'aider .. j'ai fais celà en local et je comprends pas pkoi celà ne marche pas :o
cs_In0x Messages postés 19 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 18 juin 2005
18 juin 2005 à 17:26
sa marche en local
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
25 août 2004 à 15:06
Salut,
c'est normal que cela puisse engendrer des erreurs, le protocole IRC n'est pas bien suivi.

Pour envoyer un message on termine tout les messages par \r\n et non pas par \n.

Ensuite, le NICK doit être envoyé avant le USER ! (normalement il y a encore le PASS pour nickserv).

Un autre moyen de faire cela aurait été de récupérer le message NAMES et de compter le nombre de mot :)

Ciao ;)
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
7 juin 2004 à 20:04
sebbu, personnellement je m'en fou ... Moi ça a marché durant plusieurs mois et ça m'as beaucoup servis, maintenant si tu host ce script sur multicaca je comprends tes peines, m'enfin comem je l'ai signalé "Le mieux est encore d'avoir un service tel thales sur l'ircd du réseau !! m'enfin ..."
sebbu Messages postés 6 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 23 mars 2010
19 mai 2004 à 23:45
ca parait pas trop mal, sauf que pour ca ne marche que pour une minorité de serveurs, les autres demande un pong bidule apres qu'il le dise...
pis quand je met 1min30 pour me connecter sur un serveur irc...
pis que une fois sur cinq je suis déco avant que ca puisse lister le salon...

j'appelle pas ca du bon boulot...
cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004
26 déc. 2003 à 16:01
Je t'ai mis 10/10 pour remonter ta note...
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
26 déc. 2003 à 16:00
PS: merci pr le 1,00/10 :'(
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
26 déc. 2003 à 15:59
:D

Si vous souhaitez vérifier sans vous faire ch*er si sa marche c'est vrai que j'l'avais mis online ici: http://service.x-plosif.com (j'vais bientôt le delete d'ailleur car sa bouffais trop :s)

Voilà sinon, rudybayl, je C pas du totu là dans l'immédiat comment t'aider, essaye de voir s'y'a pas un autre raw que tu peux utiliser :s

a+
cs_Kolibot Messages postés 817 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 19 avril 2004
26 déc. 2003 à 14:10
Cela marche niquel pour heliosnet :D
rudybayl Messages postés 2 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 11 novembre 2003
11 nov. 2003 à 14:18
J'ai oublié de te féliciter pour tons cript lors de mon dernier message, je me corrige ici ! Félicitations ;-)

Je n'ai aps résolu mon soucis de détéction d'erreur (genre "No such Channel") malgré avoir récupérer un tableau récapitulatif de tous les numéros RAW IRC. En forçant l'affichage ligne par ligne, je me rends compte que le script stoppe sans raison et systématiquement sur le RAW 372 correspondant à la MOTD unqiuement dans le cas où le chan n'existe pas encore, sinon il arrive à passer la MOTD. Par conséquent il n'y a pas d'erreur retournée capable d'être interprétée !

Une solution à deux balles, mais qui me satisfera pour le moment c'est de crée à la volé le chan en demandant au script d'ouvrir le channel en faisant un join #strChannel. Evidemment, le script est prévu pour ne pas s'exécuter systématiquement, sinon bonjour les logs dans le chan ! ;-)

Je reste tout de même attentif aux éventuelles solutions "plus propres" qui résoudront mon problèmes !

A bientôt
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
9 nov. 2003 à 18:38
oupps 322 (au lieu de 522) sorry
Sinon le raw de l'erreur devrait etre 461 ou 421 un truc dans le genre
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
9 nov. 2003 à 18:33
ha oui si le chan y a personne il est considéré comme pas existant donc le raw 522 tu peut l'attendre longtemps dans le while lol !
La solution serait de peupler ton chat, non sérieusement lol, essaye de mètre un debug pour voir se que renvoie le serveur quand sa te fais sa et fou un break; sur l'erreur renvoyée (si toute fois elel aparait)

@+
Aspect
rudybayl Messages postés 2 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 11 novembre 2003
9 nov. 2003 à 17:54
Ce script fonctionne très bien, mais uniquement lorsqu'il y a au moins une personne connectée sur le salon IRC. Si personne n'est connectée, le script semble tourner dans le vide et empêcher l'exécution du reste de la page. Avez-vous une solution ?
PaToJeuR Messages postés 11 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 4 mai 2004
29 oct. 2003 à 12:16
chez online.fr ca marche
cs_Clarky Messages postés 4 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 10 août 2004
28 oct. 2003 à 08:28
Si le port n'est pas ouvert chez l'hébergeur ca ne risque pas de fonctionner, j'ai le meme probleme en ce moment, je vais donc changer d'hébergeur et aller vers un qui me permet de faire ce que je veux
PaToJeuR Messages postés 11 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 4 mai 2004
5 juil. 2003 à 16:18
de toute facon avec free ca peut pas marcher
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
5 juin 2003 à 13:52
sniff dsl :'(
Ofal Messages postés 3 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 8 mars 2003
5 juin 2003 à 08:54
ca marche pas sous fantasy :(
K1derCountry Messages postés 1 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 25 mai 2003
25 mai 2003 à 08:45
sa marche pas sur quakenet :(
cs_Aspect Messages postés 47 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 23 mars 2004 1
24 mai 2003 à 12:58
nan chez moi c'est po lent je trouve enfin fo po faire tourner sa sur free :!
vbtom Messages postés 229 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 5 octobre 2003
24 mai 2003 à 11:31
damn ! ca doit etre super lent nan ? le temps de se connecter a un sserveur irc ....
Rejoignez-nous