사이트 내 전체검색
irc chat php 소스
로빈아빠
https://cmd.kr/server/595 URL이 복사되었습니다.

본문

Config.php
PHP Code:
<?php 
//The server host is the IP or DNS of the IRC server. 
$server_host "irc.smirl.com"; 
//Server Port, this is the port that the irc server is running on. Deafult: 6667 
$server_port 6667; 
//Server Chanel, After connecting to the IRC server this is the channel it will join. 
$server_chan "#smirl"; 
?>
Ok, now that thats out of the way, we are going to make the form that will allow the user to select a nickname to use on IRC, and connect and recive data from the irc server. 

Index.php
PHP Code:
<?php 
//First lets set the timeout limit to 0 so the page wont time out. 
set_time_limit(0); 
//Also inclue our config file 
include("Config.php"); 
//Second lets grab our data from our form. 
$nickname $_POST['nick']; 
//Now lets check to see if there is a nickname set. 
if(empty($nickname)) 
{ 
    
//Whoops we dont have a nickname set.  
    
echo "<form name=\"form1\" method=\"post\" action=\"index.php\">\n\r"; 
    echo 
"<p align=\"center\">Please Insert a Nickname.\n\r"; 
    echo 
"<input type=\"text\" name=\"nick\"> \n\r"; 
    echo 
"</p>\n\r"; 
    echo 
"<p align=\"center\">\n\r"; 
    echo 
"<input type=\"submit\" name=\"Submit\" value=\"Join IRC\">\n\r"; 
    echo 
"</p>\n\r"; 
    echo 
"</form>\n\r"; 
} 
else 
{ 
    
//Ok, We have a nickname, now lets connect. 
    
$server = array(); //we will use an array to store all the server data. 
    //Open the socket connection to the IRC server 
    
$server['SOCKET'] = @fsockopen($server_host$server_port$errno$errstr2); 
    if(
$server['SOCKET']) 
    { 
        
//Ok, we have connected to the server, now we have to send the login commands. 
        
SendCommand("PASS NOPASS\n\r"); //Sends the password not needed for most servers 
          
SendCommand("NICK $nickname\n\r"); //sends the nickname 
          
SendCommand("USER $nickname USING PHP IRC\n\r"); //sends the user must have 4 paramters 
        
while(!feof($server['SOCKET'])) //while we are connected to the server 
        
{ 
            
$server['READ_BUFFER'] = fgets($server['SOCKET'], 1024); //get a line of data from the server 
            
echo "[RECIVE] ".$server['READ_BUFFER']."<br>\n\r"//display the recived data from the server 
             
            /* 
            IRC Sends a "PING" command to the client which must be anwsered with a "PONG" 
            Or the client gets Disconnected 
            */ 
            //Now lets check to see if we have joined the server 
            
if(strpos($server['READ_BUFFER'], "422")) //422 is the message number of the MOTD for the server (The last thing displayed after a successful connection) 
            
{ 
                
//If we have joined the server 
                 
                
SendCommand("JOIN $server_chan\n\r"); //Join the chanel 
            
} 
            if(
substr($server['READ_BUFFER'], 06) == "PING :"//If the server has sent the ping command 
            
{ 
                
SendCommand("PONG :".substr($server['READ_BUFFER'], 6)."\n\r"); //Reply with pong 
                //As you can see i dont have it reply with just "PONG" 
                //It sends PONG and the data recived after the "PING" text on that recived line 
                //Reason being is some irc servers have a "No Spoof" feature that sends a key after the PING 
                //Command that must be replied with PONG and the same key sent. 
            
} 
            
flush(); //This flushes the output buffer forcing the text in the while loop to be displayed "On demand" 
        
} 
    } 
} 
function 
SendCommand ($cmd) 
{ 
    global 
$server//Extends our $server array to this function 
    
@fwrite($server['SOCKET'], $cmdstrlen($cmd)); //sends the command to the server 
    
echo "[SEND] $cmd <br>"//displays it on the screen 
} 
?>
and here is an example of a successful connection.

Quote:
[SEND] PASS NOPASS
[SEND] NICK xanderman1
[SEND] USER xanderman1 USING PHP IRC
[RECIVE] :irc.smirl.com NOTICE AUTH :*** Found your hostname (cached)
[RECIVE] :irc.smirl.com 001 xanderman1 :Welcome to the SMiRLnet IRC Network xanderman1!xanderman1@15.138-62-69.ftth.swbr.surewest.net
[RECIVE] :irc.smirl.com 002 xanderman1 :Your host is irc.smirl.com, running version Unreal3.2.4
[RECIVE] :irc.smirl.com 003 xanderman1 :This server was created Thu May 18 2006 at 20:18:46 EDT
[RECIVE] :irc.smirl.com 004 xanderman1 irc.smirl.com Unreal3.2.4 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeIKVfMCuzNTGj
[RECIVE] :irc.smirl.com 005 xanderman1 SAFELIST HCN MAXCHANNELS=20 CHANLIMIT=#:20 MAXLIST=b:60,e:60,I:60 NICKLEN=30 CHANNELLEN=32 TOPICLEN=307 KICKLEN=307 AWAYLEN=307 MAXTARGETS=20 WALLCHOPS WATCH=128 :are supported by this server
[RECIVE] :irc.smirl.com 005 xanderman1 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(ohv)@%+ CHANMODES=beIqa,kfL,lj,psmntirRcOAQKVCuzNSMTG NETWORK=SMiRLnet CASEMAPPING=ascii EXTBAN=~,cqnr ELIST=MNUCT STATUSMSG=@%+ EXCEPTS INVEX CMDS=KNOCK,MAP,DCCALLOW,USERIP :are supported by this server
[RECIVE] :irc.smirl.com 251 xanderman1 :There are 1 users and 5 invisible on 1 servers
[RECIVE] :irc.smirl.com 253 xanderman1 1 :unknown connection(s)
[RECIVE] :irc.smirl.com 254 xanderman1 3 :channels formed
[RECIVE] :irc.smirl.com 255 xanderman1 :I have 6 clients and 0 servers
[RECIVE] :irc.smirl.com 265 xanderman1 :Current Local Users: 6 Max: 32
[RECIVE] :irc.smirl.com 266 xanderman1 :Current Global Users: 6 Max: 6
[RECIVE] :irc.smirl.com 422 xanderman1 :MOTD File is missing
[SEND] JOIN #smirl
[RECIVE] :xanderman1 MODE xanderman1 :+iwx
[RECIVE] :xanderman1!xanderman1@SMiRLnet-126BAC88.ftth.swbr.surewest.net JOIN :#smirl
[RECIVE] :irc.smirl.com 353 xanderman1 = #smirl :xanderman1 +UnstableOne +LISTEN +Chapstick5 @SMiRL
[RECIVE] :irc.smirl.com 366 xanderman1 #smirl :End of /NAMES list.
[RECIVE] :SMiRL!smirlgirl@D4A43FB.5DFBF1FB.E4527667.IP MODE #smirl +v xanderman1
[RECIVE] :UnstableOne!UnstableOn@SMiRLnet-126BAC88.ftth.swbr.surewest.net QUIT :Client exited
[RECIVE]
[RECIVE] PING :irc.smirl.com
[SEND] PONG :irc.smirl.com
[RECIVE] :xanderman!xandercage@5D186102.CA943BF.90E5F2F5.IP JOIN :#smirl
[RECIVE] :SMiRL!smirlgirl@D4A43FB.5DFBF1FB.E4527667.IP MODE #smirl +v xanderman
[RECIVE] :xanderman!xandercage@5D186102.CA943BF.90E5F2F5.IP PRIVMSG #smirl :Hello xanderman1
There are many ways you can parse the recived lines too, you can have alot of fun with this and make a realy nice client with this, this is our version.

http://smirl.com/chat/

Well if you have any questions feel free to reply.

As i said earyler if people find intrest in this i will make addons for this tutorial such as recive parsing and the ability to send messages as well as send them. 

댓글목록

등록된 댓글이 없습니다.

1,139 (6/23P)

Search

Copyright © Cmd 명령어 13.59.134.65