Seite 1 von 1

fehlverhalten bei kontaktmodul

Verfasst: Fr 31. Aug 2007, 09:12
von rene04
Hallo,

ich habe das Kontaktmodul von Andreas Lindner im Einsatz und wundere mich hier etwas. Wenn ich auf absenden klicke erscheint dort wo eigentlich das modul ist ein antworttext a la: die anfrage wurde an uns übermittelt. diesen text habe ich aber auch so auf einer neuen Seite wo er auch hingehört.

dem code nach zu urteilen soll das selbe modul nach absendn wieder aufgebaut werden, tut es aber offensichtlich nicht :(

Code: Alles auswählen

ausgabe:

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Contact form
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business
* Created     :     12.08.2005
************************************************/

#Includes
cInclude("classes", "class.phpmailer.php");
cInclude('classes', 'contenido/class.client.php');

if (!isset ($_POST['send'])) 
{       
	#Form has not been sent yet
	cInclude('classes', 'class.article.php');
	cInclude('classes', 'class.template.php');

	#Create contact form
	echo '<form name="callbackform" id="callbackform" method="post" action="'.$sess->url("front_content.php?idcatart=14").'">';
	echo '<input type="hidden" name="send" value="1">';

	if (!is_object($tpl)) 
        {
		$tpl = new Template;
	}
        $tpl->set("s", "HEADER", mi18n("Wir rufen Sie gerne zurück..."));
	$tpl->set("s", "NAME", mi18n("Name"));
	$tpl->set("s", "TELEFON", mi18n("Telefon"));
	$tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
	$tpl->set("s", "ABSCHICKEN", mi18n("Abschicken..."));

	$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/callbackformular.html");
	echo '</form>'; 
}
elseif ($_POST['send'] == 1) 
{
        echo 'test';
        #Create contact form
	echo '<form name="callbackform" id="callbackform" method="post" action="'.$sess->url("front_content.php?idcatart=14").'">';
	echo '<input type="hidden" name="send" value="1">';

	if (!is_object($tpl)) 
        {
		$tpl = new Template;
	}
        $tpl->set("s", "HEADER", mi18n("Wir rufen Sie gerne zurück..."));
	$tpl->set("s", "NAME", mi18n("Name"));
	$tpl->set("s", "TELEFON", mi18n("Telefon"));
	$tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
	$tpl->set("s", "ABSCHICKEN", mi18n("Abschicken..."));

	$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/callbackformular.html");
	echo '</form>';
echo "<br>";   
}
?>
zu begutachten ist das unter www.mobdat.de

hat jemand ne idee wie ich das korrigieren kann?

Verfasst: Fr 31. Aug 2007, 09:31
von kummer
das braucht nicht korrigiert zu werden und ist so durchaus richtig. das modul muss wieder ausgeführt werden, damit es den email-versand ausführen kann. eine weiterleitung ist dann normalerweise - wenn es auch zugegeben besser wäre - nicht möglich, da schon eine ausgabe an den browser erfolgt ist.

was du machten kannst, ist folgendes:

(1) in der front_content.php am anfang ein ob_start() und am ende ein ob_end_flush() einfügen. das schaltet die ausgabenpufferung ein.

(2) im kontaktformularmodul den email-versand belassen, aber anstelle des textes eine weiterleitung vornehmen. dazu musst du zunächst mit ob_end_clean() die ausgabepufferung ausschalten und verwerfen und anschliessend eine weiterleitung mit header("Location: http://...) vornehmen und das script mit exit() beenden.

Verfasst: Fr 31. Aug 2007, 12:04
von rene04
hmmm, den text will ich aber auf einer neuen seite anzeigen lassen. halt nur nicht da wo ursprünglich das modul war/ist.

gruesse

Verfasst: Fr 31. Aug 2007, 12:06
von kummer
den text hast du dann, wo immer du willst. nach dem versand des emails erfolgt einfach ein redirect (mit header location). der besucher sieht nach dem versand einfach eine ganz normale seite, die du stylen kannst, ganz wie du möchtest.