<?
/**
* Chat PHP
*
* Thiss Class in a example of a Server create using class pserver
*
* @package pserver
* @subpackage pserver.example
* @author Pedro Vargas ([email protected]) http://deerme.org
* @version 0.2
* @licence GNU Free Documentation License (FDL)
*/
require('pserver.class.php');
class chat extends pserver
{
//Deactivate the automatic writing
var $auto_write = false;
/**
* Function responsible for managing the customer in read
* In this example reads and writes in an array
*/
function read($client)
{
// Read Data
$this->data[ $client['n'] ] = trim(@socket_read($client['socket'], $this->bufferin, ( $this->socketbinary ? PHP_BINARY_READ : PHP_NORMAL_READ ) ));
if ( $this->data[ $client['n'] ] != "" )
{
if ( $this->data[ $client['n'] ] == ":clock" )
{
$this->write( $client , $this->_colorshell(33,"[SERVER] says : ").$this->_colorshell(37, date("Y-m-d H:i:s") )."\n\r" );
}
elseif( $this->data[ $client['n'] ] == ":w" )
{
$this->write( $client , $this->_colorshell(33,"[SERVER] says : ").$this->_colorshell(37, str_replace( array("\n") , array("\n\r") , print_r($this->clients,1) ) )."\n\r" );
}
elseif( $this->data[ $client['n'] ] == ":quit" )
{
$this->client_broadcast( $this->_colorshell(33,"[SERVER] says : ").$this->_colorshell(37, "Client ".$client["ip"]." disconnect at ".date("Y-m-d H:i:s")." " )."\n\r" );
$this->client_close( $client );
}
elseif( $this->data[ $client['n'] ] == ":clear" )
{
for( $i=0;$i<=100;$i++ )
{
$this->write( $client , $this->_colorshell(33,"[SERVER] says : ").$this->_colorshell(37, "Clear ... " )."\n\r" );
}
}
elseif( $this->data[ $client['n'] ] == ":funny" )
{
$xhtml = @file_get_contents("http://www.chistes.com/ChisteAlAzar.asp");
if ( preg_match('|\<div class\=\"chiste\"\>(.*?)\<\/div\>|is', $xhtml , $cap ) )
{
$this->client_broadcast( $this->_colorshell(33,"[SERVER] says : ").$this->_colorshell(37, utf8_decode(strip_tags($cap[1])) )."\n\r" );
}
}
else
{
foreach( $this->clients as $k => $v )
{
$this->write( $this->clients[$k] , $this->_colorshell(32,"[".$client["ip"]."] says : ").$this->_colorshell(37, $this->data[ $client['n'] ] )."\n\r" );
}
}
}
}
}
/*
This chat allows communication between all users connected, besides a couple of functions implemented in the chat (:w :quit :clock :funny)
*/
$server = new chat('0','6667');
$server->welcome_data = $server->_colorshell(32,"Welcome to the Chat \n\r").$server->_colorshell(37,'');
$server->start();
?>
|