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

  FORUM HardWare.fr
  Programmation
  PHP

  Connexion IRC pour lister utilisateurs d'un channel.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Connexion IRC pour lister utilisateurs d'un channel.

n°1411688
paranoidan​droid
Posté le 23-07-2006 à 12:57:34  profilanswer
 

Bonjour,
 
J'ai adapté un script de bot IRC en php pour lui faire faire une simple tache -> Récuperer la liste des nick connectés sur un channel donné.
 
Le seul probleme c'est qu'actuellement pour récuperer la liste via un NAMES #chan, je dois d'abord faire rentrer le bot sur le chan donné étant que le serveur irc sur lequel je le connecte ( qnet en l'occurence ) applique le mode invisible par défaut.
 
L'idée foireuse que j'ai eu au début c'est d'éxec le script a chaque visite de la page "whoisonlineirc.php" par exemple. Mais ça fait une multitude de join/part sur le chan IRC. Ensuite de passer via MySQL et des restriction au niveau de script pour qu'il soit executé qu'une fois par heure par exemple. Mais le join/part me dérange toujours quelquepart.
 
Savez vous s'il y a un autre moyen de récuperer la liste des users ?
 
Je mets le bout de code juste pour info :
 

Code :
  1. <?php
  2. $strServeur = "euroserv.fr.quakenet.org"; // serveur IRC
  3. $intPort = 6667; // port..
  4. $strNickCMD = "NICK udontseeme"; // pas tout a fait vrai.
  5. $strNick = ":udontseeme";
  6. $strInfo = 'USER Android2006 0 * :bot';
  7. $strChannel = "JOIN #kefas"; // votre channel IRC
  8. $strNames = "NAMES #kefas"; // liste utilisateurs
  9. function send_data ($message) {
  10.      fputs (SOCKET, "$message\r\n", 4096);
  11. }
  12. function read_ping ($in) {
  13.       if (strpos ($in, 'PING :') !== FALSE ) {
  14.           send_data ('PONG '.substr ($in, 6));
  15.       }
  16. }
  17. function read_data ($data) {
  18.       $in = fgets ($data, 4096);
  19.       read_ping ($in);
  20.       return $in;
  21. }
  22. $open_socket = @fsockopen($strServeur, $intPort); // ouverture socket sur le serveur
  23. if (feof ($open_socket))
  24. {
  25.  die ("Couldn't connect to IRC" );
  26. }
  27. else
  28. {
  29.  define ('SOCKET', $open_socket);
  30. send_data ($strInfo);
  31.  send_data ($strNickCMD);
  32.  $i = 0;
  33.  while (SOCKET)
  34.  {
  35.  if ($i++ == 5)
  36.  {
  37.   send_data ($strChannel);
  38.   send_data ($strNames);
  39.  }
  40.  $in = read_data(SOCKET);
  41.  if(strstr($in, "353" ))
  42.  { // on détecte si c'est la réponse à notre cmd NAMES
  43.   $temp = substr(strstr($in, $strNick),strlen($strNick));
  44.   $temp = explode(" ", trim($temp));
  45.   print_r ($temp);
  46.   break; // et on quit la boucle
  47.   }
  48.  }
  49.  fputs(SOCKET, "QUIT\r\n" );
  50. }
  51. /* fermeture sock */
  52. fclose(SOCKET);
  53. ?>


Message édité par paranoidandroid le 23-07-2006 à 12:58:47
mood
Publicité
Posté le 23-07-2006 à 12:57:34  profilanswer
 

n°1793633
nicobzz
Posté le 29-09-2008 à 22:45:44  profilanswer
 

salut je ne sais pas du tout si ce sujet est toujours d'actualité pour toi mais j'ai besoin de la même fonction que toi!
en fait je sais comment faire pour lancer ton script à part il suffit de faire:
$server = $_SERVER["SERVER_NAME"];  
$get = '/ampc/chat/actualise_chat.php';  
$fp = fsockopen($server, 80);  
fputs($fp, "GET {$get} HTTP/1.1\r\n" );  
fputs($fp, "Host: {$server}\r\n" );  
fputs($fp, "X-Header1: blah\r\n" );  
fputs($fp, "X-Header2: blah2\r\n" );  
fputs($fp, "Connection: Close\r\n\r\n" );  
fclose($fp);  
 
moi j'ai utilisé une librairie php: net smart irc pour essayer de faire la meme chose que toi
 
si quelqu'un d'autre sait un peu comment faire pour construire cette fonction même de me le signaler je pourrais lui poser quelques questions ;) merci


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

  Connexion IRC pour lister utilisateurs d'un channel.

 

Sujets relatifs
lister le contenu d'un dossier si son nom ne contient que des chiffresconnexion ssh
connexion à une base de données SQL server via ado.net[Batch] redémarrer/tuer une connexion
Prblm de connexion avec PHP via EasyPhP sur base SQLServ 2000Prblm connexion php via EasyPhp sur base MSSQLSERVEUR2000
ssh + batch + connexion[VBS + LDAP + HTML] Récupération des infos utilisateurs d'un AD
date derniere connexionConnexion à MySQL
Plus de sujets relatifs à : Connexion IRC pour lister utilisateurs d'un channel.


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