Seite 1 von 1

ON/OFFline Anzeige des Admins/Webmasters außerhalb vom phpBB

Verfasst: 14.01.2004 22:41
von eugenandreas
Schönen guten Abend :)

Ich will schon seit langem in meine private Homepage eine Anzeige einbauen, welche dem Besucher darstellt, ob ich online bin oder nicht. Ähnlich der ICQ Blume, aber mit dem Unterschied, dass ich mich nur in mein phpBB einloggen müssen sollte.

Das ganze sollte dann allerdings auch auf externen Seiten (nicht das phpBB) anzeigbar sein.

Wie lässt sich das realisieren?

Ansatzweise, kann ich es formulieren, aber mit dem Code kann ich leider nichts machen.

- User Authentificaton ist notwendig
- auslesen des on/off status aus der user-Tabelle
- einbinden des ergebnisse durch include der zukünftigen on-off.php

Kennst Du Dich evtl. mit PHP Programmierung aus, und kannst mir mit dem "Problem" bzw. der Fragestellung helfen?

Du wärst mir eine große Hilfe und ich wäre Dir sehr dankbar!

Mit freundlichen Grüßen,
Eugen

Verfasst: 16.01.2004 13:57
von eugenandreas
Obwohl es eine der einfacheren (nicht einfach genug für mich) Arbeiten ist, weiß niemand wie es funktionieren kann?

Man müsste doch nur den aktuellen online status eines Mitgliedes auslesen und diesen dann auf einer externen (nicht phpbb aber gleiche domain) seite anzeigen können.

Bitte helft mir :(


Gruß,
Eugen

Verfasst: 16.01.2004 17:08
von Shadowman
hm, das is wirklich nich so schwer. du kannst eigentlich fast den code aus der stats mod nehmen, musst ihn ein wenig konfigurieren, damit die sql abfragen ausgeführt werden können.
ich will nun mal nicht so sein ^^:

Code: Alles auswählen

$benutzer="dein account";
$password="dein passwort";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("deine datenbank für phpbb", $link);
$tabellenname="phpbb_users"; // du musst das an die user tabelle in deinem forum angleicehn
$sql = "SELECT * FROM $tabellenname WHERE user_level !='0' ORDER BY user_level"; 
$result=mysql_query($sql,$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ausgabe[$i]=mysql_fetch_array($result);
}
du hast ja gesagt du hast ein wenig ahnung von php, also kannste du dir vlt vorstellen, dass nun in $ausgabe[1]['username'] der username steht, dann weisst du ja auch wie man das ganze schön ausgeben kann.
am besten nimmst du ne if schleife in dem format:

Code: Alles auswählen

for($i=0;$i<count($ausgabe);$i++)
{
echo $ausgabe[$i]['username'];
// usw und sofort
}
die user lvl sind folgende, sie stehen alle in $ausgabe['user_level'] ;
1. "ADMIN" //administrator
2. "MOD" //moderator

sollten weitere fragen auftauchen, so melde dich bei mir oder poste es hier rein

gruss

Shadow

Verfasst: 16.01.2004 21:24
von eugenandreas
VIELEN DANK! :)

Genau auf jemand wie dich hab ich gewartet. Denn meißt sind es die kleinen Dinge die unbeantwortet bleiben ;) Du hast mir schon sehr viel bei meinem Problem geholfen!
Ich merkte zwar zuvor an, dass ich ein wenig Ahnung von php habe, jedoch habe ich in dieser wie in anderen Programmiersprachen ein Problem mit Schleifen :cry: Es klingt zwar komisch, aber ich hab die Arbeitsweise auch durch mehrere Bücher nicht verstanden und hatte nicht weiter Zeit und/oder Interesse mich damit zu beschäftigen.

Kannst Du mir bitte kurz erklären, was unter

for($i=0;$i<count($ausgabe);$i++)
{
echo $ausgabe[$i]['username'];
// usw und sofort
}

"usw und sofort" noch zu ergänze ist?

Und eine Frage hätte ich nebst der Bitte auch noch:
Nutzt das Script von dir das Sessionmanagement des phpBBs (sicherlich, aber ich frag trotzdem :D ) und lässt sich dies auch in meine Navigation oder z.B. die Webcam-Seite integrieren, also auf dem phpBB externe Seiten?


Nochmals vielen Dank für Deine hilfe !

Ich wünsch Dir und allen anderen Lesern eine gute Nacht,

Gruß,
Eugen

Verfasst: 16.01.2004 21:38
von itst

Code: Alles auswählen

// hier connect zur Datenbank

$sql = "SELECT session_user_id FROM phpbb_sessions WHERE session_user_id = DEINE_ID AND session_time >= ".( time() - 300 );
// Keine Fehlermeldung ausgeben
$res = @mysql_query($sql);
$row = @mysql_fetch_array($res);

if ($row['session_user_id'] == DEINE_ID)
{
    $status = 'online';
} else
{
    $status = 'offline';
}

echo '<img src="' . $status . '.gif" />';

Verfasst: 16.01.2004 22:28
von eugenandreas
Vielen Dank Sascha, mit Euren beiden Hilfen werde ich das sicher gebacken kriegen. Wenn das Ergebnisse fertig ist, meld ich mich hier sicherlich nochmal :)

Natürlich wünsch ich Dir, Sascha, ebenfalls ne gute Nacht,

Gruß,
Eugen

Verfasst: 17.01.2004 12:51
von Shadowman
ich hatte das mit der online abfrage aus den sessions ja ganz vergessen :oops:

Code: Alles auswählen

for($i=0;$i<count($ausgabe);$i++) 
{ 
echo $ausgabe[$i]['username']; 
// usw und sofort 
}
das hier gibt die daten aus, die du haben willst. in $ausgabe[0]['username'] steht der username, der ersten zeile in der datenbank, das wird dann wahrscheinlich der admin sein. in $ausgabe[1]['username'] steht dann der 2te usw....
diese schleife ist bestimmt, so oft das alles auszuschreiben, bis es jede zeile der tabelle einmal ausgegeben hat.
damit du noch den online status haben willst, musst du die query, die dir
itst geschrieben hast, in diese schleife einbauen, du musst aber noch diese zeile vorher einfügen:

Code: Alles auswählen

$DEINE_ID = $ausgabe[$i]['user_id'];
und du musst noch in seinem script

Code: Alles auswählen

DEINE_ID
mit

Code: Alles auswählen

$DEINE_ID
ersetzen, dann sollte es funktionieren. wenn was nich klappt schreib dein script hier rein und ich kann dir sicher helfen.

Verfasst: 17.01.2004 16:18
von eugenandreas
Meine status.php würde dann denke ich folgendermaßen aussehen (noch nicht getestet):

Code: Alles auswählen

$benutzer="dein account";
$password="dein passwort";
$link=mysql_connect("localhost", $benutzer, $password);
mysql_select_db("deine datenbank für phpbb", $link);
$tabellenname="phpbb_users"; // du musst das an die user tabelle in deinem forum angleicehn
$sql = "SELECT * FROM $tabellenname WHERE user_level !='0' ORDER BY user_level";
$result=mysql_query($sql,$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ausgabe[$i]=mysql_fetch_array($result);
}


for($i=0;$i<count($ausgabe);$i++)
{
echo $ausgabe[$i]['username'];
// usw und sofort
$DEINE_ID = $ausgabe[$i]['user_id']; 
// hier connect zur Datenbank

$sql = "SELECT session_user_id FROM phpbb_sessions WHERE session_user_id = DEINE_ID AND session_time >= ".( time() - 300 );
// Keine Fehlermeldung ausgeben
$res = @mysql_query($sql);
$row = @mysql_fetch_array($res);

if ($row['session_user_id'] == $DEINE_ID)
{
    $status = 'online';
} else
{
    $status = 'offline';
}
echo '<img src="' . $status . '.gif" />'; 
} 
Wie sieht es dabei mit der Sicherheit aus, wenn ich mySQL Nutzernamen und Passwort in der Datei angebe? Ist es dann nicht für jeden möglich die Datei runterzuladen und somit mein PWD zu erhalten?

Gruß,
Eugen

Verfasst: 17.01.2004 18:07
von eugenandreas
gerade hab ich es getestet, jedoch ohne erfolg. folgendes wird angezeigt anstatt des status:

Code: Alles auswählen

$benutzer="xxx"; $password="xxx"; $link=mysql_connect("xxx", $benutzer, $password); mysql_select_db("xxx", $link); $tabellenname="phpbb_users"; // du musst das an die user tabelle in deinem forum angleicehn $sql = "SELECT * FROM $tabellenname WHERE user_level !='0' ORDER BY user_level"; $result=mysql_query($sql,$link); for($i=0;$i
Ich hab bereits geschaut was sich machen lässt, aber ich find den fehler nicht. Folgendes script wurde dafür verwendet:

Code: Alles auswählen

$benutzer="xxx";
$password="xxx";
$link=mysql_connect("xxx", $benutzer, $password);
mysql_select_db("xxx", $link);
$tabellenname="phpbb_users"; // du musst das an die user tabelle in deinem forum angleicehn
$sql = "SELECT * FROM $tabellenname WHERE user_level !='0' ORDER BY user_level";
$result=mysql_query($sql,$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ausgabe[$i]=mysql_fetch_array($result);
}


for($i=0;$i<count($ausgabe);$i++)
{
echo $ausgabe[$i]['username'];

// usw und sofort
$DEINE_ID = $ausgabe[$i]['user_id']; 

// hier connect zur Datenbank
$sql = "SELECT session_user_id FROM phpbb_sessions WHERE session_user_id = $DEINE_ID AND session_time >= ".( time() - 300 );
// Keine Fehlermeldung ausgeben
$res = @mysql_query($sql);
$row = @mysql_fetch_array($res);

if ($row['session_user_id'] == $DEINE_ID)
{
    $status = 'online';
} else
{
    $status = 'offline';
}
echo '$status'; 
} 
echo status wurde umgeändert, damit er erstmal nur text anzeigt, da ich jetzt keine lust hatte n bild zu erstellen.

Gruß,
Eugen

Verfasst: 23.01.2004 23:47
von Shadowman
hm, das versteh ich nich. bitte link mal auf die seite. würde mir das mal gerne anschaun, dann kann ich dir vlt helfen.

ach ja wegen sicherheit. da du alles in php schribst, wir es nicht ausgegeben, wenn du nich gerade echo $password machst ^^
bei php funktioniert das so:

browser sendet anfrage an server
server lädt die .php datei und arbeitet sie von oben bi sunten durch
server verschickt nun die entstandene datei an den browser als html
browser gibt nur den html code aus

beim download ist es genau das gleiche. das passwort wird so niemand rausbekommen.