• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Da steckt bestimmt PHP dahinter...

B

bigfraggle

Gast
Hallo zusammen,

nach langer Suche habe ich endlich ein Chat-Skript gefunden, dass meinen Bedürfnissen zu fast ;) 100% entspricht. Leider gibt es anscheinend keinen Support mehr... :B

Naja, was ich vorhabe ist sicherlich garnicht mal so schwierig. Nur ich als PHP-Noob komme dabei doch ein wenig ins Schwitzen:

Es geht um die Anzeige der aktuell im Chat befindlichen User, die ich gerne extern auf meiner Seite dargestellt haben möchte. Die Zahl wird auf der Startseite des Skripts schon ausgegeben, deshalb denke ich mal, dass das ganze PHP-mässig schon geschrieben ist.

Hat hier jemand eine Idee, wie ich am besten vorgehen sollte?

Hier gibts einen Demo-Chat:
http://www.widiker.de/widiker-chat/demo/index.php

Momentan online: lobby (x) etc.

Und dort geht es im grunde nur um die Zahl x.

Gruß und Danke im voraus
bigfraggle
 
wenn du die zugänge zur db hast könntest du das ganz einfach heruasfinden und dir per php-abfrage aus der db holen. Aber wenn du die nicht hast wirds schwer.
 
Welche "Chatart" verwendest du denn für dein Vorhaben? Bei einem auf dem IRC Protokoll basierenden Chat bräuchstest du eine Art Bot der bei Join/Part/Quits die aktuelle Anzahl der Chatter in eine DB oder Datei reinschreibt. Das wäre imo die einfachste Lösung ;) Bei Anderen Chatarten mußt du wohl auf Schnittstellen zurückgreifen die vielleicht existieren(?)
 
Wie gesagt, handelt es sich um ein Skript. Es läuft auf meinem Server und Zugriff zur DB habe ich natürlich auch.

Das Zählen der online User, macht das Skript ja bereits, wie man auf der Startseite (Link oben) sehen kann. Deswegen ist das imo wohl auch kein großer Programmieraufwand. Man muss denke ich mal nur wissen, an welcher Stelle man das Skript anzapfen muss. Und genau da haperts...
 
bigfraggle am 06.09.2004 15:32 schrieb:
Hallo zusammen,

nach langer Suche habe ich endlich ein Chat-Skript gefunden, dass meinen Bedürfnissen zu fast ;) 100% entspricht. Leider gibt es anscheinend keinen Support mehr... :B

Naja, was ich vorhabe ist sicherlich garnicht mal so schwierig. Nur ich als PHP-Noob komme dabei doch ein wenig ins Schwitzen:

Es geht um die Anzeige der aktuell im Chat befindlichen User, die ich gerne extern auf meiner Seite dargestellt haben möchte. Die Zahl wird auf der Startseite des Skripts schon ausgegeben, deshalb denke ich mal, dass das ganze PHP-mässig schon geschrieben ist.

Hat hier jemand eine Idee, wie ich am besten vorgehen sollte?

Hier gibts einen Demo-Chat:
http://www.widiker.de/widiker-chat/demo/index.php

Momentan online: lobby (x) etc.

Und dort geht es im grunde nur um die Zahl x.

Gruß und Danke im voraus
bigfraggle
Dafür müsste man wohl Zugriff auf den Quellcode haben. Wenn der Chat mit einer Datenbank arbeitet, wie unten ja angedeutet wird (soundosviele user in der datenbank), dann werden an einer Stelle garantiert die aktiven Sessions gespeichert. Diese Daten müsste man auswerten. Im Script steht natürlich auch irgendwo der entsprechende Befehl. Je nach dem, wie stark Layout und Script getrennt wurden, wäre diese Stelle also entsprechend leichter oder schwerer zu finden.
 
Poste doch mal den Quellcode.

Andere Möglichkeit. Da das script in PHP geschrieben ist kannst du mal deinen Quellcode selbst durchsehen. An der Stelle an der die zahl angezeigt wird muss ja irgendwie sowas stehen wie

<table width='100%' cellpadding='2' cellspacing='0' style='border:1pt #eeeeee solid'>
<tr><td style='background-color:#eeeeee'>
<b>lobby</b> (0)
</td></tr>
<tr><td>
keine User online
</td></tr>
</table>

Ich denke mal das da jetzt was ähnliches steht bei der 0 aber nicht so wie ich es gepostet habe sondern eher sowas in der art

<table width='100%' cellpadding='2' cellspacing='0' style='border:1pt #eeeeee solid'>
<tr><td style='background-color:#eeeeee'>
<b>lobby</b> (".$onlineuser[lobby].")
</td></tr>
<tr><td>
keine User online
</td></tr>
</table>

dann musst du noch finden wie onlineuser definiert wird und dementsprechen den querry zur db , die definition der variable und die variable selbst finden und übernehmen und auf deiner anderen Seite ausgeben.

Verstehst du ? :confused:
 
Hm, ich denke mal, dass das hier die entscheidende Stelle im Code ist:

function chat_online() {
global $_T_USERS,$v;
$ergebnis=mysql_query("SELECT COUNT(DISTINCT nick) FROM $_T_USERS WHERE chat_raum>'0'",$v);
$i=mysql_fetch_array($ergebnis); $chat_gesamt=$i[0];
if ($chat_gesamt>0) { if ($chat_gesamt==1) { $a="ist 1"; } else { $a="sind ".$chat_gesamt; } }
else { $a="keine"; }
echo "<b>Zurzeit ".$a." User online</b><br><br>";
}

Könnt ihr damit was anfangen?
 
bigfraggle am 06.09.2004 17:56 schrieb:
Hm, ich denke mal, dass das hier die entscheidende Stelle im Code ist:

function chat_online() {
global $_T_USERS,$v;
$ergebnis=mysql_query("SELECT COUNT(DISTINCT nick) FROM $_T_USERS WHERE chat_raum>'0'",$v);
$i=mysql_fetch_array($ergebnis); $chat_gesamt=$i[0];
if ($chat_gesamt>0) { if ($chat_gesamt==1) { $a="ist 1"; } else { $a="sind ".$chat_gesamt; } }
else { $a="keine"; }
echo "<b>Zurzeit ".$a." User online</b><br><br>";
}

Könnt ihr damit was anfangen?

Jepp :)

Das Skript führt eine Datenbank-Abfrage (mit Hilfe von SQL) durch, speichert die Anzahl online befindlicher User in $chat_gesamt und gibt dann einen entsprechenden Text aus.
Du müßtest also nur noch an der Stelle, wo du das hinhaben willst, in die HTML-Datei schreiben:

<?php chat_online(); ?>

Natürlich muß die Datei, die diese Funktion enthält, per include() eingebunden sein, und die Datei muß [name].php heißen, sonst funktioniert es nicht...
 
Arokh am 06.09.2004 19:14 schrieb:
Jepp :)

Das Skript führt eine Datenbank-Abfrage (mit Hilfe von SQL) durch, speichert die Anzahl online befindlicher User in $chat_gesamt und gibt dann einen entsprechenden Text aus.
Du müßtest also nur noch an der Stelle, wo du das hinhaben willst, in die HTML-Datei schreiben:

<?php chat_online(); ?>

Natürlich muß die Datei, die diese Funktion enthält, per include() eingebunden sein, und die Datei muß [name].php heißen, sonst funktioniert es nicht...

Ok, ich habe ne index.php. Dort will ich z.B. den Text "Es befinden sich gerade XYZ User im Chat und spammen was das Zeugs hält." anzeigen lassen.
Muss ich jetzt eine Datei soundso.php mit dem Inhalt

<?php chat_online(); ?>

erstellen und diese dann in der index.php mit

... sich gerade
include "soundso.php"
User im Chat ...

integrieren?
 
bigfraggle am 06.09.2004 20:01 schrieb:
Arokh am 06.09.2004 19:14 schrieb:
Jepp :)

Das Skript führt eine Datenbank-Abfrage (mit Hilfe von SQL) durch, speichert die Anzahl online befindlicher User in $chat_gesamt und gibt dann einen entsprechenden Text aus.
Du müßtest also nur noch an der Stelle, wo du das hinhaben willst, in die HTML-Datei schreiben:

<?php chat_online(); ?>

Natürlich muß die Datei, die diese Funktion enthält, per include() eingebunden sein, und die Datei muß [name].php heißen, sonst funktioniert es nicht...

Ok, ich habe ne index.php. Dort will ich z.B. den Text "Es befinden sich gerade XYZ User im Chat und spammen was das Zeugs hält." anzeigen lassen.
Muss ich jetzt eine Datei soundso.php mit dem Inhalt

<?php chat_online(); ?>

erstellen und diese dann in der index.php mit

... sich gerade
include "soundso.php"
User im Chat ...

integrieren?
fast so
gib mir mal die ganze datei von chat in der diese funktion steht
 
Das ist die komplette index.php des Chats:

<?php
# (c) Viktor Widiker http://www.widiker.de, Berlin 2003
####### Einstellungen für die Indexseite #######
$zeigen_anmeldungen=1; # Anzahl der Anmeldungen zeigen? (0=nein/1=ja)
$zeigen_leere_raeume=1; # Userübersicht auch in leeren Räumen anzeigen? (0=nein/1=ja)

####### Hauptseite #######
include("settings.inc.php");
include("design/$_DESIGN/functions.inc.php");

####### Nichtaktivierte Anmeldungen löschen, soweit nötig
if ($_AKTIVIERUNG>0) {
$heute=mktime(0,0,0,date("m"),date("d"),date("Y"));
$loeschen=$heute-($_AKTIVIERUNG*3600*24);
mysql_query("DELETE FROM ".$_T_USERS." WHERE status='0' AND anmeldung_sek<'".$loeschen."'",$v);
}

####### Nach 100 Sekunden ohne Refresh den User ausloggen #######
$zeit=time();
$loeschen=$zeit-100;
mysql_query("UPDATE ".$_T_USERS." SET chat_raum='0' WHERE refresh<'".$loeschen."'",$v);
$moc="c2VpdGVfYW5mYW5nKCRfQ0hBVF9OQU1FKTsNCiRtYz0iYVc1
amJIVmtaU2dpWkdWemFXZHVMeUl1SkY5RVJWTkpSMDR1SWk5cGJt
UmxlQzVwYm1NdWNHaHdJaWs3RFFva1pUMXRlWE54YkY5eGRXVnll
U2dpVTBWTVJVTlVJRU5QVlU1VUtFUkpVMVJKVGtOVUlHNXBZMnNwSU
VaU1QwMGdKRjlVWDFWVFJWSlRJRmRJUlZKRklHTm9ZWFJmY21GM
WJUNG5NQ2NpTENSMktUc05DaVJwUFcxNWMzRnNYMlpsZEdOb1gyR
nljbUY1S0NSbEtUc2tiejBrYVZzd1hUc05DaVJsUFcxNWMzRnNYM0YxWl
hKNUtDSlRSVXhGUTFRZ1EwOVZUbFFvS2lrZ1JsSlBUU0FpTGlSZlZGO
VZVMFZTVXl3a2RpazdEUW9rY205M1BXMTVjM0ZzWDJabGRHTm9YMk
Z5Y21GNUtDUmxLVHNrWVQwa2NtOTNXekJkT3cwS0l5Qm1iMnhuWlc
1a1pTQmFaV2xzWlNCa1lYSm1JRzVwWTJoMElHVnVkR1psY201MExD
Qm5aZVJ1WkdWeWRDQnZaR1Z5SUhWdWMybGphSFJpWVhJZ1oyVn
RZV05vZENCM1pYSmtaVzRoRFFwbFkyaHZJQ0k4WTJWdWRHVnlQanh
6YldGc2JENDhZbkkrUEdKeVBqeGljajUzYVdScGEyVnlMVU5vWVhRZ0tG
QklVQ3ROZVZOUlRDQXRJRU5vWVhRcElDWmpiM0I1T3lCV2FXdDBiM0
lnVjJsa2FXdGxjaUE4WVNCb2NtVm1QU2RvZEhSd09pOHZkM2QzTG5kc
FpHbHJaWEl1WkdVblBuZHBaR2xyWlhJdVpHVThMMkUrTENCQ1pYSn
NhVzRnTWpBd015NGdRV3hzWlNCU1pXTm9kR1VnZG05eVltVm9ZV3gw
Wlc0dVBHSnlQa1JsY2lCVmNtaGxZbVZ5SUhSeTVHZDBJR3RsYVc1bEl
GWmxjbUZ1ZEhkdmNuUjFibWNnWnZ4eUlFbHVhR0ZzZEdVZ1pHVnlJR
mRsWW5ObGFYUmxiaXdnWVhWbUlHUmxibVZ1SUdScFpYTmxjaUJEY
UdGMElHbHVjM1JoYkd4cFpYSjBJR2x6ZER4aWNqNTFibVFnL0dKbGNt
NXBiVzEwSUd0bGFXNWxJRWhoWm5SMWJtY2dadnh5SUZOamFPUmt
aVzRzSUdScFpTQmtkWEpqYUNCT2RYUjZkVzVuSUdScFpYTmxjeUJEY
UdGMGN5QjJaWEoxY25OaFkyaDBJSGRsY21SbGJpNDhMM050WVd4c
1Bqd3ZZMlZ1ZEdWeVBqeHBiV2NnYzNKalBTZG9kSFJ3T2k4dmQzZDN
MbmRwWkdsclpYSXVaR1V2ZDJsa2FXdGxjaTFqYUdGMEwzSmxaaTV3
YUhBL2JqMGlMblZ5YkdWdVkyOWtaU2drWDBOSVFWUmZUa0ZOUlNrd
UlpWndQU1JmVUVaQlJDOXBibVJsZUM1d2FIQW1iejBrYnlaaFBTUmhK
eUIzYVdSMGFEMG5NQ2NnYUdWcFoyaDBQU2N3SnlCaWIzSmtaWEk5
SnpBblBpSTciOw0KZXZhbChiYXNlNjRfZGVjb2RlKCRtYykpOw0Kc2Vpd
GVfZW5kZSgpOw==";
eval(base64_decode($moc));

####### Funktionen #######
function anmeldungen() {
global $_T_USERS,$v;
# Anmeldungen gesamt
$ergebnis=mysql_query("SELECT COUNT(*) FROM ".$_T_USERS,$v);
$row=mysql_fetch_array($ergebnis); $gesamt=$row[0];
# Anmeldungen heute
$zeit_heute=mktime(0,0,0,date("m"),date("d"),date("Y"));
$ergebnis=mysql_query("SELECT COUNT(*) FROM $_T_USERS WHERE anmeldung_sek>='$zeit_heute'",$v);
$i=mysql_fetch_array($ergebnis); $heute=$i[0];
# Anmeldungen gestern
$zeit_gestern=$zeit_heute-86400;
$ergebnis=mysql_query("SELECT COUNT(*) FROM $_T_USERS WHERE anmeldung_sek>='$zeit_gestern' AND anmeldung_sek<'$zeit_heute'",$v);
$i=mysql_fetch_array($ergebnis); $gestern=$i[0];
show_anmeldungen($gesamt,$heute,$gestern);
}

function chat_online() {
global $_T_USERS,$v;
$ergebnis=mysql_query("SELECT COUNT(DISTINCT nick) FROM $_T_USERS WHERE chat_raum>'0'",$v);
$i=mysql_fetch_array($ergebnis); $chat_gesamt=$i[0];
if ($chat_gesamt>0) { if ($chat_gesamt==1) { $a="ist 1"; } else { $a="sind ".$chat_gesamt; } }
else { $a="keine"; }
echo "<b>Zurzeit ".$a." User online</b><br><br>";
}

function raeume_online() {
global $_T_CHAT_ROOMS,$_T_USERS,$v,$zeigen_leere_raeume;
$ergebnis=mysql_query("SELECT * FROM $_T_CHAT_ROOMS ORDER BY id",$v);
while($row=mysql_fetch_object($ergebnis)) {
$ergebnis2=mysql_query("SELECT nick,status FROM $_T_USERS WHERE chat_raum='$row->id' ORDER BY nick",$v);
$gesamt=mysql_num_rows($ergebnis2);
if ($gesamt>0) {
$userstring=array();
$user_im_raum="";
while ($row2=mysql_fetch_object($ergebnis2)) {
if ($row2->status>"1") { $row2->nick="<b>".$row2->nick."</b>"; }
array_push($userstring,$row2->nick);
}
$user_im_raum=implode(", ",$userstring);
}
else { $user_im_raum="keine User online"; }
if ($gesamt>0 || $zeigen_leere_raeume!=0) { show_raum($row->name,$gesamt,$user_im_raum); }
}
}
?>

Oder meintest du eine andere Datei? :confused:

edit skicu: hab mal den layoutsprenger mit ein paar zeilenumbrüchen beseitigt.
 
du musst die datei setting.inc.php includen:
<?php
include "pfad/settings.inc.php";
function chat_online() {
global $_T_USERS,$v;
$ergebnis=mysql_query("SELECT COUNT(DISTINCT nick) FROM $_T_USERS WHERE chat_raum>'0'",$v);
$i=mysql_fetch_array($ergebnis); $chat_gesamt=$i[0];
if ($chat_gesamt>0) { if ($chat_gesamt==1) { $a="ist 1"; } else { $a="sind ".$chat_gesamt; } }
else { $a="keine"; }
echo "<b>Zurzeit ".$a." User online</b><br><br>";
}
chat_online();
?>
so sieht die datei dann aus pfad musst du durch den pfad ersetzen dann müsste es funktionieren
 
Kann ich also in meiner "normalen" index.php dann einfach folgendes schreiben?

Es sind <?php include...?> User online.

Funzt das?
 
Oh gott..was manche Leute als professionellen code verticken wollen oO
Traurig :\
 
SebiB90 am 07.09.2004 21:12 schrieb:
ich versteh nicht was du meinst?
du musst einfach den code in deine index.php kopieren und den pfad richtig setzen.

Kann ich die generierte Ausgabe (x User online) mit diesem Code einfach in einen Text integrieren? Sprich: HTML-Code, dein Code, HTML-Code etc.? Oder funzt die Anzeige z.B. nur in einem eigenen Fenster / Frame o.ä.?
 
Zurück