SQL in phpBB & Sicherheit

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

SQL in phpBB & Sicherheit

Beitrag 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
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Beitrag 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
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Beitrag 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
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Beitrag von Sanchez17 »

Hola,

danke. Scheint geklappt zu haben.

hasta luego,
Miguel
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Antworten

Zurück zu „Coding & Technik“