Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.39 veröffentlicht (02.06.25)


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.303 09.08.2013, 16:37
Letzter Beitrag: Jockl
  Weiterleitung beim Anklicken eines Themas aTCWiki 14 6.250 08.11.2010, 21:37
Letzter Beitrag: Axxis
  Ansichten eines Themas +1 Waluigi 3 2.476 03.10.2009, 23:41
Letzter Beitrag: Michael