[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
FIXED: Formulargenerator für 4.0 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

FIXED: Formulargenerator für 4.0

21. Okt 2007, 17:26

Hallo,

ich hab eben festgestellt, dass der Formulargenerator aus der 3.2er Demo nicht mehr mit der 4er Version funktioniert. Gibt es da bereits eine Lösung? Oder weiß jemand was ich verändern muss, dass er wieder funktioniert?

Vielen Dank,
Zonk
Zuletzt geändert von Markus.Lorch am 22. Okt 2007, 21:47, insgesamt 2-mal geändert.

harrybrader

21. Okt 2007, 18:39

...
Zuletzt geändert von harrybrader am 25. Mär 2017, 20:41, insgesamt 1-mal geändert.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

21. Okt 2007, 20:02

Hallo Harrybrader,

danke für den Link. Den hab ich wohl übersehen.

Leider gab es da auch noch keine funktionierende Lösung. Aber das ganze hat mich auf eine Idee gebracht. Und ich hab tatsächlich nun ein funktionierendes Modul.

Ich hab zwar weder rex_get(), rex_post() und rex_request() verwendet, da mir die Anwendung auf die Schnelle unklar war... und auch rex_mailer() gibts gar nicht - bei mir jedenfals.

Aber es funktioniert. Es steht jedem Frei das besser zu machen... ich bin kein Profi.

Modulausgabe: ACHTUNG: Addon "phpmailer" muss installiert + aktiviert sein!

Code: Alles auswählen

<?php
$rex_form_data = <<<End
REX_HTML_VALUE[3]
End;

$mailbody = <<<End
REX_HTML_VALUE[5]
End;

$formname = "kontaktform";
$submitlabel = "REX_VALUE[7]";
$style = ' style="color:#f00;"';


$formoutput = array();
$warning = array();
$form_elements = array();
$form_elements = explode("\n", $rex_form_data);

for($i=0;$i<count($form_elements);$i++){

	$element = explode("|", $form_elements[$i]);
	$AFE[$i] = $element;

	switch($element[0]){

		case "headline":
			$formoutput[] = '<p>'.$element[1].'</p>';
		break;

		case "text":
			if($_POST['FORM'][$formname]["el_".$i] == "" && !$_POST['FORM'][$formname][$formname."send"]){ 
				$_POST['FORM'][$formname]["el_".$i] = trim($element[3]); 
			}
		
			if($element[2] == 1 && (trim($_POST['FORM'][$formname]["el_".$i]) == "" || trim($_POST['FORM'][$formname]["el_".$i]) == trim($element[3])) && $_POST['FORM'][$formname][$formname."send"] == 1){ 
				$warning["el_".$i] = $style; 
			}
			
			$formoutput[] = '
				<label class="text" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				<input type="text" class="text" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.htmlentities(stripslashes($_POST['FORM'][$formname]["el_".$i])).'" /><br />
				';
		break;
		
		case "textarea":
			if($_POST['FORM'][$formname]["el_".$i] == "" && !$_POST['FORM'][$formname][$formname."send"]){ 
				$_POST['FORM'][$formname]["el_".$i] = $element[3]; 
			}
		
			if($element[2] == 1 && (trim($_POST['FORM'][$formname]["el_".$i]) == "" || trim($_POST['FORM'][$formname]["el_".$i]) == trim($element[3])) && $_POST['FORM'][$formname][$formname."send"] == 1){ 
				$warning["el_".$i] = $style; 
			}
		
			$formoutput[] = '
				<label class="textarea" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				<textarea class="textarea" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" cols="80" rows="10">'.htmlentities(stripslashes($_POST['FORM'][$formname]["el_".$i])).'</textarea><br />
				';
		break;
	
	
		case "select":

			$SEL = new select();
			$SEL->set_name("FORM[".$formname."][el_".$i."]");
			$SEL->set_id("el_".$i);
			$SEL->set_size(1);
			$SEL->set_style(' class="select"');
		
			if($_POST['FORM'][$formname]["el_".$i] == "" && !$_POST['FORM'][$formname][$formname."send"]){ 
				$SEL->set_selected($element[3]); } else { $SEL->set_selected($_POST['FORM'][$formname]["el_".$i]); 
			}

			foreach(explode(";", trim($element[4])) as $v){
				$SEL->add_option( $v, $v);
			}
		
			if($element[2] == 1 && trim($_POST['FORM'][$formname]["el_".$i] )== "" && $_POST['FORM'][$formname][$formname."send"] == 1){ 
				$warning["el_".$i] = $style; 
			}
		
			$formoutput[] = '
				<label class="select" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				'.$SEL->out().'<br />';
		break;
			
		case "checkbox":
		
			if(	(trim($_POST['FORM'][$formname]["el_".$i] )== "1" ) || ($_POST['FORM'][$formname]["el_".$i] == "" && !$_POST['FORM'][$formname][$formname."send"] && $element[3] == 1)){ 
				$checked = ' checked="checked"'; 
				$hidden="";
			} 
			else { 
				$checked = ""; 
				$hidden = '<input type="hidden" name="FORM['.$formname.'][el_'.$i.']" value="0" /><br />'; 
			}

			if($element[2] == 1 && trim($_POST['FORM'][$formname]["el_".$i]) == "" && $_POST['FORM'][$formname][$formname."send"] == 1){ 
				$warning["el_".$i] = $style; 
			}
		
			$formoutput[] = 
					$hidden.'
					<input type="checkbox" class="checkbox" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="1" '.$checked.' />
					<label class="checkbox" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label><br />
					';
		break;
	}
}

$out = '
	<div id="form-module">
	<form action="'.rex_getUrl($this->getValue("article_id")).'" method="post">
		<fieldset>

		<legend>'.$formname.'</legend>
		<input type="hidden" name="FORM['.$formname.']['.$formname.'send]" value="1" />';

foreach($formoutput as $v){
	$out .= '
		<div class="element">'.$v.'</div>';
}
$out .= '
		<div class="element">
			<input type="submit" name="FORM['.$formname.']['.$formname.'submit]" value="'.$submitlabel.'" class="submit" />
		</div>
		</fieldset>
	</form>
	</div>';

if($_POST['FORM'][$formname][$formname."send"] == 1 && count($warning)==0){ 
        $mail = new PHPMailer();
	$mail->AddAddress("REX_VALUE[1]");
	$mail->From = "REX_VALUE[2]";
	$mail->Subject = "REX_VALUE[4]";
	
	foreach($_POST['FORM'][$formname] as $k=>$v){
		if($k != $formname."submit" && $k != $formname."send")
		$mailbody .= $AFE[ereg_replace("el_","",$k)][1]." ".stripslashes($v)."\n";
	}
	
	$mail->Body = $mailbody;
	$mail->Send();
	
	print '<div id="form-module-thanks">'."REX_VALUE[6]".'</div>';


} 
else {
	print $out;
}
?>
Zuletzt geändert von Markus.Lorch am 22. Okt 2007, 13:55, insgesamt 2-mal geändert.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

21. Okt 2007, 21:35

Hi Zonk,

was hast du genau geändert?

Gruß,
Markus

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

21. Okt 2007, 22:23

Hallo Markus,

Letztlich habe ich überall $FORM durch $_POST['FORM'] ersetzt.

Beispiel: Orginal

Code: Alles auswählen

if($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"])
{ 
  $FORM[$formname]["el_".$i] = trim($element[3]); 
}
Beispiel: Nachher

Code: Alles auswählen

if($_POST['FORM'][$formname]["el_".$i] == "" && !$_POST['FORM'][$formname][$formname."send"])
{ 
  $_POST['FORM'][$formname]["el_".$i] = trim($element[3]); 
}
Dann hab ich die Mailfunktion selbst mit der php Funktion mail() geflickt.

Code: Alles auswählen

if($_POST['FORM'][$formname][$formname."send"] == 1 && count($warning)==0){
   $f_Empfaenger = "REX_VALUE[1]";
   $f_Absender = "REX_VALUE[2]";
   $f_Betreff = "REX_VALUE[4]";
   
   foreach($_POST['FORM'][$formname] as $k=>$v){
      if($k != $formname."submit" && $k != $formname."send")
      $mailbody .= $AFE[ereg_replace("el_","",$k)][1]." ".stripslashes($v)."\n";
   }
   
   $f_Inhalt = $mailbody;
   

        mail($f_Empfaenger, $f_Betreff, $f_Inhalt, "From: $f_Absender");
   
   print '<div id="form-module-thanks">'."REX_VALUE[6]".'</div>';

}
else {
   print $out;
}
Das war dann auch schon alles. Ich selbst bin mit der Lösung nicht so ganz zufrieden, da ich sie als Unsauber empfinde. Aber zwei grobe Tests haben funktioniert.

Grüße,
Zonk

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 13:53

So.

Ich hab jetzt festgestellt, dass man ja das PHPmailer Addon installieren sollte...^^ Da hab ich mal wieder nicht bis zu Ende gedacht.

Also:

Der Mailteil funktioniert nun (vorausgesetzt das phpmailer Addon ist installiert und aktiviert) mit folgendem nur etwas geringer verändertem Code:

Code: Alles auswählen

if($_POST['FORM'][$formname][$formname."send"] == 1 && count($warning)==0){ 
        $mail = new PHPMailer();
	$mail->AddAddress("REX_VALUE[1]");
	$mail->From = "REX_VALUE[2]";
	$mail->Subject = "REX_VALUE[4]";
	
	foreach($_POST['FORM'][$formname] as $k=>$v){
		if($k != $formname."submit" && $k != $formname."send")
		$mailbody .= $AFE[ereg_replace("el_","",$k)][1]." ".stripslashes($v)."\n";
	}
	
	$mail->Body = $mailbody;
	$mail->Send();
	
	print '<div id="form-module-thanks">'."REX_VALUE[6]".'</div>';


} 
else {
	print $out;
}
Ich hab das auch weiter oben schon korrigiert.[/code]

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 14:33

Vielen Dank. Habe die Änderungen gerade an unserem Modul durchgeführt und im Download zur Verfügung gestellt.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 14:58

Danke Thomas,

Thomas, ich muss grad feststellen, dass deine Version bei mir nicht zündet. Ich weiß aber noch nicht so genau warum... Scheinbar scheint er wieder nicht in die IF-Abfrage reinlaufen. Das Formular ist direkt nach Absenden wieder leer.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 15:54

Hmmm... ich denke rex_mailer ist das gleiche wie phpmailer ...
Hast Du das PHP_Mailer_Addon aktiviert?

Evtl. habe ich eine Änderung übersehen?
Bei mir funktioniert's.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 16:09

Oh^^ Da hab ich eben meinen Beitrag Editiert.... sollt ich drauf verzichten in Zukunft.

Also das rex_mailer() problem hab ich gelößt. Ich musste natürlich das AddOn auf "mail" konfigurieren. Das scheint bei PHPMailer wohl nicht nötig gewesen zu sein.

Aber nu steh ich vor dem leeren Formular. Vllt magst du dir das mal an sehen.

http://rex4.red-line.org/73/0/Kontakt-2.html
Das ist quasi das Formular so wie ichs von dir runtergeladen hab.
Und sobald ich was reinschreib und absende bin ich wieder vor dem leeren Formular. Während unter dem Link "Kontakt" meine Veränderung läuft. Allerdings kann ich auch nicht erkennen wo der Unterschied liegt.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 16:23

Hmmm....
benutzt Du ein spezielles Addon für Dein Rewriting?
Vielleicht liegt es daran ..

$_SERVER["REQUEST_URI"] ersetze das durch
rex_getUrl($this->getValue("article_id"))

evtl. klappt es dann ...
Bei mir funktionieren beide Varianten, nutze aber das gewöhnliche Rewrite von Redaxo.

Auch habe ich einen weiteren Unterschied bemerkt:
Mein Formular:
<input type="hidden" name="FORM[][send]" value="1" />

Dein Formular:
<input type="hidden" name="FORM[kontaktform][kontaktformsend]" value="1" />

Hast Du im Feld Formularüberschrift was eingegeben?
Bitte trage da was ein und teste nochmal.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 16:36

klxm hat geschrieben:Hast Du im Feld Formularüberschrift was eingegeben?
Bitte trage da was ein und teste nochmal.
Au verdammt^^. Das wars. Dachte das brauch ich nicht *g*
Der Mod_Rewrite ist der von Redaxo. Hab den nur geringfügig angepasst und auch ohne hat es nicht funktioniert.

Sollte man vielleicht als Hinweis dazuschreiben, dass man das Feld Formularüberschrift benötigt. Nicht das das noch mehr passiert.

Vielen Dank Thomas.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

22. Okt 2007, 16:37

Hi,
klxm hat geschrieben:Hmmm... ich denke rex_mailer ist das gleiche wie phpmailer ...
Wenn man $mailer = new rex_mailer(); verwendet anstatt $mailer = new phpmailer(); dann verwendet REDAXO die Einstellungen die man via Backend hinterlegen kann als DefaultWerte.

Gruß,
Markus

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 16:39

Ah, gut zu wissen. Demnach kann ich getrost auf die Charset-Einstellung im Formular verzichten. Was meint Ihr?

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 16:58

Sollte man vielleicht als Hinweis dazuschreiben, dass man das Feld Formularüberschrift benötigt. Nicht das das noch mehr passiert.
Ist erledigt. Wenn die Aktionen funktionieren, werde ich eine entsprechende Aktion erstellen, die das prüft.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 20:30

So Thomas,

ich melde mich noch mal. Ich hab das Script noch dahingehend modifiziert, dass nun rex_post(); verwendet wird. Funktionieren tut das ganze so. Wie ich das anders lösen könnte ist mir spontan nicht eingefallen.

Code: Alles auswählen

<?php
#### KLXM Kontaktformular 3.0####################
#  Stand 22.10.2007
#  Angepasst an Redaxo 4.0
#  Danke an Zonk
#####################################
# Danke-Meldung ist über TINYMCE pflegbar
#####################################
# Stand: 22.07.2007
# Kleine Korrekturen
#
# Stand: 17.05.2007
# CheckboxPflichtfeld gefixt, danke an drachenbau
#
# :: Sonstige Änderungen gegenüber Original aus Demo
#
# Ausgabe per htmlentities durch
# htmlspecialchars ausgetauscht.
# Fehlermeldung funktioniert jetzt auch unter utf-8
# mit Umlauten
# Kodierungsauswahl hinzugefügt
# Ausgabe in Email optimiert.
# Validierung hinzugefügt
# (siehe: http://forum.redaxo.de/sutra33242.html#33242)
# Möglichkeit zur Auswahl des Absender-Email-Feldes
#############################################
# KLXM-Version 3.0
# Basiert auf das Original aus Redaxo 3.2 Demo
# Kompatibilität mit dem Original nicht garantiert
##############################################


$rex_form_data = <<<End
REX_HTML_VALUE[3]
End;

$mailbody = <<<End
REX_HTML_VALUE[5]
End;

$formname = "REX_VALUE[8]";
$submitlabel = "REX_VALUE[7]";
$style = ' style="color:#f00;"';

$post = rex_post('FORM', 'array');

$formoutput = array();
$warning = array();
$form_elements = array();
$form_elements = explode("\n", $rex_form_data);

for($i=0;$i<count($form_elements);$i++){

	$element = explode("|", $form_elements[$i]);
	$AFE[$i] = $element;

	switch($element[0]){

		case "headline":
			$formoutput[] = '<p>'.$element[1].'</p>';
		break;

		case "text":
			if($post[$formname]["el_".$i] == "" && !$post[$formname][$formname."send"]){
				$post[$formname]["el_".$i] = trim($element[3]);
			}

			if($element[2] == 1 && (trim($post[$formname]["el_".$i]) == "" || trim($post[$formname]["el_".$i]) == trim($element[3])) && $post[$formname][$formname."send"] == 1){
				$warning["el_".$i] = $style;
			}

			// ### Validierung
         // falls Pflichtelement und Inhalt da und Formular abgeschickt
         if( ($element[2] == 1) && (trim($post[$formname]["el_".$i]) != "") && ($post[$formname][$formname."send"] == 1) ) {
           // checken, ob und welches Validierungsmodell gewaehlt

            if (trim($element[5]) != "") {
              // falls Validierung gefordert
              $valid_ok = TRUE;
               $inhalt = trim($post[$formname]["el_".$i]);

              switch(trim($element[5])) {
                 case "mail":

                             if (!ereg("^.+@(.+\.)+([a-zA-Z]{2,6})$",$inhalt)) $valid_ok = FALSE;
                                     break;

				 case "absendermail":
							$absendermail=$inhalt;
                             if (!ereg("^.+@(.+\.)+([a-zA-Z]{2,6})$",$inhalt)) $valid_ok = FALSE;
                                     break;

                 case "digit":
                              if (!ctype_digit($inhalt)) $valid_ok = FALSE;
                                     break;
                 case "alpha":
                              if (!ctype_alpha($inhalt)) $valid_ok = FALSE;
                                     break;
              } // switch

               if (!$valid_ok) $warning["el_".$i] = $style;
            } // falls Validierung gefordert

         }
         // ### /Validierung

$formoutput[] = '
				<label class="text" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				<input type="text" class="text" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.htmlspecialchars(stripslashes($post[$formname]["el_".$i])).'" /><br />
				';
		break;

		case "textarea":
			if($post[$formname]["el_".$i] == "" && !$post[$formname][$formname."send"]){
				$post[$formname]["el_".$i] = $element[3];
			}

			if($element[2] == 1 && (trim($post[$formname]["el_".$i]) == "" || trim($post[$formname]["el_".$i]) == trim($element[3])) && $post[$formname][$formname."send"] == 1){
				$warning["el_".$i] = $style;
			}


		// ### Validierung
         // falls Pflichtelement und Inhalt da und Formular abgeschickt
         if( ($element[2] == 1) && (trim($post[$formname]["el_".$i]) != "") && ($post[$formname][$formname."send"] == 1) ) {
           // checken, ob und welches Validierungsmodell gewaehlt

            if (trim($element[5]) != "") {
              // falls Validierung gefordert
              $valid_ok = TRUE;
               $inhalt = trim($post[$formname]["el_".$i]);

              switch(trim($element[5])) {
                 case "mail":

                              if (!ereg("^.+@(.+\.)+([a-zA-Z]{2,6})$",$inhalt)) $valid_ok = FALSE;

                 case "digit":
                              if (!ctype_digit($inhalt)) $valid_ok = FALSE;
                                     break;
                 case "alpha":
                              if (!ctype_alpha($inhalt)) $valid_ok = FALSE;
                                     break;
              } // switch

               if (!$valid_ok) $warning["el_".$i] = $style;
            } // falls Validierung gefordert

         }
         // ### /Validierung

			$formoutput[] = '
				<label class="textarea" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				<textarea class="textarea" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" cols="80" rows="10">'.htmlspecialchars(stripslashes($post[$formname]["el_".$i])).'</textarea><br />
				';
		break;


		case "select":

			$SEL = new select();
			$SEL->set_name("FORM[".$formname."][el_".$i."]");
			$SEL->set_id("el_".$i);
			$SEL->set_size(1);
			$SEL->set_style(' class="select"');

			if($post[$formname]["el_".$i] == "" && !$post[$formname][$formname."send"]){
				$SEL->set_selected($element[3]); } else { $SEL->set_selected($post[$formname]["el_".$i]);
			}

			foreach(explode(";", trim($element[4])) as $v){
				$SEL->add_option( $v, $v);
			}

			if($element[2] == 1 && trim($post[$formname]["el_".$i] )== "" && $post[$formname][$formname."send"] == 1){
				$warning["el_".$i] = $style;
			}

			$formoutput[] = '
				<label class="select" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>
				'.$SEL->out().'<br />';
		break;

		case "checkbox":

			if(	(trim($post[$formname]["el_".$i] )== "1" ) || ($post[$formname]["el_".$i] == "" && !$post[$formname][$formname."send"] && $element[3] == 1)){
				$checked = ' checked="checked"';
				$hidden="";
			}
			else {
				$checked = "";
				$hidden = '<input type="hidden" name="FORM['.$formname.'][el_'.$i.']" value="0" /><br />';
			}

			if($element[2] == 1 && trim($post[$formname]["el_".$i]) == "0" && $post[$formname][$formname."send"] == 1){
				$warning["el_".$i] = $style;
			}

			$formoutput[] =
					$hidden.'
					<input type="checkbox" class="checkbox" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="1" '.$checked.' />
					<label class="checkbox" '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label><br />
					';
		break;
	}
}

$out = '
	<div id="form-module">
	<form action="'.$_SERVER["REQUEST_URI"].'" method="post">
		<fieldset>

		<legend>'.$formname.'</legend>
		<input type="hidden" name="FORM['.$formname.']['.$formname.'send]" value="1" />';

foreach($formoutput as $v){
	$out .= '
		<div class="element">'.$v.'</div>';
}
$out .= '
		<div class="element">
			<input type="submit" name="FORM['.$formname.']['.$formname.'submit]" value="'.$submitlabel.'" class="submit" />
		</div>
		</fieldset>
	</form>
	</div>';if($post[$formname][$formname."send"] == 1 && count($warning)==0){
	$mail = new rex_mailer();
	$mail->AddAddress("REX_VALUE[1]");
	$mail->From = $absendermail;
	$mail->FromName = $absendermail;
	$mail->Subject = "REX_VALUE[4]";
	$mail->CharSet = "REX_VALUE[9]";

	foreach($post[$formname] as $k=>$v){
		if($k != $formname."submit" && $k != $formname."send")
		$mailbody .= $AFE[ereg_replace("el_","",$k)][1].":\n ".stripslashes($v)." \n\n";
	}

	$mail->Body = $mailbody;
	$mail->Send();
?>
<div id="form-module-thanks">REX_HTML_VALUE[6]</div>
<?php }
else {
	print $out;
}
?>

Zuletzt geändert von Markus.Lorch am 22. Okt 2007, 21:15, insgesamt 1-mal geändert.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 21:13

Hallo Markus,
scheint mir eine gute und schnelle Lösung zu sein, hab's übernommen.
Hatte eine ähnliche Idee, habe sie nun aber verworfen.
So kann man, die Variable tauschen, wie man Lust hat.

Hab's mal zu Deinen Ehren Zonk-Edition genannt

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 21:18

löl^^ Das wär doch ned nötig gewesen :D Aber danke. Das freut mich jetzt

Wie ich grade im Praralelthreatvon kills erfahren habe soll man lieber

Code: Alles auswählen

rex_post('FORM', 'array');
verwenden. Das wäre dann sauber.

Edit: Nein ich mach nicht ständig Änderungen um dich zu beschäftigen^^ Die Änderungen kommen einfach so nach und nach.

Eidt2: Dabei dürft es jetzt bleiben.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 21:37

So, ich denke das reicht für's erste.
Wir lernen ja noch. :-)
Zumindest gibt's jetzt einen funktionierenden Formular-Generator für die 4.0.
Evtl. entwickelt ja der Erfinder des ganzen eine neue Version.

Soll ich die Version für die 3er-redaxos drin lassen oder besser rausnehmen?
Was meint Ihr? Es sammeln sich ja schon ne ganze Menge Formulare im Download-Bereich.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 21:46

Also komm... das ist DER perfekte Generator *g* Da gibts doch fast nix mehr besser zu machen...

Zu der 3er Verison. Ich würde das drin lassen. Sicher haben noch so manche die 3er Versionen am laufen und wollen nicht (oder noch nicht) den Stress einer Umstellung auf sich nehmen. Ist ja sobald man ne kleine Latte an Modulen und eigenen Veränderungen hat nicht so ganz reibungslos, wie ich feststellen musste^^
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 21:48

Och, hab's schon ein wenig erweitert. Muss es jetzt aber auch noch an die 4.0 anpassen.
1. Einfacher Captcha
2. Bestätigungsmail an den Absender.

Denke ich werd's Mittwoch bereitstellen.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 21:57

Das sind noch gute Sachen. Hab ich noch garned dran gedacht.

Sollte man halt beides optional zuschalten können oder auch weglassen. Captcha würd ich bei mir selbst z.b. erst zuschalten, wenn es nötig wird und Bestätigungs Emails wären in meinem Fall eher lästig.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 22:26

Wird wohl eher am Wochenende so weit sein. Ich sehe, da ist noch einiges dran zu tun bis es für die 4.0 bereit ist.

Brauche einen Ersatz hierfür (ist zu einfach)

Code: Alles auswählen

 code entfernt
Zuletzt geändert von Thomas.Skerbis am 23. Okt 2007, 22:39, insgesamt 1-mal geändert.

Benutzeravatar
Markus.Lorch
Beiträge: 682
Registriert: 21. Okt 2007, 17:22
Wohnort: Walheim

22. Okt 2007, 22:39

Zu einfach im Sinne von: Zu einfach für einen Bot zu lesen, oder der Code ist so einfach, dass er im Redaxo nicht will^^

Zum Thema Session:
Dafür gibts rex_session(), rex_set_session() und rex_unset_session(). Wie genau die funtzen hab ich aber heute keine Lust mehr mich reinzulesen.

Ich weiß nicht wie sich session_start(); verhält, wenn andere Module auch Sessions verwenden oder in wie weit es Fehler hervorruft, wenn session_start(); bereits weiter vorn irgendwo im Redaxo aufgerufen wurde.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

22. Okt 2007, 22:44

Zu einfach für Bots. Hat aber bislang Spammer abgehalten. In die Redaxo Sessions werd ich mich auch mal einlesen.
Man will's ja richtig machen.


:wink:

Zurück zu „Allgemeines [R4]“