begin process at 2010 02 10 01:43:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > COMPTEUR DE JOURS RESTANTS DANS LE TOPIC D'UN CHANNEL IRC (À ÉXÉCUTER AVEC CRON)

COMPTEUR DE JOURS RESTANTS DANS LE TOPIC D'UN CHANNEL IRC (À ÉXÉCUTER AVEC CRON)


 Information sur la source

Note :
Aucune note
Catégorie :Réseau & Internet Classé sous :irc, topic, compte, rebours, jours Niveau :Initié Date de création :11/03/2007 Date de mise à jour :12/03/2007 18:48:04 Vu :6 436

Auteur : Elektordi

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Ce script met à jour le topic d'un chan IRC à chaque appel. Il permet de gérer la maj d'un compte à rebours.
La config se fait en haut du fichier.

Le script a été fait pour se connecter à QuakeNet. Pour un autre réseau, vous risquez de devoir retoucher le protocole ainsi que de remplacer le système d'auth.

Pour l'automatiser, vous devez appeler ce script depuis un démon cron on assimilé (ou http://www.webcron.org/)

Les sleep(x) servent à ne pas se faire bannir du serveur IRC pour "Excess Flood" (trop de données à la suite).

Le reste du topic est conservé ! Le script ne change que la partie "J-xxx" ou ne fait rien si cette partie n'existe pas.

Source

  • <?php
  • $user = "PhpPooler";
  • $nick = "gdz|GodzilanBot";
  • $chan = "#godzilan";
  • $q_user = "QuakenetUser";
  • $q_pass = "QuakenetPassword";
  • // Godzilan 3: 26 octobre 2007
  • $jour = 26;
  • $mois = 10;
  • $annee = 2007;
  • // FIN CONFIG
  • //euroserv.fr.quakenet.org:6667
  • // Timeout de 15s
  • if (!($fp = @fsockopen("euroserv.fr.quakenet.org", 6667, $errno, $errstr, 15)))
  • {
  • die("Connect failed.");
  • }
  • function vide_buffer($s)
  • {
  • $status["unread_bytes"] = 1;
  • while($status["unread_bytes"])
  • {
  • fgetc($s);
  • $status = socket_get_status($s);
  • }
  • }
  • function cancel($s,$reason)
  • {
  • fputs($s, "QUIT :Abort\r\n");
  • sleep(1);
  • die("Operation cancelled: ".$reason);
  • }
  • sleep(1);
  • vide_buffer($fp);
  • fputs($fp, "NICK ".$user."\r\n");
  • sleep(1);
  • while(fread($fp, 5)!="PING ");
  • $ping = trim(fread($fp, 11),"\r\n");
  • sleep(1);
  • fputs($fp, "PONG ".$ping."\r\n");
  • sleep(1);
  • fputs($fp, "USER ".$user." 0 0 :Elektordi's PHP Pooler\r\n");
  • sleep(3);
  • vide_buffer($fp);
  • fputs($fp, "NICK ".$nick."\r\n");
  • sleep(3);
  • while(fread($fp, 1)!="~");
  • vide_buffer($fp);
  • fputs($fp, "TOPIC ".$chan."\r\n");
  • sleep(1);
  • $data=fread($fp, 1024);
  • $p0 = strpos($data, "332");
  • if($p0===FALSE) cancel($fp,"Can't get topic !");
  • $p1 = strpos($data, ":",$p0);
  • $p2 = strpos($data, "\n",$p1);
  • $topic = rtrim(substr($data,$p1+1,$p2-$p1),"\r");
  • $topic0 = $topic;
  • $p1 = strpos($topic, "J-");
  • if($p1===FALSE) cancel($fp,"No 'J-' in topic !");
  • $p2 = strpos($topic, " ", $p1);
  • // compte à rebours
  • $le_jour = date("j");
  • $le_mois = date("n");
  • $l_annee = date("Y");
  • $duree_restante=round((mktime(0, 0, 0, $le_mois, $le_jour, $l_annee)-mktime(0, 0, 0, $mois, $jour, $annee))/(24*60*60));
  • if ($duree_restante<)
  • {
  • $decompte_affiche = "J".$duree_restante;
  • }
  • else $decompte_affiche = "* Jour J *";
  • // affichage du compte à rebours
  • $topic = substr_replace($topic,$decompte_affiche,$p1,$p2-$p1);
  • if($topic==$topic0) cancel($fp,"Already up to date.");
  • sleep(1);
  • fputs($fp, "PRIVMSG Q@CServe.quakenet.org :AUTH ".$q_user." ".$q_pass."\r\n");
  • sleep(1);
  • fputs($fp, "JOIN ".$chan."\r\n");
  • sleep(1);
  • while(fread($fp, 2+strlen($nick))!="o ".$nick)
  • {
  • while(fread($fp, 1)!="+");
  • }
  • sleep(1);
  • fputs($fp, "TOPIC ".$chan." :".$topic."\r\n");
  • sleep(1);
  • fputs($fp, "QUIT :Cron Job Done\r\n");
  • echo "Topic changed to: ".$topic;
  • ?>
<?php

$user = "PhpPooler";
$nick = "gdz|GodzilanBot";
$chan = "#godzilan";

$q_user = "QuakenetUser";
$q_pass = "QuakenetPassword";

// Godzilan 3: 26 octobre 2007
$jour = 26;
$mois = 10;
$annee = 2007;

// FIN CONFIG

//euroserv.fr.quakenet.org:6667
// Timeout de 15s

if (!($fp = @fsockopen("euroserv.fr.quakenet.org", 6667, $errno, $errstr, 15)))
{
	die("Connect failed.");
}

function vide_buffer($s)
{
	$status["unread_bytes"] = 1;
	while($status["unread_bytes"])
	{
		fgetc($s);
		$status = socket_get_status($s);
	}

}

function cancel($s,$reason)
{
	fputs($s, "QUIT :Abort\r\n");
	sleep(1);
	die("Operation cancelled: ".$reason);
}

sleep(1);
vide_buffer($fp);
fputs($fp, "NICK ".$user."\r\n");
sleep(1);
while(fread($fp, 5)!="PING ");
$ping = trim(fread($fp, 11),"\r\n");
sleep(1);
fputs($fp, "PONG ".$ping."\r\n");
sleep(1);
fputs($fp, "USER ".$user." 0 0 :Elektordi's PHP Pooler\r\n");
sleep(3);
vide_buffer($fp);
fputs($fp, "NICK ".$nick."\r\n");
sleep(3);
while(fread($fp, 1)!="~");
vide_buffer($fp);
fputs($fp, "TOPIC ".$chan."\r\n");
sleep(1);
$data=fread($fp, 1024);
$p0 = strpos($data, "332");
if($p0===FALSE) cancel($fp,"Can't get topic !");

$p1 = strpos($data, ":",$p0);
$p2 = strpos($data, "\n",$p1);
$topic = rtrim(substr($data,$p1+1,$p2-$p1),"\r");

$topic0 = $topic;

$p1 = strpos($topic, "J-");
if($p1===FALSE) cancel($fp,"No 'J-' in topic !");

$p2 = strpos($topic, " ", $p1);

// compte à rebours
$le_jour = date("j");
$le_mois = date("n");
$l_annee = date("Y");
$duree_restante=round((mktime(0, 0, 0, $le_mois, $le_jour, $l_annee)-mktime(0, 0, 0, $mois, $jour, $annee))/(24*60*60));
if ($duree_restante<)
{
 $decompte_affiche = "J".$duree_restante;
}
else $decompte_affiche = "* Jour J *";

// affichage du compte à rebours

$topic = substr_replace($topic,$decompte_affiche,$p1,$p2-$p1);

if($topic==$topic0) cancel($fp,"Already up to date.");

sleep(1);
fputs($fp, "PRIVMSG Q@CServe.quakenet.org :AUTH ".$q_user." ".$q_pass."\r\n");
sleep(1);
fputs($fp, "JOIN ".$chan."\r\n");
sleep(1);
while(fread($fp, 2+strlen($nick))!="o ".$nick)
{
	while(fread($fp, 1)!="+");
}
sleep(1);
fputs($fp, "TOPIC ".$chan." :".$topic."\r\n");
sleep(1);
fputs($fp, "QUIT :Cron Job Done\r\n");

echo "Topic changed to: ".$topic;

?>

 Conclusion

Script codé en 2h chrono...
(Cela explique le protocole "bourrin")

Deux petits rappels avant que vous ne l'utilisiez:
- Très peu d'hébergeurs gratuits ouvrent le port 6667 (ou autre) en sortie !
- Par défaut, un script php arrète de s'éxécuter au bout de 30 secs !


 Historique

11 mars 2007 15:51:27 :
Oubli dans la description
12 mars 2007 18:48:04 :
Passage en entiers de la date, changement de la balise en <?php

 Sources du même auteur

Source avec une capture CONVERTISSEUR CODES COULEUR ET STYLE SH (TTY) EN HTML
Source avec Zip GESTION DE SERVICES WINDOWS ET D'ÉXÉCUTABLES DEPUIS UNE PAGE...
Source avec Zip GESTIONNAIRE D'IMAGES POUR INTERFACE D'ADMIN

 Sources de la même categorie

SONDAGE - VOTE - POLL (AVEC MYSQL) par hornet_bzz
Source avec Zip Source avec une capture CRAYONPRO EST UN CMS SIMPLE EN PHP ET MYSQL - INSTALLATION E... par crayoncie
Source avec Zip Source avec une capture LISTENGEN GÉNÉRATEUR DE FICHIER PLAYLIST par AGG
Source avec Zip IP CALCULATOR par X_Cli
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture BOT IRC POO par divx78
CALCUL SIMPLE DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES (JO... par Astemius
BOT IRC : GÉNÉRATEURS DE LOGS AU FORMAT MIRC par simonviei
Source avec Zip PHPBOT POUR IRC par V4mp

Commentaires et avis

Commentaire de coockiesch le 12/03/2007 10:54:36

Salut!
  Je te propose de zieuter: http://www.allpotes.ch/~rpg/faq.html#opti_guillemets qui te présentera les différences entre les guillemets simples ou doubles. De plus, lorsque tu travailles avec des entiers (lignes 11 à 13 par ex) tu devrais les laisser en entiers (calculs bcp plus rapides, ... ) plutot que de les passer en chaînes de caractères ( $var = '1' --> chanîne de caractère : $var = 1 --> entier ).

Sinon, tu devrais utiliser <?php plutôt que <? car ces derniers ne sont pas reconnus sur tous les serveurs... Voilà, :)

@++

R@f

Commentaire de Elektordi le 12/03/2007 18:45:24

Salut

Pour la diff entre " et ', merci je connais ;)

Sinon c'est vrai que pour les nombres, par ex au debut, je vais mettre des entiers. Mais certains (comme 62) doivent rester en texte.

Quand au <?php, c'est vrai que j'ai du mal à m'y habituer !

Merci,

Elektordi

Commentaire de coockiesch le 12/03/2007 19:13:52

Re!
Si tu connais, pk utiliser " " presque partout? :)

@++

R@f

Commentaire de Elektordi le 12/03/2007 19:23:38

Pour pouvoir écrire facilement des apostrophes !

Et pous les ".$var." ca date de quand j'utilisait des '...

Commentaire de coucou747 le 13/03/2007 07:35:58

pourquoi ne pas faire une classe IRC ? ou au moins des fonctions comme envoyerPRIVMSG, connectIRC, envoyerNOTICE, lireIRC ect...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compte à rebours... [ par The_magicien ] Bonjour &#224; tous! Je voudrais savoir si il &#233;tait possible d'effectuer un compte &#224; rebours en php (car je voudrais ins&#233;rer des variab Bonjour [ par r3frag ] Bonjour a tousOu pourrai je trouver ( ou quelqu'un a t il ce script ) un script en PHP de compte a rebours sur une periode de 24 H ? puis remise a zer Compte à rebours avec mysql [ par aurelie95 ] Bonjour à tous,Je sollicite votre aide pour mon projet, j'explique :Je veux que que quand ma page temps.php est chargé, il rentre la date complète dan Besoin d'aide, comparaison de temps [ par acidest ] Bonjour, pour mon jeu en ligne je souhaiterai créer une banque, tout es prêt sauf un petit truc :Dès que l'on dépose des ressources (jeu style OGame.. Compt à rebours quotidien [ par habroc ] Bonjour , Je galère depuis plusieurs jours ...Je cherche un script qui me permette de réaliser un compte à rebours en Heures , minutes , secondes jusq Compte à rebours sur image dynamique [ par Piouxel ] Je sais que ça fait complètement jacky ou mémère, mais je veux savoir comment ça marche. Donc pour en venir au sujet : comment faire ces petits compt preg_replace() sans prendre en compte des " " [ par Gally ] Bonjour, Pour un petit parser que je fais j'utilise preg_replace(), mais j'ai un petit problème. les mot ce colorise bien, meme ce entre " " et il ne Afficher les jours entre deux dates [ par Ricci ] Bonjour! J'ai trouve le script ci-dessous pour afficher les jours entre 2 dates. $nbjour=($date2-$date1)/60/60/24;//Nombre de jours entre les deux php [ par amasou ] bonjour je suis debutant en php je ne sais pas pourquoi ce code ça marche pas < logiciel ceffparc [ par denirosere ] je suis amateur et je souhaite utiliser ceffparc mais je n'arrive pas à me connecter avec le compte admin admin, j'ai crée un autre compte mais rien n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,359 sec (3)

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