Seite 1 von 1
SQL in phpBB & Sicherheit
Verfasst: 07.01.2007 18:45
von Sanchez17
Hola,
ich arbeite seit 1-2 Wochen an eigenen php Srcipte (für eigen gebrauch).
Ich benutze für die PHP Dateien folgende Vorlage:
http://www.phpbb.de/doku/kb/artikel.php ... gene+seite
Bis jetzt habe ich bei meinen Scripten die Verbindung zur Datenbank im Script aufbauen müssen und schleßen müssen usw...wie hier beschrieben:
http://php-einfach.de/einf_mysql.php
Nun habe ich mir mal angesehen, wir die Standart phpBB Dateien dies machen. Und ich habe dort weder noch ein Verbindungsaufbau, noch irgendwas anderes "nötiges" entdeckt. Sonder nur die Anweisung "$SQL =".
Selbst die while Schleife usw. sehe ich nicht.
Kann man im phpBB die SQL Anweisung einfach so beginnen?
Oder gibt es da noch was zu beachten?
Zudem noch was anderes, nämlich der Sicherheit. Gibt es irgendwo Infos/Beispiele o.ä. was sich mit Sicherheit in eigenen Scripten in phpBB beschäftigt?
Weder die Suche, noch Google konnten mir
brauchbare informationen bzw. Antworten geben.
hasta luego,
Miguel
Verfasst: 07.01.2007 19:49
von PhilippK
Wo siehst du da kein while?
Code: Alles auswählen
//
// Obtain list of moderators of each forum
// First users, then groups ... broken into two queries
//
$sql = "SELECT u.user_id, u.username
FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u
WHERE aa.forum_id = $forum_id
AND aa.auth_mod = " . TRUE . "
AND g.group_single_user = 1
AND ug.group_id = aa.group_id
AND g.group_id = aa.group_id
AND u.user_id = ug.user_id
GROUP BY u.user_id, u.username
ORDER BY u.user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql);
}
$moderators = array();
while( $row = $db->sql_fetchrow($result) )
{
$moderators[] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>';
}
Du musst natürlich bedenken, dass phpBB den Aufbau der DB-Verbindung zentral über einen Include vornimmt und dann noch über eine DB-unabhängige Klassensammlung ($db->...) verfügt, über die die Datenbank-Befehle aufgerufen werden. Die normale PHP-Lehrbuch-Methode sieht da etwas anders aus.
Gruß, Philipp
Verfasst: 07.01.2007 20:01
von Sanchez17
Hi,
ah, jetzt sehe ich while
Die muss ich wohl übersehen haben...
Ich denke, ich habe nun verstanden, wie es läuft.
Werde dann später mal mein Glück versuchen, meine Scripte umzuschreiben.
Danke für die Info
hasta luego,
Miguel
Verfasst: 13.01.2007 15:12
von Sanchez17
Hola,
im moment klappt alles wunderbar, nach der änderung...nur an einer Stelle, meckert das Script, an dieser:
Code: Alles auswählen
$db->sql_query("SELECT id FROM " . development . " WHERE section = '$section'");
$menge = mysql_num_rows($db);
Dieser Code befindet sich in einer While Schleife, nach einer Abfrage.
Früher hat dies funktioniert, jetzt nach der änderung (also an der phpBB anpassung) bekomm ich eine Fehlermeldung.
Die erste Meldung war, dass "mysql_query" keine Funktion hatte, oder sowas ähnliches. Danach änderte ich "mysql_query" sowie "mysql_num_rows" in "sql_query" und "sql_num_rows"....
Doch die gleiche Meldung folgte...als ich es dann wieder auf "mysql" Umstellte, bekam ich eine andere Fehlermeldung:
Code: Alles auswählen
Fatal error: Maximum execution time of 60 seconds exceeded
Weiß jemand, was ich an dieser Abfrage ändern muss, damit es funktioniert?
Edit:
Ein Teil des Codes konnte ich erfolgreich umstellen...
Doch der Code nach der Variabeln $menge (siehe oben) will er nocch nicht annehmen...
Meldung:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Verfasst: 13.01.2007 16:30
von S2B
So muss es aussehen:
Code: Alles auswählen
$result = $db->sql_query("SELECT id FROM " . development . " WHERE section = '$section'");
$menge = $db->sql_numrows($result);
Zur Datenbank-Klasse vom phpBB: Welche Funktionen das Objekt $db unterstützt, kannst du in der db/xxx.php (z.B. mysql4.php) nachschauen.

Verfasst: 15.01.2007 10:25
von Sanchez17
Hola,
danke. Scheint geklappt zu haben.
hasta luego,
Miguel