Produkt: Online-Benutzeranzeige in PHP
Version: 1.0
Editor: Matzelix
Entwickler: Matzelix
Entwicklungsjahr: 2006
Benötigte Ressourcen: -
Alternative Ressourcen: -
Screen Shots: -
Beschreibung:
Ich habe vor längerer Zeit mal ein php-script geschrieben, mit dem man die Zahl der registrierten Benutzer, die Zahl der Online-Benutzer und die Namen der Benutzer nach Räumen aufgeteilt darstellen kann, ohne dabei die chat.pl und die template Engine zu benutzen. Dadurch kann man die Zahl der gestartenen Prozesse der chat.pl verringern, besonders dann, wenn man viele externe Anzeigen über den Chat auf seiner Website eingebaut hat. Es kann also die Belastung des Servers verringern, wenn man eine gut besuchte Website hat mit eingebauter Chat-Online-Anzeige.
ZitatAlles anzeigen<?php
function lese_dateien($path)
{
$result = array();
$handle = opendir($path);
if ($handle)
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (strstr ( $file, '.user' ) )
{
$name = $path . "/" . $file;
$result[] = $name;
}
}
}
}
closedir($handle);
return $result;
}
function lese_raeume($path)
{
$result = array();
$handle = opendir($path);
if ($handle)
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (strstr ( $file, '.dat' ) )
{
$name = $path . "/" . $file;
$result[] = $name;
}
}
}
}
closedir($handle);
return $result;
}
$memberlistfile = file ('/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Members/memberlist.txt');
$membercount = count ($memberlistfile);
echo "<b>" . $membercount . "</b> registrierte Benutzer<br />\n";
$onlineusers = lese_dateien("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Online");
$onlineusercount = count($onlineusers);
$rooms = lese_raeume("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Rooms");
$roomprivate = array();
$roomname = array();
foreach($rooms as $value)
{
$roomfile = file ( $value );
$roomfile = str_replace(chr(10), '', $roomfile);
$roomkey = strtolower($roomfile[0]);
$roomprivate[$roomkey] = $roomfile[2];
$roomname[$roomkey] = $roomfile[0];
}
echo "<b>" . $onlineusercount . "</b> Benutzer online<br />\n";
echo "<br />";
echo "Wer ist wo im Chat:<br />\n";
echo "<hr />";
if ($onlineusercount == 0)
echo "kein Benutzer online<br />\n";
$roomusercount = array ();
$roomusers = array();
foreach($onlineusers as $value)
{
$onlinefile = file ( $value );
$onlinedata = $onlinefile[0];
$a = explode ("|", $onlinedata );
$roomusercount[$a[3]]++;
$roomusers[$a[3]][$a[2]] = $a[2];
}
$roomcount = count($roomusercount);
natcasesort ($roomusers);
$nonprivatusers = false;
foreach($roomusers as $users)
{
$raum = key($roomusers);
if (!$roomprivate[$raum])
{
$nonprivatusers = true;
echo "<b>" . $roomname[$raum] . ":</b>(" . $roomusercount[$raum] . "/". $onlineusercount . ") <br />\n";
next($roomusers);
natcasesort ($users);
foreach ($users as $benutzer)
{
echo $benutzer . "<br />\n";
}
}
}
if (!$nonprivatusers and $onlineusercount != 0)
echo "Keine Benutzer in den <br />öffentlichen Räumen...<br />\n";
echo "<hr />";
?>
Dieses Script benutze ich jetzt schon mehr als ein halbes Jahr und hatte eigentlich keine Probleme damit. Im Prinzip müsst ihr nur die folgenden Pfade im Programmtext anpassen:
Zitat$memberlistfile = file ('/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Members/memberlist.txt');
$onlineusers = lese_dateien("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Online");
$rooms = lese_raeume("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Rooms");
Die Einbindung könnte, wenn man das o.g. Script als "chatinfo.php" den Webspace lädt, wie folgt aussehen:
Zitat<?php include('gtchat96/chatinfo.php'); ?>
Eine Variante des o.g. Script für die Einbindung mit javascript könnte so aussehen:
ZitatAlles anzeigen<?php
function lese_dateien($path)
{
$result = array();
$handle = opendir($path);
if ($handle)
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (strstr ( $file, '.user' ) )
{
$name = $path . "/" . $file;
$result[] = $name;
}
}
}
}
closedir($handle);
return $result;
}
function lese_raeume($path)
{
$result = array();
$handle = opendir($path);
if ($handle)
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (strstr ( $file, '.dat' ) )
{
$name = $path . "/" . $file;
$result[] = $name;
}
}
}
}
closedir($handle);
return $result;
}
$memberlistfile = file ('/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Members/memberlist.txt');
$membercount = count ($memberlistfile);
echo 'document.write("<b>' . $membercount . '</b> registrierte Benutzer<br>");' . "\n";
$onlineusers = lese_dateien("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Online");
$onlineusercount = count($onlineusers);
$rooms = lese_raeume("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Rooms");
$roomprivate = array();
$roomname = array();
foreach($rooms as $value)
{
$roomfile = file ( $value );
$roomfile = str_replace(chr(10), '', $roomfile);
$roomkey = strtolower($roomfile[0]);
$roomprivate[$roomkey] = $roomfile[2];
$roomname[$roomkey] = $roomfile[0];
}
echo 'document.write("<b>' . $onlineusercount . '</b> Benutzer online<br><br>Wer ist wo im Chat:<br><hr>");' . "\n";
if ($onlineusercount == 0)
echo 'document.write("kein Benutzer online<br>");' . "\n";
$roomusercount = array ();
$roomusers = array();
foreach($onlineusers as $value)
{
$onlinefile = file ( $value );
$onlinedata = $onlinefile[0];
$a = explode ("|", $onlinedata );
$roomusercount[$a[3]]++;
$roomusers[$a[3]][$a[2]] = $a[2];
}
$roomcount = count($roomusercount);
natcasesort ($roomusers);
$nonprivatusers = false;
foreach($roomusers as $users)
{
$raum = key($roomusers);
if (!$roomprivate[$raum])
{
$nonprivatusers = true;
echo 'document.write("<b>' . $roomname[$raum] . ':</b>(' . $roomusercount[$raum] . '/'. $onlineusercount . ') <br>");' . "\n";
next($roomusers);
natcasesort ($users);
foreach ($users as $benutzer)
{
echo 'document.write("' . $benutzer . '<br>");' . "\n";
}
}
}
if (!$nonprivatusers and $onlineusercount != 0)
echo 'document.write("Keine Benutzer in den <br>öffentlichen Räumen...<br>");' . "\n";
echo 'document.write("<hr>");'. "\n";
?>
Auch hier müssen die folgenden Zeilen an den eigenen Server / Webspace angepasst werden:
Zitat$memberlistfile = file ('/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Members/memberlist.txt');
$onlineusers = lese_dateien("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Online");
$rooms = lese_raeume("/srv/www/htdocs/web1/html/cgi-bin/gtchat96/Rooms");
Wenn man das o.g. Script z.b. als "chatinfo_js.php" in den www Ordner des GTChats auf den Webspace lädt, dann kann man die Anzeige z.B. auf die folgende Weise einbinden:
Zitat<script language="JavaScript" src="http://deine-domain.tld/gtchat96/chatinfo_js.php" type="text/javascript"></script>
----------------------------
Viel Spaß damit wünscht das GTChat-Developer.com - Team!
Dateien
-
blank.txt
62 Byte (127 Downloads)