Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.40 veröffentlicht (28.05.26)


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($message, 0, 25) . '...'; } 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 4.676 09.08.2013, 16:37
Letzter Beitrag: Jockl
  Weiterleitung beim Anklicken eines Themas aTCWiki 14 6.827 08.11.2010, 21:37
Letzter Beitrag: Axxis
  Ansichten eines Themas +1 Waluigi 3 2.682 03.10.2009, 23:41
Letzter Beitrag: Michael