Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Prüfen auf neue Beiträge
#1
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!
Zitieren
#2
Meinst du das so?:
https://www.mybb.de/forum/search.php?action=getnew
MyBBoard.de jetzt auf YouTube!
Fehlender Plan wird durch Wahnsinn ersetzt!!Toungue
Gruß Krafdi    www.krafdi.de
Zitieren
#3
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!
Zitieren
#4
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#5
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!
Zitieren
#6
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#7
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($im255255255);
    
$box imagettfbbox(80'arialbd.ttf'$posts['counter']);
    
imagettftext($im80$box[2] / 212$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!
Zitieren
#8
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!
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Star E-Mails auf gültigkeit prüfen kettwiesel 6 2.869 23.03.2010, 11:11
Letzter Beitrag: querschlaeger