Fehlermeldung in Errorlog aus Formular Pifa

Alles rund um Module und Plugins in CONTENIDO 4.10.
Antworten
lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von lunsen_de » Di 11. Mai 2021, 06:55

Hallo,
kann mir jemand helfen, was die folgende Fehlermeldung im Errorlog zu bedeuten hat (Pfade sind ersetzt durch ...).

Die Seite des Kunden ist ein Contenido 4.10.1 mit PHP 7.3
Es sind einige Formulare eingesetzt. Die Errorlog vergrößert sich dadurch schnell.

Code: Alles auswählen

[2021-05-10 18:10:13] [   ERR    ] unbekannte Anfragemethode
[2021-05-10 18:10:13] [   ERR    ] #0 /.../.../.../.../httpdocs/contenido/plugins/form_assistant/classes/class.content.type.pifa_form.php(763): PifaAbstractFormModule->render(true)
#1 /.../.../.../.../httpdocs/contenido/includes/frontend/include.front_content.php(762) : eval()'d code(181): cContentTypePifaForm->buildCode()
#2 /.../.../.../.../httpdocs/contenido/includes/frontend/include.front_content.php(762): eval()
#3 /.../.../.../.../httpdocs/cms/front_content.php(43): include('/var/www/vhosts...')
#4 {main}
Danke
Grüße larslunsen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von xmurrix » Mi 12. Mai 2021, 09:27

Hallo larslunsen,

die Fehlermeldung kommt zustande, weil die Seite, in der das Formular vorkommt, nicht mit einem GET oder POST Request aufgerufen wird.

Schau dir mal in der contenido/plugins/form_assistant/classes/class.pifa.abstract_form_module.php die render() Funktion an, die Fehlermeldung wird dort erzeugt.

Code: Alles auswählen

                $msg = Pifa::i18n('UNKNOWN_REQUEST_METHOD');
                throw new PifaException($msg);
Entweder läuft das Skript/die Seite in einem CLI-Kontext, also in der Kommandozeile, oder es handelt sich um ein HEAD-Request und die Ausgabepufferung in PHP ist aktiv.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von lunsen_de » Mi 12. Mai 2021, 12:05

Hallo xmurrix, danke für die Antwort.

Aber so richtig hilft mir das nicht weiter. Habe mir den Code angesehen, aber es ist ja die Originaldatei aus der 4.10. Ich habe an all diesen Dingen nichts verändert. Normales Formular usw.

Wie kann man da jetzt weitersuchen?

Meinst du ein Robot hat das Formular versucht abzusenden und dabei nicht Post oder Get verwendet und damit den Fehler erzeugt (oder Ähnliches)?
Das mit der Kommandozeile oder Ausgabepufferung verstehe ich nicht.

Ich habe keine Ahnung was ich gegen diese Fehlermeldung tun kann.

Grüße larslunsen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von xmurrix » Fr 14. Mai 2021, 10:26

Hallo larslunsen,

es kann sein, dass eine gewisse Konstellation, PHP-/Server-Einstellungen oder Bot-Anfragen, diese Logeinträge verursachen. Da der von dir beschriebene Fall nicht sehr oft vorkommt, bei mir ist das nie geschehen und mir ist auch nicht bekannt, dass andere Benutzer das Problem hatten, muss man davon ausgehen, dass es sich um einen speziellen Einzelfall handelt, auch wenn der Code Original ist und du nichts daran geändert hast.

Überprüfe z. B. die Server-Logs, ob zu gleichen Zeiten, in denen die Fehlermeldungen in der errorlog.txt auftauchen, auch irgendwelche HTTP-Anfragen gezielt auf Seiten gingen, in denen Formulare vorkommen. Viele Bots versuchen nämlich über Formulare das System anzugreifen oder Spam zu verschicken.

Du kannst aber auch in der Datei "class.pifa.abstract_form_module.php" die eine Zeile auskommentieren, damit sie keinen Fehler wirft und dadurch die errorlog.txt nicht zugemüllt wird. Ich würde das aber nicht machen. Wenn die errorlog.txt mit diesen Meldungen voll ist, kann das ein Hinweis darauf sein, dass diese Formularseiten sehr oft Angefragt werden, vermutlich ein Hinweis auf Spam-/Angriffs-Versuche...

Zur Kommandozeile:
Wenn man ein Skript in der Kommandozeile ausführt, läuft es nicht im Kontext des Web-Servers (Apache, nginx). Dann gibt es keine HTTP Anfragen und somit auch keine HTTP-Methode. Sollte das CONTENIDO Frontend also über die Kommandozeile ausgeführt werden, mit der ID des Artikels, in der das Formular vorkommt, dann kann das Formular die HTTP-Methode nicht ermitteln und wirft somit einen Fehler.

Zur Ausgabepufferung:
Ist in PHP die Ausgabepufferung aktiv, z. B. mit der PHP-Funktion ob_start(), und es werden HTTP HEAD Anfragen gesendet, wird die Ausführung des Skriptes nicht beendet. Dann kann es sein, dass der Code des Artikels, in der das Formular vorkommt, ausgeführt wird und das Formular einen Fehler wirft, weil es eine GET- oder POST-Anfrage erwartet.

Eine mögliche Lösung:
Du kannst das recht einfach lösen, indem du im Modulcode (Modulausgabe) eine Überprüfung wie folgt einbaust:

Code: Alles auswählen

<?php

if (isset($_SERVER) && !empty($_SERVER['REQUEST_METHOD']) && in_array($_SERVER['REQUEST_METHOD'], ['GET', 'POST'])) {
    // Modulcode hier...
}

?>
Dann wird der Code des Formulars ausgeführt, wenn es sich nur um eine GET- oder POST-Anfrage handelt und es tauchen keine Einträge in der errorlog.txt. Die Ursache des Problems ist damit aber nicht gelöst.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von lunsen_de » Di 1. Jun 2021, 10:56

Hallo xmurrix, entschuldige die Späte Antwort und danke für deine ausführlichen Erläuterungen.

Ich habe mir die Logs mal etwas genauer angesehen (access logs) und im Zeitraum der Fehlermeldung viele Zugriffe einer IP in kürzester Zeit auf viele Seiten der Webseite gefunden. Daher gehe ich von einem Bot aus. Warum der Zugriff auf die Formularseiten den Fehler erzeugt hat, kann ich nicht sagen.

Auf jeden Fall kann ich sagen, dass seit dem Update auf 4.10 und dem Einsatz der google recaptcha in den Formularseiten die Fehlermeldung kaum noch auftaucht.

Nochmal kutz du deinem Vorschlag die Modulausgabe zu erweitern: da es sich um das Pifa Plugin handelt, wüsste ich nicht wie man das einbaut oder meinst du man schachtelt es um das form_contact Modul aussen herum?

Grüße larslunsen

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Fehlermeldung in Errorlog aus Formular Pifa

Beitrag von xmurrix » Di 1. Jun 2021, 12:36

Hallo larslunsen,

für die Ausgabe des Pifa Plugin Formulars braucht man ja auch ein Modul, z. B. das Modul "form_contact".

Hier kann man in der Modulausgabe wie folgt anpassen, damit das Formular nur bei GET-/POST-Anfragen ausgegeben wird:

Code: Alles auswählen

<?php

if (isset($_SERVER) && !empty($_SERVER['REQUEST_METHOD']) && in_array($_SERVER['REQUEST_METHOD'], ['GET', 'POST'])) {
    echo "CMS_PIFAFORM[1]";
}

?>
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Antworten