Funktion nach jedem Forenpost aufrufen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Marcwa19197
Mitglied
Beiträge: 15
Registriert: 10.01.2012 21:54

Funktion nach jedem Forenpost aufrufen

Beitrag von Marcwa19197 »

Hallo,
Ich habe folgendes Problem. Undzwar möchte ich nach jedem Threadstart & nach jedem Beitrag zu einem Thread eine Funktion aurufen, die dem User Punkte auf meiner verknüpfen Homepage gutschreibt.

Nun zu meinen Fragen:
1. Welche Funktion erledigt das Threadstarten bzw. das posten eines Beitrages?
2. Wie verbinde ich in dieser funktion mit einer weiteren datenbank?

Es handelt sich um folgenden Code, der jedesmal wenn ein User ein Thema startet bzw. auf ein Thema antwortet aufgerufen wird und dem jeweiligen User dadurch punkte gutschreiben soll.

Dies habe ich bereits "gebastelt":

Code: Alles auswählen

$dbhost_board = "localhost";
         $dbuser_board = "dbuser";
         $dbpwd_board = "dbpw";
         $db_board = "databasename";

         $link_board = mysql_connect($dbhost_board, $dbuser_board, $dbpwd_board);
         $select_db_board = mysql_select_db($db_board);
		 require_once("/var/www/xxx/include/includes/func/punktesys.php");
		 
		 $thread_poster = $user->data['username'];
		 $get_userid1 = mysql_query("SELECT id FROM ic1_user WHERE name = '".$thread_poster."'");
		 $get_userid = mysql_fetch_rows($get_userid1);
		 add_pkt($get_userid[0], '4', '1');
add_pkt ist die funktion, womit die puntke gutgeschrieben werden. vorher wird die id des users auf der Homepage anhand des Usernamens ermittelt..

Wo soll ich diesen Code jetzt am besten einfügen, so das er wie gesagt nach jedem Thread start & nach jedem Post ausgeführt wird?

danke schonmal im vorraus.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Funktion nach jedem Forenpost aufrufen

Beitrag von Miriam »

zu 1: Das sollte die function submit_post() in der \includes\functions_posting.php sein.
zu 2. Wieso lässt Du die Daten nicht in die phpBB3 Tabellen eintragen und dieser Werte durch Deine HP Scripte auslesen? Oder werden die Daten an mehreren Stellen aktualisiert?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Marcwa19197
Mitglied
Beiträge: 15
Registriert: 10.01.2012 21:54

Re: Funktion nach jedem Forenpost aufrufen

Beitrag von Marcwa19197 »

zu 2: ja sie werden an mehreren stellen aktualisiert, z.b. wenn ein user auf der hompage einen shoutbox eintrag macht bekommt er auch punkte :) wenn ich den code i nder submit_post einfüge, erhalte ich wenn ich ein thread starten will nur eine weiße seite.. :O
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Funktion nach jedem Forenpost aufrufen

Beitrag von Pyramide »

http://www.phpbar.de/w/Mein_PHP-Script_ ... %9Fe_Seite (erstes Google-Ergebnis für "PHP weiße Seite") hast du schon gelesen und befolgt?
KB:knigge
Marcwa19197
Mitglied
Beiträge: 15
Registriert: 10.01.2012 21:54

Re: Funktion nach jedem Forenpost aufrufen

Beitrag von Marcwa19197 »

habe den ersten fehler, der auftauchte gefixxt, nunkomtm folgender fehler:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

Table 'databasename.phpbb_topics' doesn't exist [1146]

SQL

INSERT INTO phpbb_topics (topic_poster, topic_time, topic_last_view_time, forum_id, icon_id, topic_approved, topic_title, topic_first_poster_name, topic_first_poster_colour, topic_type, topic_time_limit, topic_attachment) VALUES (2, 1343726095, 1343726095, 20, 0, 1, 'bnbmj', 'Marcwa19197', 'AA0000', 0, 0, 0)

BACKTRACE

FILE: [ROOT]/includes/db/mysql.php
LINE: 175
CALL: dbal->sql_error()

FILE: [ROOT]/includes/functions_posting.php
LINE: 1991
CALL: dbal_mysql->sql_query()

FILE: [ROOT]/posting.php
LINE: 1134
CALL: submit_post()
Databasename ist der name der datenbank, die ich ansprechen möchte, dies tu ich im moment so:

Code: Alles auswählen

			$thread_poster = $user->data['username'];
			ini_set( 'display_errors', true );
            error_reporting( E_ALL );

			
			$dbhost_board = "localhost";
            $dbuser_board = "dbuser";
            $dbpwd_board = "dbpw";
            $db_board = "databasename";

            $link_board = mysql_connect($dbhost_board, $dbuser_board, $dbpwd_board);
            $select_db_board = mysql_select_db($db_board);
            require_once("/var/www/xxx/include/includes/func/punktesys_board.php");
      
            
            $get_userid1 = mysql_query("SELECT id FROM ic1_user WHERE name = '".$thread_poster."'");
            $get_userid = mysql_fetch_row($get_userid1);
            add_pkt($get_userid[0], '4', '1');
			mysql_close($link_board);
Daher meien Frage, wie kann ich während der submit_post funktion, eine weiter datenbank 'ansprechen' ?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Funktion nach jedem Forenpost aufrufen

Beitrag von Pyramide »

Offenbar ist hier das mysql_connect fehlgeschlagen; da du den Fehler aber ignoriert hast, wurde dann das mysql_select_db einfach stillschweigend auf der letzten aktiven Datenbankverbindung (also der von phpBB) ausgeführt und diese ist damit nicht mehr brauchbar. Daher:

1. Lass dir immer alle Fehlermeldungen ausgeben: http://www.php-faq.de/q-sql-fehlerbehandlung.html .

2. Du musst bei allen Funktionsaufrufen immer alle optionalen Parameter übergeben, damit die Funktionen auch auf der richtigen Datenbankverbindung ausgeführt werden (z.B. bei mysql_select_db ( string $database_name [, resource $link_identifier]) den $link_identifier).

Ansonsten beachte auch http://www.php-faq.de/q-sql-injection.html (wg. Übernahme des Usernamens in deine SQL-Abfrage).
KB:knigge
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“