Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Fragen zum Erstellen von Templates für webEdition.
diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon diballa » Mo 2. Nov 2020, 10:15

Hallo liebe webEdition-Gemeinde,

ich hatte, um Formularspam zu vermeiden, eine einfache Abfrage integriert, die nach Update von 7.0.4 auf 8.1.4 nicht mehr funktioniert. Nach dem Update läuft jetzt PHP 7.3.

Das Prinzip:
Im Formular wird ein Eingabefeld (url) per CSS vor den Menschen versteckt, Bots füllen dieses Feld aber i.d.R. aus. Nach Klick auf Send prüft eine Folgeseite, ob das betreffende Feld leer ist, wenn ja, wird das Formular versendet und die "Dankeseite", die im Formmailtag hinterlegt wird, wird gezeigt, wenn nicht, dann halt nicht.

Der Code auf der Prüfseite sieht folgendermaßen aus

Code: Alles auswählen

<we:ifVarEmpty name="url" match="url" type="request">
   <we:formmail/>
</we:ifVarEmpty>

SPAMBOT GO HOME!-()
Das hat bisher immer wunderbar funktioniert, jetzt bleibt aber die Prüfseite stehen. Hat wer ne Idee, warum das jetzt hakt? Bzw:
Wie kann ich es erreichen, dass nach Mailversand ne neue Seite geladen wird?

LG diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon mokraemer » Mo 2. Nov 2020, 16:04

wenn es stehen bleibt, hast du sicher einen Fehler im Log, oder?
webEdition-Kern-Entwickler

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon diballa » Di 3. Nov 2020, 09:32

Moin mokraemer,

hab ne Warnung:

Error type:

Warning

Error message:

Cannot modify header information - headers already sent by (output started at SECURITY_REPL_DOC_ROOT//webEdition/we/templates/layout/kontakt/formtest.php:6)

Script name:

Line number:

0

Backtrace:

#0 we_base_errorHandler::errorHandler called at [:]
#1 header called at [webEdition/we_formmail.php:181]
#2 we_base_formmail::redirect called at [webEdition/we_formmail.php:163]
#3 we_base_formmail::ok_page called at [webEdition/we_formmail.php:390]
#4 we_base_formmail::sendMail called at [webEdition/we_formmail.php:395]
#5 include_once(/is/htdocs/wp10922764_O7JP9ZQYZY/www/webEdition/we_formmail.php) called at [webEdition/we/include/we_classes/we_tags/we_tag_formmail.class.php:27]
#6 we_tag_formmail::tag called at [webEdition/we/include/we_tag.inc.php:138]
#7 we_tag called at [webEdition/we/templates/layout/kontakt/formtest.php:6]
#8 include(/is/htdocs/wp10922764_O7JP9ZQYZY/www/webEdition/we/templates/layout/kontakt/formtest.php) called at [webEdition/we/include/we_showDocument.inc.php:46]
#9 require(/is/htdocs/wp10922764_O7JP9ZQYZY/www/webEdition/we/include/we_showDocument.inc.php) called at [kontakt/formtest.php:21]

Source code around:

webEdition/we_formmail.php:
180: }
181: header('Location: ' . $url);
182: exit();
183: }
184:
185: private static function check_captcha(){

----------------------------------------------------------
webEdition/we_formmail.php:
162: if(($page = we_base_request::_(we_base_request::INT, 'ok_page')) && ($url = we_folder::getUrlFromID($page))){
163: self::redirect($url);
164: } else {
165: $msg = getHtmlTag('div', ['class' => 'defaultfont lowContrast'], 'Vielen Dank, Ihre Formulardaten sind bei uns angekommen! / Thank you, we received your form data!');
166: if(defined('FROM_WE_SHOW_DOC')){
167: echo $msg;

----------------------------------------------------------
webEdition/we_formmail.php:
389:
390: self::ok_page();
391: }
392:
393: }
394:

----------------------------------------------------------
webEdition/we_formmail.php:
394:
395: we_base_formmail::sendMail();

----------------------------------------------------------
webEdition/we/include/we_classes/we_tags/we_tag_formmail.class.php:
26: if(!$GLOBALS['we']['main']['doc']->InWebEdition){
27: include_once(WEBEDITION_PATH . 'we_formmail.php');
28: }
29: return '';
30: }
31:

----------------------------------------------------------
webEdition/we/include/we_tag.inc.php:
137: default:
138: $foo = class_exists($fn, false) && method_exists($fn, 'tag') ? $fn::tag($attribs, $content, $internal) : $fn($attribs, $content, $internal);
139: $GLOBALS['we_editmode'] = $GLOBALS['we']['editmode'] = $edMerk;
140: return we_weTag_tag::redirectTagOutput($foo, $nameTo, $to);
141: }
142: }

----------------------------------------------------------
webEdition/we/templates/layout/kontakt/formtest.php:
5: if(we_tag('ifVarEmpty',['name'=>'url','match'=>'url','type'=>'request'])){ ?>
6: <?= we_tag('formmail');
7: } ?>
8:
9: SPAMBOT GO HOME!-()<?php we_templatePostContent(false,true);
10: we_templatePost();
----------------------------------------------------------
...


LG diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon mokraemer » Di 3. Nov 2020, 10:59

Zeile 6 müßte die 1. oder 2. Zeile in deinem Template sein. Am Server ist Outputbuffering deaktiviert, daher startet die Ausgabe mit dem ersten Zeichen im Template. Ich schätze mal, das du im Template/Master irgendeine Ausgabe vorher hast, daher kann dann keine Weiterleitung per http-header gemacht werden, da das Header durch den Start bereits an den Browser gesendet wurde.
Falls du Leerzeichen zur Einrückung verwendest (was ich nicht empfehle), dann dürfte die Einrückung von "<we:formmail/>" das Problem sein, denn davor sind Leerzeichen, also eine Ausgabe.
Wir entfernen Zwischen den Tags bei der Generierung zwar Zeilenumbrüche und Tabs, aber eben keine Leerzeichen, da wir ja nicht entscheiden können ob die nur optisch sind, oder zur Ausgabe gehören.
webEdition-Kern-Entwickler

ThomasGoebe

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon ThomasGoebe » Di 3. Nov 2020, 11:24

Und in Code übersetzt heisst das:

Code: Alles auswählen

<we:ifVarEmpty name="url" match="url" type="request"><we:formmail/></we:ifVarEmpty>

SPAMBOT GO HOME!-()
So könnte es klappen.

diballa
Senior Member
Beiträge: 159
Registriert: Mo 17. Okt 2005, 15:58

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon diballa » Di 3. Nov 2020, 20:15

Hallo ihr Beiden,

das wars natürlich (Wieder diese vermalledeiten Leerzeichen).

Ich danke euch, liebe Grüße
diballa

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon mokraemer » Mi 4. Nov 2020, 10:12

Nimm Tabs :)
webEdition-Kern-Entwickler

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon statist » Mi 12. Mai 2021, 11:33

Hi zusammen, ich hab gestern einen halben Tag damit zugebracht, den Grund beim Versand via formmail für dieses Fehlermeldung zu finden: "Cannot modify header information - headers already sent by...." Ich schreib's mal in diesem relativ aktuellen Beitrag dazu, vielleicht kann's der ein oder andere brauchen, der auch bei Strato hostet: Einfach in die php.ini "engine = On" schreiben und der Tag ist gerettet :D

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Spamtest Formmail nach update auf 8.1.4 ohne Funktion

Beitragvon mokraemer » Mi 12. Mai 2021, 14:52

was bitte soll engine on bedeuten?
Das Problem hier entsteht, wenn einfach bereits etwas in den Output Stream geschrieben wird, dann werden die Header direkt generiert. Ich würde empfehlen das Outputbuffering zu verwenden (php.ini: output_buffering)
webEdition-Kern-Entwickler


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste