Seite 1 von 2

[3.2] $_POST abrufen

Verfasst: 04.01.2018 16:22
von T40
In phpbb 3.2 sind ja bekanntlich die Superglobals deaktiviert. Ich habe mein phpbb Forum in meine Seite eingebunden und dies hat zur Folge, dass ich auch dort in meinen Skripts nicht auf die Superglobals zugreifen kann.

Ich möchte gerne ein Formular verarbeiten. Mir ist klar, dass ich mit $request->variable('feldname', '') die einzelnen Formularfelder erhalte, was dem bisherigen $_POST['feldname'] entspricht. Doch wie bekomme ich alle Felder in einem Array, wie das zuvor mit $_POST möglich war?

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 16:41
von canonknipser

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 16:55
von T40
Danke. :)

Auf diese Seite bin ich auch schon gestossen, brauchte aber einige Anläufe um herauszufinden, wie dieser Request nun aussehehen muss, um den $_POST Array zu erhalten. Für Eilige, die künftig dasselbe Problem haben:

Code: Alles auswählen

$post = $request->get_super_global($super_global = \phpbb\request\request_interface::POST);
$post ist dann der neue Array.

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 16:56
von Mahony
Hallo
Oder eben so >>> Was tun bei Illegal use of $_SERVER Fehlermeldung

Grüße: Mahony

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 17:03
von T40
Was ist eigentlich die Überlegung hinter der Deaktivierung der Superglobals?

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 17:11
von Mahony
Hallo
T40 hat geschrieben:Was ist eigentlich die Überlegung hinter der Deaktivierung der Superglobals?
Der Hauptgrund war wohl, Sicherheitsrisiken zu minimieren.

Grüße: Mahony

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 18:04
von canonknipser
Das

Code: Alles auswählen

$post = $request->get_super_global(\phpbb\request\request_interface::POST)
sollte reichen - außer du willst zusätzlich noch eine Variable $super_global mit dem Interface-Objekt bestücken ;)

@mahony: Klar kann man die ausschalten, aber sauberer ist es, die entsprechenden Funktion zu verwenden ;)

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 20:21
von Dr.Death

Re: [3.2] $_POST abrufen

Verfasst: 04.01.2018 20:38
von T40
Danke!

Re: [3.2] $_POST abrufen

Verfasst: 23.01.2018 12:03
von T40
Auf den externen Seiten klappt das mit dem request interface ganz gut, jetzt wollte ich aber in der Navigation, die ich auch im Forum eingebunden habe, die SERVER Variable abfragen:

Code: Alles auswählen

$srv = $request->get_super_global(\phpbb\request\request_interface::SERVER);
Nun erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Uncaught Error: Call to a member function get_super_global() on null in ***SERVERPFAD***/layout/navigation.php:10 Stack trace: 
#0 ***SERVERPFAD***/forum/cache/production/twig/b5/b50304cb1f98e524053af098979b932520063d3b9f09bbb8d7dc9cbb572eb2eb.php(292): include() 
#1 ***SERVERPFAD***/forum/vendor/twig/twig/lib/Twig/Template.php(432): __TwigTemplate_caed0ad3432c55c0d8f0f90b0ade1aeca11598c85e5590a79be22d4a99492f20->doDisplay(Array, Array) 
#2 ***SERVERPFAD***/forum/vendor/twig/twig/lib/Twig/Template.php(403): Twig_Template->displayWithErrorHandling(Array, Array)
#3 ***SERVERPFAD***/forum/cache/production/twig/24/24825afb6c33a5adb07886c26cece644ad236417b2bba4166269e7c715c4a0ad.php(46): Twig_Template->display(Array) 
#4 ***SERVERPFAD***/forum/vendor/twig/twig/lib/Twig/Template.php(432): __TwigTemplate_e7125bf368bbe81a8309be5317ea41521f3936b0ffc699d350e23c8771e0d325->doDisplay(Array, Array) 
#5 in ***SERVERPFAD***/layout/navigation.php on line 10
Auf den anderen Seiten klappt die Navigation einwandfrei. Kann mir jemand weiterhelfen?