irc chat php 소스
로빈아빠
본문
Config.php
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
and here is an example of a successful connection.
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.
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";
?>
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, $errstr, 2);
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'], 0, 6) == "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'], $cmd, strlen($cmd)); //sends the command to the server
echo "[SEND] $cmd <br>"; //displays it on the screen
}
?>
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 |
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.
관련링크
댓글목록
등록된 댓글이 없습니다.