Seite 1 von 1

PHP-Code in Module-templates

Verfasst: Di 19. Mär 2013, 12:04
von prepress89
Hallo Community,

ich bin gerade dabei das Kontaktformular für einen Kunden individueller zu programmieren. Heißt ich möchte über einen Link zum Kontaktformulare bereits Varibalen mit übergeben. Ich glaube ich habe die Lösung schon gefunden, allerdings stehe ich trtozdem vor einem Problem: Ich habe das gefühl dass eingebaute PHP-Code-Schnipsel im Template nicht funktionieren.

Code: Alles auswählen

<textarea name="Anliegen" id="Anliegen"><?php echo $_GET['info'];?></textarea>
Hier wollte ich mit...

Code: Alles auswählen

front_content.php?idcatart=40&info=Text
...vordefinierten Text - Linkspezifisch - einfügen lassen.

Ist dies evtl mit den {INFO}-Varibeln im Zusammenspiel mit der Modul-Ausgabe zu handeln?
Bin leider kein PHP-Spezialist.. :)

Vielen Dank!

Gruß alex

Re: PHP-Code in Module-templates

Verfasst: Mi 20. Mär 2013, 16:22
von Faar
Das Kontaktformular benützt ein Template und dort die Platzhalter wie z.B. {link} für Variable Inhalte.
Statt <?php echo $_GET['info'];?> würde ich dort {info} einfügen und im Kontakformular-Module dann das Programm unterbringen, das dieses {info} mit Inhalten füllt.
Dabei ist im Modul schon alles da für die Template-Verarbeitung, weil die anderen Platzhalter ja schon bestückt werden.

Nur das was in {info} rein muss, das muss man schon selbst im Modul programmieren.
Angenommen der Link enthält am Ende folgendes: ...?variable=xxx
Dann kann man eventuell mit $_GET['variable'] diese im (output)-Modul abfragen und dem Template übergeben.
Aber ich hab das mit Contenido noch nie so probiert, weiß nicht ob es klappt.

Re: PHP-Code in Module-templates

Verfasst: Mi 27. Mär 2013, 11:48
von prepress89
Wenn ich nun im Template ein {INFO} eingebe, langt es dann wenn ich - wie bei allen anderen "Formularnamen" - folgendes beim Modulcode hinzufüge:

Code: Alles auswählen

$tpl->set("s", "INFO", mi18n($_GET['info']));
anstatt z.B.

Code: Alles auswählen

$tpl->set("s", "INFO", mi18n(Information);
Oder hab ich es mir so zu einfach gemacht.. :D Bin leider mit PHP allgemein nicht so fit.. versuch mir immer irgendwie was durch Schnipsel zusammenzureimen..

Gruß

//edit: Wohooo, so hat es funktioniert!!! :))

Re: PHP-Code in Module-templates

Verfasst: Mi 27. Mär 2013, 17:32
von Spider IT
prepress89 hat geschrieben:

Code: Alles auswählen

$tpl->set("s", "INFO", mi18n($_GET['info']));
Nimm noch das mi18n raus, das ist für Modulübersetzungen:

Code: Alles auswählen

$tpl->set("s", "INFO", $_GET['info']);
Gruß
René

Re: PHP-Code in Module-templates

Verfasst: Di 2. Apr 2013, 16:33
von prepress89
Hab ich, danke! Wars ja doch nicht so schwer. :)

Re: PHP-Code in Module-templates

Verfasst: Di 2. Apr 2013, 18:24
von xmurrix
Für was wird der Wert in

Code: Alles auswählen

$_GET['info']
verwendet?

Man sollte nicht einfach Werte, die von außen übergeben werden, ohne vorherige Prüfung übernehmen. Mach wenigstens ein

Code: Alles auswählen

$info = filter_input(INPUT_GET, 'info', FILTER_SANITIZE_SPECIAL_CHARS);
$tpl->set("s", "INFO", $info);
um sicherzustellen, dass kein ungewünscher Inhalt ausgegeben wird...

Gruß
xmurrix

Re: PHP-Code in Module-templates

Verfasst: Mi 3. Apr 2013, 08:43
von Spider IT
Das halte ich für überflüssig beim zurückschreiben ins input-Feld.
Später, bei der Verarbeitung, kann man das machen.

Gruß
René

Re: PHP-Code in Module-templates

Verfasst: Mi 24. Apr 2013, 20:39
von dominik.ziegler
Insbesondere auch bei einer Ausgabe des Wertes im Frontend / Web sollten diese geprüft werden, bevor sie ausgeliefert werden. Auf diese Weise kann man sich auch Sicherheitslücken in das System einschleusen!
Überflüssig ist das also ganz bestimmt nicht!

Re: PHP-Code in Module-templates

Verfasst: Fr 26. Apr 2013, 06:56
von Oldperl
Hallo,

stimme Dominik zu, GET, POST oder REQUEST sollten grundsätzlich vor der Verarbeitung geprüft werden. Egal ist für mich dabei ob man sie direkt wieder ausgibt oder z.B. zur Weiterverarbeitung in der DB nutzt. Egal wo, es stellt IMO einen potenzielle Sicherheitslücke dar sie nicht zu prüfen.

Gruß aus Franken

Ortwin