Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 PHP Chat c IRC!!!
  1. Въведение
  2. Клас за връзка
Magenta
     
Автор  Magenta (09.05.2004 23:09)  съобщение до автора
Погледнат  3161 пъти  добави към любими
Оценка  добави коментар
Гласове  5  изпрати на приятел
Коментари  (1)  абонирай се за PHP
    Страница 1 / 2

 



Понеже в последно време зачестиха въпросите за Internet Relay Chat c PHP, реших да напиша един урок, който да ви покаже основните неща.

За свързването и парсването се използва клас.

Като за начало ни трябва връзка със сървъра .За да създадеме такава трябва да декларираме някои неща предварително.Сте декларираме един метод,който сте бъде конструктор, където ще придаваме Host, Nick-а и опционално Port-а. Пример за това ще намерите на края на урока.

CODE
1
2
3
4
5
6
7
8
9
10
11
<?php
function Irc
( $RemoteHost, $Nick, $Port = 6667 )
  {
   
set_time_limit(0);
   
ob_end_flush();
   
$this->RemoteHost = $RemoteHost;
   
$this->Nick = $Nick;
   
$this->Port = $Port;
   
$this->Connect();
 
}
?>


Важното е, че не ограничаваме времето в скрипта.Освен това изпразваме Buffer-а ,което е много важно. На края на конструктора извикваме метода connect() , с което сигнализираме на скрипта ,че вече имаме необходимата информация за старт.След което правиме Socket-връзката с fsockopen().

CODE
1
2
3
4
5
6
7
8
9
10
11
<?php
function Connect
()
  {
    
$this->ircsocket = fsockopen ($this->remotehost, $this->remoteport) ;
       
if (! $this->ircsocket) {
           
die ("Error connecting to host.");
       
}
        
fputs ($this->ircsocket, "USER ".$this->Nick." 66.119.161.165 irc.tooltime.net :Nice Guyrn");
       
fputs ($this->ircsocket, "NICK ".$this->Nick."rn");
 
}
?>

За да се регистрираме към сървъра сте трябва да  пратиме още някоя информация,като nick и описание на потребителя (опционално).

След като сме направили връзката чрез fsockopen(), можем съвсем лесно через fputs() да пишеме съобщения в Socket-а.

След като сме се регистрирали успешно на сървъра, трябва обаче, информацията ,която идва от сървъра ,по някакъв начин да кодираме, за да бъде тя съвместима с IRC PROTOKOL. Обаче ,за да можем да работим с информацията ,сте използваме PHP String функции за разчитане на стринга.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function Parse
()
{
   
while (!feof($this->ircsocket))
    {
     
$incoming = fgets ($this->ircsocket, 1024);
       
$incoming = str_replace( "r", "", $incoming);
       
$incoming = str_replace("n", "", $incoming);
     
if (substr($incoming, 0, 1) == ":") {
           
$prefix = substr ($incoming, 0, strpos($incoming, ' '));
           
$incoming = substr ($incoming, strpos($incoming, ' ') + 1);
          
} else {
                   
$prefix = "";
               
}
       
$command = substr ($incoming, 0, strpos($incoming, ' '));
       
$incoming = substr ($incoming, strpos($incoming, ' ') + 1);
       
$params = explode (" ", $incoming);
       
if ($command == "PING") fputs($this->ircsocket, "PONG $incomingrn");
     
     
}
       
fputs($this->ircsocket, "QUIT Unexpectedrn");

}
?>


Вече имаме връзка със сървъра и можем да реагираме на съобщенията. Които желае може да допълни скрипта със собствени методи.

Следният пример ви показва как да изпращате съобщение на потребител в IRC. Щте са необходими следните методи:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function SocketWrite
($Message)
  {
   
fputs ($this->ircsocket, $Nachricht."rn");
 
}


 
function MsgSend($Target, $Text)
  {
   
$this->SocketWrite("PRIVMSG ".$Target." :".$Text);
 
}
?>



  Следваща страница >> 


Ключови думи: php chat irc internet relay chat


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

еми е сега го пробжах това ама нещо не работи.
Дава ми тази грешка -->
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /.../irc/chat.php on line 21

Warning: fsockopen() [function.fsockopen]: unable to connect to :0 (Unknown error) in /.../irc/chat.php on line 21
Error connecting to host.
сървара го написах с името му и след това с айпи и пак не стана

  dasa на 01.05.2006 19:17

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008