Thread in Board per externem Skript erstellen

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
Pred4t0r
Mitglied
Beiträge: 5
Registriert: 28.08.2008 16:22

Thread in Board per externem Skript erstellen

Beitrag von Pred4t0r »

Hi!

Ich suche eine Möglichkeit/Funktion, um von einem externem Skript aus (das also nicht zu phpBB3 gehört und nicht im Ordner liegt,etc) einen Thread in einem speziellen Forum zu erstellen. Z.B. soll nun ein News-Skript gleichzeitig einen Thread im News bereich des Forums posten.
Ich hatte mal irgendwo aufgeschnappt, dass die functions_posting.php dazu gedacht ist, das klappt bei mir aber irgendwie nicht.

Kann mir jemand sagen, wie man obige Funktion am einfachsten implementieren kann? Gibt es da eine funktionierende, fertige Version oder muss ich mich dazu erstmal mit der Datenbank-Struktur des Boards vertraut machen?
Benutzeravatar
FatFreddy
Mitglied
Beiträge: 1937
Registriert: 25.07.2004 15:52
Kontaktdaten:

Re: Thread in Board per externem Skript erstellen

Beitrag von FatFreddy »

Moin!
Pred4t0r hat geschrieben: Ich hatte mal irgendwo aufgeschnappt, dass die functions_posting.php dazu gedacht ist, das klappt bei mir aber irgendwie nicht.
Was genau klappt denn nicht?
Pred4t0r hat geschrieben:Kann mir jemand sagen, wie man obige Funktion am einfachsten implementieren kann?
Lesestoff
Hat mir geholfen, um Emails automatisch ins Forum posten zu lassen.

FatFreddy
Watch out where the huskies go, don't you eat the yellow snow...
Mehr dazu im Reiseforum InselTalk.de.
Tupperdosensucher schauen ins Geocachingforum.
Pred4t0r
Mitglied
Beiträge: 5
Registriert: 28.08.2008 16:22

Beitrag von Pred4t0r »

Hi,

Naja, der Include klappt schon nicht. wenn ich beispielsweise im phpBB3 Rootverzeichnis eine Datei erstelle mit folgendem Inhalt:

Code: Alles auswählen

<?php
include ("includes/functions_posting.php");
echo "Include erfolgreich!";
?>
und diese php-Datei dann im Browser aufrufe, passier garnichts. Also ich erhalte eine weiße Seite, das Skript führt das 'echo' quasi garnicht mehr aus. Fehlermeldungen bekomme ich aber auch nicht.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

Code: Alles auswählen

<?php

define('IN_PHPBB', true);

...
Sonst schlägt das Sicherheits-System von phpBB an und führt

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
	exit;
}
aus
kein Support per PN
Pred4t0r
Mitglied
Beiträge: 5
Registriert: 28.08.2008 16:22

Beitrag von Pred4t0r »

Hi,

Erstmal danke für den Tipp. Ich bin nun etwas weiter, funktionieren tut das Skript leider immernoch nicht. Ich habe folgenden Code:

Code: Alles auswählen

<?php
define('IN_PHPBB', true); 
include ("includes/functions_posting.php");
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// note that multibyte support is enabled here 
$my_subject	= utf8_normalize_nfc(request_var('my_subject', '', true));
$my_text	= utf8_normalize_nfc(request_var('my_text', '', true));

// variables to hold the parameters for submit_post
$poll = $uid = $bitfield = $options = ''; 

generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);

$data = array( 
	'forum_id'		=> 2,
	'icon_id'		=> false,

	'enable_bbcode'		=> true,
	'enable_smilies'	=> true,
	'enable_urls'		=> true,
	'enable_sig'		=> true,

	'message'		=> $my_text,
	'message_md5'	=> md5($my_text),
				
	'bbcode_bitfield'	=> $bitfield,
	'bbcode_uid'		=> $uid,

	'post_edit_locked'	=> 0,
	'topic_title'		=> $my_subject,
	'notify_set'		=> false,
	'notify'			=> false,
	'post_time' 		=> 0,
	'forum_name'		=> '',
	'enable_indexing'	=> true,
);

submit_post('post', $my_subject, '', POST_NORMAL, $poll, $data);
?>
Wenn ich dieses kript aufruge erscheint dann eine Meldung mit folgendem Hinweis:
General Error
SQL ERROR [ mysqli ]

Column 'topic_first_poster_name' cannot be null [1048]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
Offenbar verlangt das Skript also nach einem Username, dem der Post zugeordnet werden kann. In dem $data-Array - so übernommen aus phpBB3 Doku - taucht allerdings auch keiner auf.
Was mache ich hier falsch und wie kann ich es beheben? ^^
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

versuchs mal mit:

Code: Alles auswählen

$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
siehe:
http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten
kein Support per PN
Pred4t0r
Mitglied
Beiträge: 5
Registriert: 28.08.2008 16:22

Beitrag von Pred4t0r »

Ok, damit läuft das Skript schonmal, danke.
Allerdings möchte ich das Skript nicht direkt in phpBB3 Integrieren, also das Skript sollen z.b. auch Leute ausführen können, die nicht im Board gereggt sind.
Das Skript soll die Posts durch einen User erstellen, der im Board exisitert, quasi ein 'News-Bot', der alle Formulareingaben ins Board postet. Es exisitert also keine Session lokal auf dem rechner des Benutzers.
Momentan postet das Skript dann als 'Gast', was nicht ganz erwünscht ist, v.a. da die Beiträge in privaten Foren dazu erst freigegeben werden müssen.
Benutzeravatar
FatFreddy
Mitglied
Beiträge: 1937
Registriert: 25.07.2004 15:52
Kontaktdaten:

Beitrag von FatFreddy »

Pred4t0r hat geschrieben:Das Skript soll die Posts durch einen User erstellen, der im Board exisitert, quasi ein 'News-Bot', der alle Formulareingaben ins Board postet.
Die User-ID ist vermutlich bekannt.
Mit dieser die Daten des Users aus der DB abfragen und das User-Objekt damit füllen. Dann kann der Bot unter seiner ID posten.

FatFreddy
Watch out where the huskies go, don't you eat the yellow snow...
Mehr dazu im Reiseforum InselTalk.de.
Tupperdosensucher schauen ins Geocachingforum.
Pred4t0r
Mitglied
Beiträge: 5
Registriert: 28.08.2008 16:22

Beitrag von Pred4t0r »

So, ich hab es nun endlich richtig.

Ich habe das

Code: Alles auswählen

$user -> session_begin()
durch ein

Code: Alles auswählen

$user -> session_create(2,false,false,false)
ersetzt, wobei die '2' hier die entspr. User-Id ist.

Nochmal vielen Dank an alle!
Antworten

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