Kod ceviz.net ten alınmış, tarafımca düzenlenmiştir. (Kodun sahibi HunteR, Ertugrul Yıldırımdır.)
ilk başta baglanti.php'yi vereyim.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
class CN_RssParser
{
# Genel Tanýmlamalar
var $insideitem = false; // Alt Oge Varmý?
var $tag; // Etýket Adý
var $title; // Oge Baslýgý
var $link; // Oge Linki
var $aticdate; // Oge Tarihi
var $author; // Oge Yazarý
# Baglantý
var $result = array();
var $parser;
# Sýnýf Cagrýldýgýnda Calýsacak Method
function CN_RssParser()
{
$this->parser = xml_parser_create();
xml_set_object($this->parser,&$this);
xml_set_element_handler($this->parser,"StartElement","EndElement");
xml_set_character_data_handler($this->parser,"CharacterData");
}
# Datayý Yorumlar ve Sonucu Dondurur
function Parse($data,$feof)
{
# Datayý Yorumla
xml_parse($this->parser, $data, $feof);
# Sonucu Dondur
return $this->result;
}
# Yený Bý Etýket ýle Karsýlastýgýnda
function StartElement($parser, $tagname, $attrs)
{
# Eger Alt Ogelere Gecýldýyse (title,link, vs..)
if ($this->insideitem)
{
$this->tag = $tagname;
}
# Yený Ogeye Gecýldýyse (item), Alt Ogeye Gec (title,link, vs..)
elseif ($tagname == "ITEM")
{
$this->insideitem = true;
}
return;
}
# Etýketýn Sonuna Geldýgýnde
function EndElement($parser, $tagname)
{
if ($tagname == "ITEM")
{
# Sonucu Olustur
$result .= trim($this->title)."\n".trim($this->link)."\n";
if($this->author and $this->articdate)
$result .= trim($this->author)." ".trim($this->articdate)."\n";
$result .= "\n ";
# Degerlerý Sýfýrla
$this->title = "";
$this->link = "";
$this->articdate = "";
$this->author = "";
$this->insideitem = false;
# Olusan sonucu $result dýzýsýne yený býr eleman olarak at
$this->result[] = $result;
}
return;
}
# Etýketýn Icerýgýný Yorumlamak Icýn
function CharacterData($parser, $data)
{
# Eger Alt Ogeye Gecýldýyse
if ($this->insideitem)
{
# Alt Oge Adýna Gore Degerlý Ata
switch ($this->tag)
{
case "TITLE": $this->title .= $data; break;
case "LINK": $this->link .= $data; break;
case "ARTICDATE": $this->articdate .= $data; break;
case "YAZAR": $this->author .= $data; break;
}
}
return;
}
# Islemý Tamam.. Bellegý Bosalt
function Close()
{
xml_parser_free($this->parser);
return;
}
}
?>
sonra da php kodumuzu;
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
include("baglanti.php");
class PHPbot
{
var $localhost;
var $host;
var $port;
var $timeout;
var $kanal;
var $nick;
var $closecode;
var $logfile;
var $server;
var $log;
function PHPbot()
{
define(n, "\n");
$this -> localhost = 'adsluser-2866.adsl.ttnet.net.tr';
$this -> host = 'irc.hebele.com'; //*Sunucu Adresiniz.
$this -> port = 6667;
$this -> timeout = 0;
$this -> kanal = 'kanal adi'; //*Botun girecegi kanal "#" karakterini kullanmayin.
$this -> nick = 'PHPBot';
$this -> closecode = 'kapanma sifresi';
$this -> logfile = 'log.txt';
}
function Connect()
{
set_time_limit ($this->timeout);
$this -> server = fsockopen ($this -> host, $this -> port, $hatano, $hatastr, $this -> timeout) or
die('Sunucuya Baðlanamadý');
$this -> log = fopen ($this -> logfile, 'w+') or
die('Dosya Yaratýlamadý');
fputs($this->server, 'NICK '.$this->nick.n);
fputs($this->server, 'USER '.$this->nick.' '.$this->localhost.' '.$this->remotehost.' :'.$this->nick.n);
fputs($this->server, 'JOIN #'.$this->channel.n);
fputs($this->server, 'PRIVMSG #'.$this->channel.' :Phpbot aktiftir.'.n);
return;
}
function Disconnect()
{
fclose($this->server);
fclose($this->log);
exit;
return;
}
function PrivMsg($nick,$cmd,$arg)
{
if($cmd[1] == '#'.$this->channel)
fputs($this->log, '<'.date("H:i").' '.$nick.'> '.$arg.n);
if(preg_match("'\!(.*?)'U",$arg,$set))
{
switch($set[1])
{
case $this->closecode: $this->Disconnect(); break; // Kapan (Calýsmayý Durdur)
}
}
return;
}
function Run()
{
$this->Connect();
while (!feof($this->server))
{
$data = fgets ($this->server,1024);
if(preg_match("'PING(.*?)'si", $data, $set))
fputs($this->server,'PONG '.trim($set[1]).n);
if(preg_match("':(.*?)!([^\s]*?)\s(.*?)\s:(.*?)'U", $data, $set))
{
$nick = trim($set[1]);
$host = trim($set[2]);
$cmd = explode(" ",trim($set[3]));
$arg = trim($set[4]);
switch($cmd[0])
{
case "PRIVMSG": $this->PrivMsg($nick,$cmd,$arg); break; // Mesaj Gonderýldýgýnde
case "PART": break; // Tamamlanmadý..
case "JOIN": break; // Tamamlanmadý..
case "NICK": break; // Tamamlanmadý..
case "QUIT": break; // Tamamlanmadý..
}
}
}
}
}
$PHPbot = new PHPbot();
$PHPbot->Run();
?>