begin process at 2012 02 13 07:42:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

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

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


 Information sur la source

Note :
7,62 / 10 - par 13 personnes
7,62 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :24/05/2003 Date de mise à jour :15/03/2004 15:37:10 Vu :9 462

Auteur : Aspect

Ecrire un message privé
Site perso
Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note

 Description

Ce code permet de récupéré le nombre d'utilisateur présent sur votre channel IRC très simplement
Ensuite pour l'inséré dans votre page web:
Il y a <script src="http://www.tonsite.com/tonrep/lescript.php">< /script> utilisateur sur le Chat en ce moment.. !!

Source

  • <?php
  • $strServeur = "irc.rezium.net"; // serveur IRC
  • $intPort = 6667; // 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);
  • ?>
<?php
$strServeur = "irc.rezium.net"; // serveur IRC
$intPort = 6667; // 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);
?>

 Conclusion

Le mieux est encore d'avoir un service tel thales sur l'ircd du réseau !! m'enfin ...

Voilà, a+

Aspect
ReZiuM.Net - La plateforme de communication, gratuite !
IRC.ReZiuM.Net


 Sources du même auteur

WEBMASTERS: LIMITEZ LE SPAM DE VOS BOITES AUX LETTRES !
TRANSFORME LE CONTENU ÉCRIT D'UN SITE WEB EN ÉCRITURE ZARBI
COULEURS ALÉATOIRES DANS UNE CHAINE
TESTER PLUSIEUR SERVEUR SI OFFLINE
CACHER LES PARTIE D'UN ADRESSSE IP

 Sources de la même categorie

Source avec Zip Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

Commentaires et avis

Commentaire de vbtom le 24/05/2003 11:31:58

damn ! ca doit etre super lent nan ? le temps de se connecter a un sserveur irc ....

Commentaire de Aspect le 24/05/2003 12:58:49

nan chez moi c'est po lent je trouve enfin fo po faire tourner sa sur free :!

Commentaire de K1derCountry le 25/05/2003 08:45:59

sa marche pas sur quakenet :(

Commentaire de Ofal le 05/06/2003 08:54:08

ca marche pas sous fantasy :(

Commentaire de Aspect le 05/06/2003 13:52:39

sniff dsl :'(

Commentaire de PaToJeuR le 05/07/2003 16:18:05

de toute facon avec free ca peut pas marcher

Commentaire de Clarky le 28/10/2003 08:28:09

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

Commentaire de PaToJeuR le 29/10/2003 12:16:54

chez online.fr ca marche

Commentaire de rudybayl le 09/11/2003 17:54:36

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 ?

Commentaire de Aspect le 09/11/2003 18:33:28

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

Commentaire de Aspect le 09/11/2003 18:38:41

oupps 322 (au lieu de 522) sorry
Sinon le raw de l'erreur devrait etre 461 ou 421 un truc dans le genre

Commentaire de rudybayl le 11/11/2003 14:18:45

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

Commentaire de Kolibot le 26/12/2003 14:10:00

Cela marche niquel pour heliosnet :D

Commentaire de Aspect le 26/12/2003 15:59:00

: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+

Commentaire de Aspect le 26/12/2003 16:00:42

PS: merci pr le 1,00/10 :'(

Commentaire de Kolibot le 26/12/2003 16:01:31

Je t'ai mis 10/10 pour remonter ta note...

Commentaire de sebbu le 19/05/2004 23:45:32

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...

Commentaire de Aspect le 07/06/2004 20:04:06

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 ..."

Commentaire de D1m3x le 25/08/2004 15:06:56

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 ;)

Commentaire de In0x le 18/06/2005 17:26:41

sa marche en local

Commentaire de duduchmann le 08/10/2005 12:22:01

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>

<body>
<?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>
</body>
</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

Commentaire de tipexx94 le 08/11/2005 21:28:25

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 .

Commentaire de Vince_02 le 01/02/2006 00:46:39

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 ;)

Commentaire de Vince_02 le 01/02/2006 03:34:06

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 ^^

Commentaire de PaTaTe le 07/02/2008 14:40:46

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 ?

Commentaire de elite12000 le 12/11/2008 18:45:26

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>

<body>
ici on voit le nombre d'user    
<? <script src="compteur2.php"></scrip> ?>
</body>
</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

Commentaire de elite12000 le 12/11/2008 18:51:18

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

Commentaire de elite12000 le 13/11/2008 10:10:11

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,961 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales