Hallo, Gast! (Registrieren)

Letzte Ankündigung: Sicherheitsupdate: MyBB 1.8.29 veröffentlicht (30.10.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Letztes Beitragsdatum eines Themas auslesen
#1
Huhu, ich versuche seit einiger Zeit auf http://sw-battlefront.de/fdg_v2/ die letzten Foreneinträge mit dem Datum und Uhrzeit vom letzten Beitrag zu versehen.

Ich nutze hierzu folgendes Script:

PHP-Code:
<?php

function echo_threads()
{
    
// Daten für Verbindung zur Datenbank / Nicht swbf-Datenbank!
        
$dbhost "xxx";
        
$dbuser "xxx";
        
$dbpassword "xxx";
        
$dbdatabase "xxx";

    
// Prefix
    // Standart: $prefix = "mybb_";
        
$prefix "mybb_";

    
// URL zum Forum
    // Zum automatischen beziehen der Adresse keine Adresse eintragen
    // Zum manuellen setzen der Forum URL bitte URL eintragen OHNE "/" AM ENDE!
    // Zum Beispiel: $url = "http://www.board.broatcast.de";
        
$url "http://www.fdg-clan.de/forum";

    
// UTF-8 Codierungsvariable
    // Zum aktivieren auf "on" stellen (nur aktivieren wenn fehlerhafte Codierungen ausgegeben werden).
    // Zum deaktivieren auf "off" stellen
    // Standart: $uft8_debug_function = "off";
        
$utf8_debug_function "off";

    
// Anzahl der angezeigten Themen
        
$limit "8";

    
// Datums Ausgabe Aktivieren
    // "on" zum aktivieren / "off" zum deaktivieren
        
$datum "off";

    
// Datums Format
    // 0: "23.01.09"
    // 1: "23.01.2009"
    // 2: "23-01-09"
    // 3: "23-01-2009"
    // 4: "18:56 23.01.09"
    // 5: "18:56 23.01.2009"
    // 6: "06:56 PM 23-01-09"
    // 7: "06:56 PM 23-01-2009"
    // 8: "Friday 23rd of January 2009 06:56:50 PM"
    // 9: "Friday the 23rd"
        
$datumf "0";

    
// Username anzeigen
    // "on" zum aktivieren / "off" zum deaktivieren
        
$user "off";

    
// Username als Link anzeigen
    // "on" zum aktivieren / "off" zum deaktivieren
        
$userl "off";

    
// Datum und/oder User in neuer Zeile anzeigen
    // "on" zum aktivieren / "off" zum deaktivieren
        
$datumuser "off";

    
// Ausschließen bestimmter Foren anhand deren ID's
    // einfach das Array mit den ID füllen zbs.: array('99', '20', '89')
        
$fid = array();
        
        


    
/*    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        !!AB HIER NICHTS MEHR ÄNDERN ES SEI DENN, SIE WISSEN WAS SIE TUN !!
        !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */


    // Initialisierung der Fehlermeldungen
        
error_reporting(0);
        
$error1 '<br /><strong>Fehler:</strong><br />Die Verbindung zum Datenbank Server 
                            ist fehlgeschlagen.<br /><br /><strong>Wie beheben Sie diesen Fehler:
                            </strong><br />1. Stellen Sie sicher das Sie die MySql Datenbank Verbindung
                            in den Zeilen 70-72 in der Datei new_thread.php eingetragen haben.<br />
                            2. Stellen Sie sicher das die eingetragnen Verbindungsdaten korrekt sind.
                            <br />3. Stellen Sie sicher das der Datenbankserver erreichbar ist.
                            <br /><br /><strong>Weitere Gr&uuml;nde:</strong><br />1. Auf den meisten
                            Freehostern ist es nicht gestattet Verbindungen mit externen 
                            Datenbankservern aufzunehmen.<br />2. Der Datenbankserver l&auml;uft nicht.'
;
        
$error2 '<br /><strong>Fehler:</strong><br />Auf die Datenbank konnte nicht 
                            zugegriffen werden.<br /><br /><strong>Wie beheben Sie diesen Fehler:
                            </strong><br />1. Stellen Sie sicher das Sie den Datenbanknamen in Zeile
                            73 der Datei new_thread.php eingetragen haben.<br />2. Stellen Sie sicher 
                            das der angegebene Datenbankname korrekt ist.<br />3. Stellen Sie sicher
                            das der Datenbankuser Zugriffsrechte auf die angegeben Datenbank hat.'
;
        
$error3 '<br /><strong>Fehler:</strong><br />Die Tabelle ist nicht erreichbar.<br />
                            <br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen Sie 
                            sicher das sie Das Datenbankprefix in Zeile 77 in der Datei new_thread.php 
                            richtig eingetragen haben.<br /><br /><strong>Info:</strong><br />1. Das 
                            Datenbankprefix haben Sie bei der Installation Ihres Boards/Forums 
                            angegeben.<br />2. Sollten Sie es nicht ge&auml;ndert haben so lautet es 
                            Standdartm&auml;&szlig;ig bei MyBBoard "mybb_".'
;
        
$error4 '<br /><strong>Fehler:</strong><br />Die Angabe Ihrer URL ist nicht korrekt.
                            <br /><br /><strong>Wie beheben sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie Eine URL in Zeile 83 der Datei new_thread.php eingetragen 
                            haben.<br />2. Stellen Sie sicher das Sie am Ende der URL kein "/" 
                            eingetragen haben.<br />3. Wahlweise k&ouml;nnen Sie diese Option auf 
                            frei lassen um die Adresse automatisch beziehen zu lassen.'
;
        
$error5 '<br /><strong>Fehler:</strong><br />Die Limit Einstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie ein Limit in der Zeile 92 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nicht "0" betr&auml;gt.'
;
        
$error6 '<br /><strong>Fehler:</strong><br />Die Datums Einstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die Datums Einstellung in der Zeile 96 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nur "on" oder "off" lautet.'
;
        
$error7 '<br /><strong>Fehler:</strong><br />Die Datumsformat Einstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die Datumsformat Einstellung in der Zeile 109 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            "9" nicht &uuml;berschreitet oder einen negativen Wert hat.'
;
        
$error8 '<br /><strong>Fehler:</strong><br />Die Datumszeilen Einstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die Datumszeilen Einstellung in der Zeile 121 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nur "on" oder "off" lautet.'
;
        
$error9 '<br /><strong>Fehler:</strong><br />Die Userseinstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die Userseinstellung in der Zeile 113 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nur "on" oder "off" lautet.'
;
        
$error10 '<br /><strong>Fehler:</strong><br />Die Userslinkeinstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die Userslinkeinstellung in der Zeile 117 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nur "on" oder "off" lautet.'
;
        
$error11 '<br /><strong>Fehler:</strong><br />Die Auszuschließenden ForenID\'s sind 
                            nicht richtig konfiguriert worden.<br /><br /><strong>Wie beheben Sie diesen 
                            Fehler:</strong><br />1. Stellen Sie sicher das Sie das Ausschlussarray 
                            in der Zeile 125 der Datei new_thread.php wie im Beispiel richtig ausgef&uuml;llt 
                            haben.<br />2. Stellen Sie sicher das die eingetragenen ForenID\'s auch 
                            existieren.'
;
        
$error12 '<br /><strong>Fehler:</strong><br />Die UTF-8 Codierungseinstellung ist nicht korrekt.
                            <br /><br /><strong>Wie beheben Sie diesen Fehler:</strong><br />1. Stellen 
                            Sie sicher das Sie die UTF-8 Codierungseinstellung in der Zeile 89 in der Datei new_thread.php 
                            eingetragen haben.<br />2. Stellen Sie sicher das der eingetragene Wert 
                            nur "on" oder "off" lautet.'
;
        
$error21 '<br /><strong>Fehler:</strong><br >Konnte kein charset einstellen!<br /><br />
                            <strong>Wie beheben Sie diesen Fehler:</strong><br />Stellen Sie sicher dass
                            die Datenbank in UTF-8 gespeichert ist.<br /> 2. Stellen Sie sicher dass Sie 
                            MYSQL in der Version 5.0.7 oder h&ouml;her nutzen.'


    
// Überprüfung der eigetragenen Domain
        
if (!empty($url)) 
        {
            if (
$url == "" OR (preg_match("~/$~"$url)))
            {
                return 
$error4;
                break;
            }
        }

    
// Überprüfung des eingestellten Limits
        
if (!is_numeric($limit) OR $limit <= "0")
        {
            return 
$error5;
            break;
        }

    
// Überprüfung der Datumseinstellung
        
if ($datum != "on" AND $datum != "off")
        {
            return 
$error6;
            break;
        }

    
// Überprüfen der Datumsformateinstellung
        
if (!is_numeric($datumf) OR $datumf "9" OR $datumf "0")
        {
            return 
$error7;
            break;
        }

    
// Überprüfen der Datumszeileneinsellung
        
if ($datumuser != "on" AND $datumuser != "off")
        {
            return 
$error8;
            break;
        }

    
// Überprüfung der Userseinstellung
        
if ($user != "on" AND $user != "off")
        {
            return 
$error9;
            break;
        }

    
// Überprüfung der Userlinkseinstellung
        
if ($userl != "on" AND $userl != "off")
        {
            return 
$error10;
            break;
        }

    
// Überprüfung der UTF-8 Codierungseinstellung
        
if ($utf8_debug_function != "on" AND $utf8_debug_function != "off")
        {
            return 
$error12;
            break;
        }

    
// Verbindung zur Datenbank aufnehmen
        
if(!$db mysql_connect($dbhost,$dbuser,$dbpassword)) return($error1);
        if(!
mysql_set_charset('utf8',$db)) return($error21);
        if(!
mysql_select_db($dbdatabase,$db)) return($error2); 

    
// Beziehen der Foren ID's
        
if (!empty($fid))
        {
            
$fids = Array();
            if(!
$querys mysql_query("SELECT fid FROM ".$prefix."forums")) return($error3);
            while(
$row mysql_fetch_assoc($querys))
            {
                
$fids[] = $row['fid'];
            }
        }

    
// Existenz der ForenID's überprüfen
        
if (!empty ($fid))
        {
            foreach(
$fid as $value)
            {
                if(!
in_array($value$fids)) return($error11);
            }
        }

    
// Beziehen der Forum Adresse
        
if (empty($url))
        {
            if(!
$querys mysql_query ("SELECT value FROM ".$prefix."settings WHERE name='bburl'")) return($error3);
            
$row mysql_fetch_assoc($querys);
            
$url $row['value'];
        }

    
// Beziehen der SEO Informationen
        
if(!$querys mysql_query ("SELECT value FROM ".$prefix."settings WHERE name='seourls'")) return($error3);
        
$row mysql_fetch_assoc($querys);
        
$seodata $row['value'];

    
// Festlegen der URL anhand der SEO Einstellungen
        
switch($seodata)
        {
            case 
"yes":
                
$seo "thread-";
                
$seoul "user-";
                
$seourl "1";
                break;
            case 
"auto":
                
$seo "showthread.php?tid=";
                
$seoul "member.php?action=profile&uid=";
                break;
            case 
"no":
                
$seo "showthread.php?tid=";
                
$seoul "member.php?action=profile&uid=";
                
$seourl "0";
                break;
            default:
                return 
"Die SEO Einstellungen konnten nicht bezogen werden.";
                
$seourl "0";
                break;
        }

        if (
$seourl == "1")
        {
            
$html ".html";
        }

    
// Datums Format beziehen
        
switch ($datumf)
        {
            case 
0:    $datef    =    "d.m.y"; break;
            case 
1:    $datef    =    "d.m.Y"; break;
            case 
2:    $datef    =    "d-m-y"; break;
            case 
3:    $datef    =    "d-m-Y"; break;
            case 
4:    $datef    =    "d.m.y H:i"; break;
            case 
5:    $datef    =    "H:i d.m.Y"; break;
            case 
6:    $datef    =    "h:i A d-m-y";    break;
            case 
7:    $datef    =    "h:i A d-m-Y";    break;
            case 
8:    $datef    =    "l dS \of F Y h:i:s A"; break;
            case 
9:    $datef    =    "l \\t\h\e jS"; break;
        }

        if (
$datumuser == "on")
        {
            
$break "<br />";
        }

    
// Foren ID's auslassen
        
if (!empty($fid))
        {
            
$fidout "AND fid not in(".implode(",",$fid).")";
        }

    
// Liste starten
        
echo '';

    
// Letzte Themen auslesen
        
$query_txt "SELECT tid, subject, uid, username, dateline, lastpost FROM `".$prefix."threads` WHERE visible=1 ".$fidout." AND `closed` NOT LIKE 'moved|%' ORDER BY lastpost DESC LIMIT 0,".$limit."";
        
$query mysql_query ($query_txt);
        

        while (
$newest_threads mysql_fetch_array($query))
        {
            
$i++;
            if (
$datum == "on")
            {
                
$date " - ".date($datef,$newest_threads['dateline'])." ";
            }
            if (
$user == "on")
            {
                if (
$userl == "off")
                {
                    
$users " von ".utf8_debug($newest_threads['username']);
                }
                else
                {
                    
$users " von  <a href=\"".$url."/".$seoul.$newest_threads['uid'].$html."\">".utf8_debug($newest_threads['username'])."</a>";
                }
            }
            
$output "<img src=\"img/jump.png\" title=\"Zum Beitrag ...\" width=\"15\" height=\"15\"><a href=\"";
            
$output .= $url."/".$seo.$newest_threads['tid']."&action=lastpost".$html."\">".utf8_debug($newest_threads['subject'])."</a><br />";
            
$output .= $break;
            
$output .= $date;
            
$output .= $users."";
            echo 
$output
            
        }

    
// Liste schließen
        
echo "";
}

function 
utf8_debug($message)
{
    if (
$utf8_debug_function == "on")
    {
        
$find = array(
                        
"ö",
                        
"ä",
                        
"ü",
                        
"Ö",
                        
"Ä",
                        
"Ü"
                    
);

        
$replace = array(
                            
"&ouml;",
                            
"&auml;",
                            
"&uuml;",
                            
"&Ouml;",
                            
"&Auml;",
                            
"&Uuml;"
                        
);

        
$message str_replace($find$replace$message);
        
    }
    
    if (
strlen($message) > 28) {
        
$message substr($message025) . '...';
    }

    return 
$message;


     
// Aufrufen der Funktion
   
echo(echo_threads());
?>

Ich möchte nicht das Datum der Themenerstellung auslesen, sondern das Datum des letzten Beitrags inklusive Uhrzeit. Wie lässt sich das bewerkstelligen? Danke schonmal für die Hilfe. Smile
Zitieren
#2
Moin,

das Datum wird bereits aus der Datenbank geholt und steckt in $newest_threads['lastpost'].

Noch ein Hinweis: Du scheinst Username, Betreff, etc. vor der Ausgabe nicht zu escapen. Das kann ein Sicherheitsrisiko sein, da User darüber Code in deine Seite bringen können.

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
#3
Du änderst in Zeile #311 einfach:
PHP-Code:
$date " - ".date($datef,$newest_threads['dateline'])." "

zu:
PHP-Code:
$date " - ".date($datef,$newest_threads['lastpost'])." "
Zitieren
#4
Ich danke euch beiden. Smile

Escapen? Ich hab mal danach gegooglet. Meinst du, es besteht die Gefahr einer sql-injection?

Wo müsste ich denn escapen damit das Script sicher ist?
Zitieren
#5
Alle Benutzereingaben – und damit fast alles, was aus der Datenbank geholt wird – sollte escaped werden, z.B. mit htmlspecialchars().

Weiterführende Informationen:
https://de.wikipedia.org/wiki/Cross-Site-Scripting
http://www.php-kurs.com/cross-site-scrip...binden.htm
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Nur letztes Eintrag wird aus Datenbank ausgelesen fallennewyork 5 2.900 09.08.2013, 15:37
Letzter Beitrag: Jockl
  Weiterleitung beim Anklicken eines Themas aTCWiki 14 3.980 08.11.2010, 20:37
Letzter Beitrag: Axxis
  Ansichten eines Themas +1 Waluigi 3 1.625 03.10.2009, 22:41
Letzter Beitrag: Michael