anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 19:51

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di 21 Mär, 2006 11:25 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
Ich suche einen Hack, keine Ahnung, ob hier wer so etwas schreiben kann, oder ob es so etwas schon gibt. Bei meiner Suche durchs Inet bin ich nicht fündig geworden..

und zwar geht es um folgendes.. Ich betreibe auf meine Homepage einen gtchat 0.95 Chat, welcher in Perl geschrieben ist. In Logd, habe ich den Chat zwar als OOC-Chat verlinkt, doch ist es leider so, dass viele Bewohner nicht hingehen, weil sie oft lange da allein sitzen, oder eben nicht wissen, dass einer da on ist..

ich habe in vielen logds (die einen anderen OOC-Chat nutzen) schon gesehen, dass sie in der Anzeige in Logd bei Chat einen Zusatz haben (1) online oder (0) online..


ich hätte diese Anzeige nun auch sehr gern in meinem Dorf, damit der OOC-Chat ein wenig mehr genutzt werden würde.


kann mir da vielleicht wer aushelfen oder besteht diese Möglichkeit der Verbindung von Perl/PhP gar nicht??


lg Rikka

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 22 Mär, 2006 17:00 
Offline
Lehrling
Lehrling

Registriert: Do 02 Feb, 2006 23:16
Beiträge: 26
LoGD: http://atrahor.de
Kommt wohl drauf an, wo und wie deine Chat-Applikation die eingeloggten User abspeichert. Auf den 1. Blick sieht es so aus, als würden die Userdaten in einem von dir bestimmten Verzeichnis in Form mehrerer Dateien abgelegt - für jeden User eine.
Wo dieses Verzeichnis ist, weiß ich nicht; so lange PHP die nötigen Berechtigungen hat, um drauf zuzugreifen, sollte die Ermittlung des Online-Status allerdings kein Problem darstellen ; )
Verzeichnis öffnen, Dateien zählen, Ergebnis am besten cachen, damit nicht bei jedem Seitenabruf Diskoperationen nötig sind und dann entsprechend ausgeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 25 Mär, 2006 06:33 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
hm ich hab leider von Perl 0 Ahnung ;/

diese Datei hier beinhaltet die onlineuser..
$this->bbcode_second_pass_code('', '###################################################################
# GTChat 0.95 Alpha Plugin #
# Written for release 20021225 #
# Author: Wladimir Palant #
# #
# This plugin provides the template variables that are necessary #
# to show the rooms, online users or both. #
###################################################################

package GTChat::Plugins::Roomlist::095_02;
use strict;

@GTChat::Plugins::Rooms_enum::095_01::ISA = ('GTChat::Enum');
@GTChat::Plugins::Onlineusers_enum::095_01::ISA = ('GTChat::Enum');
@GTChat::Plugins::Rooms_Onlineusers_enum::095_01::ISA = ('GTChat::Enum');

bless({
template_var_handlers => {
'roomlist' => \&handler,
'roomlist_count' => \&handler,
'onlineusers' => \&handler,
'onlineusers_count' => \&handler,
'roomlist&onlineusers' => \&handler,
},
});

sub handler
{
my($self,$main,$var) = @_;

if ($var =~ /roomlist/)
{
my $rooms = $main->getAllRooms || [];

$main->{template_vars}{roomlist} = GTChat::Plugins::Rooms_enum::095_01::new($main,$rooms);
$main->{template_vars}{roomlist_count} = $#$rooms+1;
}

if ($var =~ /onlineusers/)
{
my @users = sort {
my @a1 = split(/\|/,$a);
my @a2 = split(/\|/,$b);
$main->lowercase($a1[3]) cmp $main->lowercase($a2[3]) or $main->lowercase($a1[2]) cmp $main->lowercase($a2[2]);
} @{$main->getOnlineUsers || []};

$main->{template_vars}{onlineusers} = GTChat::Plugins::Onlineusers_enum::095_01::new($main,\@users);
$main->{template_vars}{onlineusers_count} = $#users+1;
}

if ($var =~ /onlineusers/ && $var =~ /roomlist/)
{
$main->{template_vars}{'roomlist&onlineusers'} = GTChat::Plugins::Rooms_Onlineusers_enum::095_01::new($main);
}
}

package GTChat::Plugins::Rooms_enum::095_01;

sub new
{
my($main,$list) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

return bless({
list => $list,
opened => 0,
main => $main,
index => -1,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{index} = -1;
$self->{room} = undef;
while ($self->{index} < $#{$self->{list}})
{
$self->{index}++;
my $room = $self->{main}->loadRoom($self->{list}[$self->{index}]);
if ($self->{main}->isRoomPermitted($room))
{
$self->{room} = $room;
last;
}
}

$self->{opened} = 1;
}

sub hasNext
{
my $self=shift;
return $self->{opened} && defined($self->{room});
}

sub next
{
my $self=shift;

return undef unless $self->{opened};

my $ret = $self->{room};
$self->{room} = undef;
while ($self->{index} < $#{$self->{list}})
{
$self->{index}++;
my $room = $self->{main}->loadRoom($self->{list}[$self->{index}]);
if ($self->{main}->isRoomPermitted($room))
{
$self->{room} = $room;
last;
}
}

return $ret;
}

sub close
{
my $self=shift;

$self->{opened}=0;
}

package GTChat::Plugins::Onlineusers_enum::095_01;

sub new
{
my($main,$list) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

return bless({
list => $list,
opened => 0,
main => $main,
index => -1,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{index} = -1 unless exists($self->{stopindex});
$self->{opened} = 1;
}

sub hasNext
{
my $self=shift;
return ($self->{opened} && $self->{index} < $#{$self->{list}} && (!exists($self->{stopindex}) || $self->{index} < $self->{stopindex}));
}

sub next
{
my $self=shift;

return undef unless $self->{opened};

$self->{index}++;
my $ret = $self->{main}->translateOnlineString($self->{list}[$self->{index}]);
$ret->{vip} = 1 if defined($self->{vips}) && grep {$_ eq $ret->{name}} split(/\s/,$self->{vips});
return $ret;
}

sub close
{
my $self=shift;

$self->{opened}=0;
}

sub setRoom
{
my($self,$room,$vips) = @_;

if (defined($room))
{
$self->{vips} = $vips;

while ($self->{index}<$#{$self->{list}} && ((split(/\|/,$self->{list}[$self->{index}+1]))[3] cmp $room) < 0)
{
$self->{index}++;
}

$self->{stopindex} = $self->{index};
while ($self->{stopindex}<$#{$self->{list}} && (split(/\|/,$self->{list}[$self->{stopindex}+1]))[3] eq $room)
{
$self->{stopindex}++;
}
return ($self->{stopindex}-$self->{index});
}
else
{
delete $self->{stopindex};
delete $self->{vips};
$self->{index}=-1;
}
}

package GTChat::Plugins::Rooms_Onlineusers_enum::095_01;
use strict;
use vars qw(@ISA);

sub new
{
my($main) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

my $rooms = $main->{template_vars}{roomlist};
my $users = $main->{template_vars}{onlineusers};
return undef if (!defined($rooms) || !defined($users));

return bless({
rooms => $rooms,
users => $users,
opened => 0,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{rooms}->open;
$self->{opened}=1;
}

sub hasNext
{
my $self=shift;
if ($self->{opened} && $self->{rooms}->hasNext)
{
return 1;
}
else
{
$self->{users}->setRoom;
return 0;
}
}

sub next
{
my $self=shift;

my $ret = $self->{rooms}->next;
if (defined($ret))
{
$ret->{onlineusers} = $self->{users};
$ret->{onlineusers_count} = $self->{users}->setRoom($ret->{name_lc}, $ret->{moderated} ? $ret->{vips} : undef);
}
return $ret;
}

sub close
{
my $self=shift;

$self->{users}->setRoom;
$self->{rooms}->close;
$self->{opened}=0;
}')


nur wie ich hieraus jetzt ne Function bauen soll, die mir in php den Wert auswirft, das übersteigt mein Können um einiges ;) aber vielleicht hat einer von Euch ne Idee? *hoff*

lg

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Apr, 2006 06:07 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
so ich nochmal *schmunzel* dies lässt mir ja nun keine Ruhe, und ich such täglich stundenlang das Netz ab ;)

ich habe folgendes gefunden:

$this->bbcode_second_pass_code('', 'Text-Anzeige für die Zahl der Online-Benutzer, GTChat ab Version 0.93

Dieses Programm gibt die Zahl der Benuter im Chat aus. Der Text
kann per JavaScript in eine beliebige Seite eingebunden werden,
auch auf einem anderen Server.

Benutzung:
=============
Kopieren Sie counter.pl in das Verzeichnis, wo Sie das Programm
chat.pl haben. Setzen Sie mit Ihrem FTP-Programm die Zugriffsrechte
von counter.pl auf ausführbar für alle (CHMOD 755).

Folgender Code wird dann auf der Seite durch die Zahl der
Benutzer ersetzt, die gerade im Chat sind (die richtige
URL von counter.pl muß natürlich eingesetzt werden):

<script language="JavaScript" src="http://dai-clan.de/cgi-bin/daichat/counter.pl" type="text/javascript"></script>

Zu beachten: Das funktioniert nur, wenn der Benutzer JavaScript
in seinem Browser aktiviert hat! Ansonsten wird der Code einfach
ignoriert.


')

natürlich hoffe ich das dies etwas ist, was zu meiner Problemlösung beitragen kann.. nur wie bekomme ich das jetzt in meine common.php xD

ich hätte ja halt gern unter dem Auswurf OOC Chat, der in der common.php ist die Zahl, die das o.g. auswirft und java überfordert nunmal meine sämtlichen Kenntnisse *gg*

:

$this->bbcode_second_pass_code('', 'if ($session[user][acctid]>0) {
$header=str_replace("{mail}",maillink(),$header);
$footer=str_replace("{mail}",maillink(),$footer);
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$footer);
}else{
$header=str_replace("{mail}","",$header);
$footer=str_replace("{mail}","",$footer);
$header=str_replace("{chat}","",$header);
$footer=str_replace("{chat}","",$footer);
}')


Aber ich hoffe ja auf Euch^^


lg Rikka

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Apr, 2006 07:31 
Offline
Eingeweihter
Eingeweihter

Registriert: Di 10 Mai, 2005 10:21
Beiträge: 89
so pauschal würde ich mal sagen die counter.pl nach anleitung einfügen und rechte setzen und den scriptteil einfach so einfügen:

[php]
//suche in der common
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$footer)

//ersetzen mit
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a><script language=\"JavaScript\" src=\"http://dai-clan.de/cgi-bin/daichat/counter.pl\" type=\"text/javascript\"></script>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a><script language=\"JavaScript\" src=\"http://dai-clan.de/cgi-bin/daichat/counter.pl\" type=\"text/javascript"></script>\",$footer)

//ist ungetestet und pauschal[/php]

so müßte die zahl eigentlich hinter dem chat stehen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 03 Apr, 2006 08:32 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
hm danke.. das war ziemlich auch meine erste idee, aber er zeigt nix an dann

-.-

lg

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum