Beiträge: 157
Themen: 26
Registriert seit: 27.01.2006
16.08.2006, 20:02
(Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2006, 20:03 von poncho.)
Hallo Leute,
ich möchte ein kleines Zusatzscript schreiben, mit dem geprüft werden kann, ob neue/ungelesene Beiträge im Forum sind.
Wie komme ich am besten an diese Information?
Wer sich fragt, wofür das gut sein soll:
Das Script gibt einfach ein Bild aus, welches anzeigt, ob neue Beiträge da sind. Dieses Script kann man dann als Icon auf einer Website einfügen (in meinem spezielle Fall geht es um ein Spiel, wo die Spieler üer neue Beiträge informiert werden sollen).
Dieser Satz ist falsch!
Beiträge: 2.504
Themen: 69
Registriert seit: 09.04.2005
Beiträge: 157
Themen: 26
Registriert seit: 27.01.2006
Ja, ich habs mitlerweile aus der search.php zusammengefrickelt. Das Problem dabei ist aber, dass erst nach einem klick auf "Alle Foren als gelesen markieren" keine neuen Beiträge mehr angezeigt werden, auch wenn auf der Übersichtseite keine neuen Beiträge mer angezeigt werden.
Dieser Satz ist falsch!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Das Problem liegt im System selbst, die automatische Funktion zum Markieren von Themen als gelesen funktioniert derzeit nur bedingt. Auch per Suche werden nur dann keine neuen Themen angezeigt, wenn diese manuell als gelesen markiert wurden. Eine Lösung kann ich leider nicht anbieten.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 157
Themen: 26
Registriert seit: 27.01.2006
18.08.2006, 07:09
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2006, 07:54 von poncho.)
Das hat jetzt soweit alles funktioniert aber ich bin damit noch nicht ganz glücklich. Ich werde das jetzt nochmal eine andere Methode ausprobieren:
Ich prüfe einfach, welche Beiträge neuer sind als "lastvisit" des Benutzers. Dann wären da zwar nicht unbedingt ungelesene Beiträge dabei aber das wäre dann das selbe Verhalten, wie beim internen Spiel-Forum.
Allerdings habe ich dazu zwei Fragen:
- Wenn ich die globals.php einbinde, wird "lastvisit" dann automatisch hoch gesetzt? Das wäre bei mir ja nicht so günstig.
- Was hat es mit dem "loginkey" auf sich? Wenn ich die member.php richtig deute, ist "password" ein verschlüsselter MD5-Hash. Wie kann ich denn prüfen, ob Logindaten korrekt sind, wenn das kein MD5-Hash ist?
EDIT:
Nochmal zur Erklärung: Wie ich Nutzer und Passwort prüfe, steht ja in der member.php. Der Nutzer soll aber nicht sein Passwort mit schicken, sondern den MD5-Hash, damit damit erstmal niemand sonst was anfangen kann. Und ich will nun prüfen, ob der MD5-Hash seines Passworts stimmt aber so wie ich das sehe, ist das wohl nicht möglich!?
Dieser Satz ist falsch!
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
poncho schrieb:Wenn ich die globals.php einbinde, wird "lastvisit" dann automatisch hoch gesetzt? Das wäre bei mir ja nicht so günstig. lastvisit wird dann aktualisiert, wenn sich der Benutzer ausloggt. lastactive wird bei jedem Seitenaufruf aktualisiert.
poncho schrieb:Was hat es mit dem "loginkey" auf sich? Wenn ich die member.php richtig deute, ist "password" ein verschlüsselter MD5-Hash. Wie kann ich denn prüfen, ob Logindaten korrekt sind, wenn das kein MD5-Hash ist? Der Loginkey wird im Cookie gespeichert und dient so der Überprüfung, ob der Benutzer angemeldet ist. password beinhaltet einen md5 Hash des Passworts kombiniert mit dem Salt des Benutzers: md5(md5("passwort").md5("salt")).
Funktionen zum Überprüfen des Passworts findest du in der Datei inc/functions_user.php.
poncho schrieb:Nochmal zur Erklärung: Wie ich Nutzer und Passwort prüfe, steht ja in der member.php. Der Nutzer soll aber nicht sein Passwort mit schicken, sondern den MD5-Hash, damit damit erstmal niemand sonst was anfangen kann. Und ich will nun prüfen, ob der MD5-Hash seines Passworts stimmt aber so wie ich das sehe, ist das wohl nicht möglich!? Damit der md5-Hash geschickt werden kann, müsste dieser ja auf der Benutzerseite vorhanden sein. Da er das nicht ist, solltest du es vielleicht über den Loginkey versuchen, der im Cookie gespeichert ist.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 157
Themen: 26
Registriert seit: 27.01.2006
Es geht ja darum, dass der USer die Wahl haben soll: Entweder ganz normal per Cookie oder eben durch die Übergabe von Benutzernamen und Passwort-Hash (bla.php?user=abc&pass=XYZ)
Das habe ich jetzt auch so hinbekommen.
Allerdings bekomme ich keine neuen Beiträge angezeigt :/
Das ist mein Code bisher:
PHP-Code: require './global.php'; require './inc/functions_user.php';
if(isset($_GET['user']) and isset($_GET['pass'])) { $r_user = $db->query(' SELECT uid, password, salt, usergroup, lastvisit FROM '.TABLE_PREFIX.'users WHERE username = "'.addslashes($_GET['user']).'" '); if($user = $db->fetch_array($r_user) and $user['password'] == salt_password(md5($_GET['pass']), $user['salt'])) { $uid = $user['uid']; $gid = $user['usergroup']; $lastvisit = $user['lastvisit']; } else { error($lang->error_invalidpassword); } } elseif($mybb->user['uid'] > 0) { $uid = $mybb->user['uid']; $gid = $mybb->user['usergroup']; $lastvisit = $mybb->user['lastvisit']; } else { error($lang->error_nopermission_guest_1); } $r_perm = $db->query(' SELECT fid FROM '.TABLE_PREFIX.'forumpermissions WHERE gid = '.$gid.' AND canview = "yes" '); if(!($db->num_rows($r_perm) > 0)) { error($lang->error_nopermission_user_1); } $perms = array(); while($perm = $db->fetch_array($r_perm)) { $perms[] = $perm['fid']; } $r_posts = $db->query(' SELECT COUNT(pid) AS counter FROM '.TABLE_PREFIX.'posts WHERE dateline > '.$lastvisit.' AND fid IN('.implode(',', $perms).') '); if(!($posts = $db->fetch_array($r_posts))) { error($lang->error); } #header('Last-Modified: '.date('r')); header('Expires: '.date('r', time() + 300)); header('Cache-Control: max-age=300'); header('Content-Type: image/gif'); if($posts['counter'] > 0) { $im = imagecreatefromgif('iconon.gif'); # $col_text = imagecolorallocate($im, 128, 64, 64); $col_text = imagecolorallocate($im, 255, 255, 255); $box = imagettfbbox(8, 0, 'arialbd.ttf', $posts['counter']); imagettftext($im, 8, 0, 7 - $box[2] / 2, 12, $col_text, 'arialbd.ttf', $posts['counter']); ob_start(); imagegif($im); $output = ob_get_contents(); $filesize = ob_get_length(); ob_end_clean(); header('Content-Length: '.$filesize); print $output; } else { header('Content-Length: '.filesize('iconoff.gif')); readfile('iconoff.gif'); }
Dieser Satz ist falsch!
Beiträge: 157
Themen: 26
Registriert seit: 27.01.2006
OK, es liegt daran, dass die Foren die Einstellung der übergeordneten Foren/Kategorien übernehmen.
Mal schaun, wie ich das nun wieder umsetze :/
Dieser Satz ist falsch!
|