[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Do Form light in R4 sendet alles doppelt ... - 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/
missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

Do Form light in R4 sendet alles doppelt ...

17. Okt 2008, 21:32

Hallo,

ich kapiere das Do Form und phpmailer nicht ganz. Ich habe es geschafft, alles so einzurichten, dass die E-Mails zwar ankommen, aber sowohl der Empfänger als auch der Sender bekommen alles doppelt.

Was mache ich da falsch?

Ich bitte um Hilfe.

Muss man im phpmailer oder der class mehr einstellen als ich getan habe? Ich würde euch zur Ansicht meiner Einstellungen zwei Screenshots anhängen und habe nicht gefunden, wie man das macht. Auch hierfür bitte ich um Hilfe.

Danke.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

17. Okt 2008, 21:40

Habe noch eine Frage:

Wenn man auf senden klickt, dann dauert es gute 7 Sekunden, bis die Sendebestätigung kommt.

Ist das zu verbessern?

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

18. Okt 2008, 18:34

Hat niemand was für mich?

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

19. Okt 2008, 18:45

HILFE!!!!!

Eure Hilfe wäre echt wichtig für mich. Funktioniert das bei euch allen? Das doppelte Senden von Do Form kann man doch keinem zumuten.

Bitte helft mir.

x-form kann ich erst gar nicht installieren, eine Fehler in der mySQL Syntax sagt der Installer.

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

19. Okt 2008, 19:57

Bitte prüfe mal ob du die Modulausgabe nicht evtl. 2 mal eingefügt hast.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

20. Okt 2008, 09:25

Hallo Skerbis,

danke für die Antwort. Das ist meine Moduleingabe, ich kann nicht erkennen, dass da etwas doppelt ist:

Code: Alles auswählen

<?php 
/**
 *=============================================
 * REDAXO-Modul: do form!  light 
 * Bereich: Ausgabe
 * Version: 1.2
 * Redaxo Version: 4.x
 * 
 * Hinweise:
 * 
 * Erforderliche Addons: TinyMCE, PHPMAiler(+SMTPAUTH) 
 *
 * Bearbeitung: KLXM Crossmedia, Thomas Skerbis
 * www.klxm.de
 * Datum: 7.10.2008
 * Ursprung: Formular-Generator Redaxo 3.2 Demo
 * Typ: Modifikation / Erweiterung  
 *=============================================
 */


// Captcha-Konfiguration 
// Die folgende Variable muss unbedingt angepasst werden: 
// =============================================
// ID zum Captcha-Artikel der das Captcha-Template nutzt

$dcid="22"; 
$captchasource= rex_getUrl($dcid);

// Alternative: Externe Einbindung eines Captchas
// $captchasource="/captcha/captchpic.php"; 
// =============================================

$style = 'class="formerror"'; // Stildefinition Fehler
$formname = "doform"."REX_SLICE_ID"; // Formular ID
$formdatum = date("d.m.Y"); // Datum
$formzeit = date("H:i")." Uhr"; // Uhrzeit

// Pfad zum Dateianhang bei Bestätigungs-Email
// Falls sich Redaxo in einem Unterordner befindet,
// muss der Pfad angepasst werden. 
// =============================================
$redaxofile=$_SERVER["DOCUMENT_ROOT"]."/files/"."REX_FILE[1]";


// Fehlermeldungen:
// =============================================
// Sprache 0 -- Hier Deustch 
if ($REX['CUR_CLANG']=="0")
{
#### Achtung! Hinter <<< END darf kein Leerzeichen stehen.
$fError= <<<EOD
Bei der Eingabe traten Fehler auf. <br /> Bitte korrigiere deine Angaben. <br /> Hilfe: Die Felder Postleitzahl, Telefon und Geburtstag nehmen nur Zahlen auf.
EOD;
}
// Sprache 1 -- z.B. Englisch
if ($REX['CUR_CLANG']=="1")
{
#### Achtung! Hinter <<< END darf kein Leerzeichen stehen.
$fError= <<<EOD
Please correct your Input
EOD;
}

// =============================================
// Keine weitere Konfiguration erforderlich
// =============================================



#### Achtung! Hinter <<< End darf kein Leerzeichen stehen.
$rex_form_data = <<<End
REX_HTML_VALUE[3]
End;

#### Achtung! Hinter <<< End darf kein Leerzeichen stehen.
$mailbody = <<<End
End;

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


$submitlabel = "REX_VALUE[7]"; 
if (isset($_POST['eingabe'])) {$eingabe = $_POST['eingabe'];}
$FORM = rex_post('FORM', 'array'); 
$formoutput = array(); 
$warning = array(); 
$form_elements = array(); 
$form_elements = explode("\n", $rex_form_data); 
$responsemail  = str_replace("%Datum%", $formdatum, $responsemail);
$responsemail  = str_replace("%Zeit%", $formzeit, $responsemail);
//Adresse die als Absenderadresse der Bestätigungs-Email eingegeben wurde
$responsemail  = str_replace("%Absender%", "REX_VALUE[2]", $responsemail);
//Empfänderadresse die im Modul angegeben wurde
$responsemail  = str_replace("%Mail%", "REX_VALUE[1]", $responsemail);




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

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

   switch($element[0]){ 
	  
	  case "headline": 
         $formoutput[] = '<div class="formheadline">'.$element[1].'</div>'; 
      break; 
    
     case "info": 
         $formoutput[] = '<div class="formhinweis">'.$element[1].'</div>'; 
      break; 
	  
	  
	 case "ilink": 
         $formoutput[] = '<div class="formlink"><a href="'.rex_getUrl($element[1]).'">'.$element[2].'</a></div>'; 
     break;  
       
      case "trennelement": 
         $formoutput[] = '<div class="formtrenn"></div>'; 
      break; 
    
    case "fieldend": 
         $formoutput[] = '</fieldset>'; 
     $formfield="1";
      break; 
    case "divstart": 
         $formoutput[] = '<div class="'.$element[1].'">';
         $formfield="1"; 
      break;
          
     case "divend": 
        $formoutput[] = '</div>'; 
        $formfield="1"; 
      break;  
        
      case "fieldstart": 
         $formoutput[] = '<fieldset class="fieldset"><legend>'.$element[1].'</legend>';
         $formfield="1"; 
      break; 
      
       
        case "password":
         if($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"]){
            $FORM[$formname]["el_".$i] = trim($element[3]);
         }
      
         if($element[2] == 1 && (trim($FORM[$formname]["el_".$i]) == "" || trim($FORM[$formname]["el_".$i]) == trim($element[3])) && $FORM[$formname][$formname."send"] == 1){
            $warning["el_".$i] = $style;
            $e=1;
         }
         
         $formlabel[$i] = '<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>';
         $formoutput[$i] =$formlabel[$i].'<input type="password" class="formpassword" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.htmlentities(stripslashes($FORM[$formname]["el_".$i])).'" />';
         if($element[2] == 1){$formoutput[$i] .= '&nbsp;*';}
         $formoutput[$i] .= '<br />';
      break;
       
// Radio-Buttons von Markus Feustel 07.01.2008      
 case "radio":
         
       if((trim($FORM[$formname]["el_".$i] )== "1" ) || ($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"] && $element[3] == 1)){ 
            $checked = ' checked="checked"'; 
            $hidden=""; 
         } 
         else { 
            $checked = ""; 
            $hidden = '<input type="hidden" name="FORM['.$formname.'][el_'.$i.']" value="0" />'; 
         } 
         if(trim($FORM[$formname]["el_".$i]) == '' && trim($element[5]) !=''){ 
           $FORM[$formname]["el_".$i] = trim($element[5]); 
         } 
          
         if($element[2] == 1 && trim($FORM[$formname]["el_".$i]) == "" && $FORM[$formname][$formname."send"] == 1){ 
            $warning["el_".$i] = $style; 
            $e=1; 
         } 
          
         $ro=explode(';',trim($element[3])); 
         $val=explode(';',trim($element[4])); 
         $formlabel[$i] = '<label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label>'; 



         $fo = $formlabel[$i].'<table border="0" cellspacing="5" cellpadding="0">'."\n"; 
         for($xi=0;$xi<count($ro);$xi++){ 
            if($val[$xi] == trim($FORM[$formname]["el_".$i] )){$checked = ' checked="checked"';}else{$checked = "";} 
            $fo .='<tr>'."\n"; 
            $fo .= '<td><input type="radio" class="formradio" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.$val[$xi].'" '.$checked.' /></td>'."\n"; 
            $fo .= '<td><label class="formradio" '.$warning["el_".$i].' for="el_'.$i.'" >'.$ro[$xi].'</label></td>'."\n"; 
            $fo .='</tr>'."\n"; 
         } 
         $fo .='</table>'."\n"; 
         $formoutput[$i] = $fo.'<br/>';
         
      break;     
//  Ende Radio-Buttons     

      case "text": 
         if($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"]){ 
            $FORM[$formname]["el_".$i] = trim($element[3]); 
         } 
       
         if($element[2] == 1 && (trim($FORM[$formname]["el_".$i]) == "" || trim($FORM[$formname]["el_".$i]) == trim($element[3])) && $FORM[$formname][$formname."send"] == 1){ 
            $warning["el_".$i] = $style; 
         } 
          
         // ### Validierung 
         // falls Pflichtelement und Inhalt da und Formular abgeschickt 
         if( ($element[2] == 1) && (trim($FORM[$formname]["el_".$i]) != "") && ($FORM[$formname][$formname."send"] == 1) ) { 
           // checken, ob und welches Validierungsmodell gewaehlt 
                      
            if (trim($element[5]) != "") { 
              // falls Validierung gefordert 
              $valid_ok = TRUE; 
               $inhalt = trim($FORM[$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;                 
             #Telefonnummern mindestens 6 Zahlen
       case "telefon": 
                    
           if (preg_match("#^[ 0-9\/-]{6,}+$#",$inhalt)) {break;} else {$valid_ok = FALSE; }
            break; 
            
       #Postleitzahlen 
       case "plz": 
                      if (preg_match ("/^[0-9]{5}$/",$inhalt))  {break;} else {$valid_ok = FALSE; }
            break; 
      
      #Prüft ob die eingegebenen Zeichen Buchstaben sind
      case "letters": 
                    
           if (preg_match("/^[ a-zA-Zäöüß]+$/i",$inhalt)) {break;} else {$valid_ok = FALSE; }
            break;    
      
         
       #Nur Zahlen 
        case "digit": 
                              if (!ctype_digit($inhalt)) $valid_ok = FALSE; 
                                     break; 
       #Nur Buchstaben
        case "alpha": 
                              if (!ctype_alpha($inhalt)) $valid_ok = FALSE; 
                                     break;
       
       # URL 
    case "url":
      $inhalt=trim($inhalt); 
      if (preg_match("#^(http|https)+(://www.)+([a-z0-9-_.]{2,}\.[a-z]{2,4})$#i",$inhalt)) {break;} else {$valid_ok = FALSE; }
    break; 

       
       
      // Captchaabfrage  
       
        case "captcha": 
                     if ($_SESSION["kcode"]==$inhalt ) 
                     {break;} 
                     else 
                     { 
                     $valid_ok = FALSE; 
                                    break;     } 
                            

                                                                                                                          
              } // switch                                  
                
               if (!$valid_ok) $warning["el_".$i] = $style; 
            } // falls Validierung gefordert            
              
         } 
         // ### /Validierung      
          
                              
  
          
          
         $formoutput[] = ' 
            <label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label> 
            <input type="text" class="formtext" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'" value="'.htmlspecialchars(stripslashes($FORM[$formname]["el_".$i])).'" /><br /> 
            '; 
      break; 
       
      case "textarea": 
         if($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"]){ 
            $FORM[$formname]["el_".$i] = $element[3]; 
         } 
       
         if($element[2] == 1 && (trim($FORM[$formname]["el_".$i]) == "" || trim($FORM[$formname]["el_".$i]) == trim($element[3])) && $FORM[$formname][$formname."send"] == 1){ 
            $warning["el_".$i] = $style; 
         } 
      $formoutput[] = ' 
            <label '.$warning["el_".$i].' for="el_'.$i.'" >'.$element[1].'</label> 
            <textarea class="formtextfield" cols="40" rows="10" title="'.$element[1].'" name="FORM['.$formname.'][el_'.$i.']" id="el_'.$i.'">'.htmlspecialchars(stripslashes($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="formselect"'); 
       
         if($FORM[$formname]["el_".$i] == "" && !$FORM[$formname][$formname."send"]){ 
            $SEL->set_selected($element[3]); } else { $SEL->set_selected($FORM[$formname]["el_".$i]); 
         } 

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

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

       
    case "spamschutz": 
       //Session-Variable prüfen:
    if( !session_is_registered("kcode") ) 
      { 
         session_register("kcode"); 
      }
     if($REX['REDAXO']==1) {$formoutput[] = "im Backend wird das Captchabild nicht angezeigt";}
     else {
        $formoutput[] = '<img src="'.$captchasource.'" class="formcaptcha" alt="Security-Code" title="Security-Code" />'.$element[1].'<br/><br/>'; 
     }
      break; 
       
   } 
} 


$charset="REX_VALUE[9]";
if ($charset=="UTF-8") { $acharset='accept-charset="UTF-8"';}
else {$acharset="";}


// =================AUSGABE-KOPF============================
$out = ' 
   <div  class="formgen"> 
   <form id="'.$formname.'" action="'. $_SERVER["REQUEST_URI"].'" '.$acharset.' method="post"> 
      <input type="hidden" name="FORM['.$formname.']['.$formname.'send]" value="1" />'; 

// =================Formular-generieren=====================
foreach($formoutput as $v){ 

  if ($formfield !="1") //wenn keine DIVs oder Fieldsets verwendet werden
    {
   $out .= '<div class="formblock">'.$v.'</div>'; 
  } 
  else
    {
   $out .= $v; 
    }
  }


// =================AUSGABE-FUSS============================
$out .= ' 
      <div class="formblock"> 
         <input type="submit" name="FORM['.$formname.']['.$formname.'submit]" value="'.$submitlabel.'" class="formsubmit" /> 
      </div> 
      </form> 
   </div>'; 
// =================SEND MAIL===============================    
   if($FORM[$formname][$formname."send"] == 1 && count($warning)==0) 
   { 
   unset($_SESSION["kcode"]); //Captcha-Variable zurücksetzen
    $mail = new rex_mailer(); // Mailer initialisieren
    $mail->Sender = $absendermail;    //Absenderadresse
    $mail->AddAddress("REX_VALUE[1]"); // Absenderadresse
    $mail->From = $absendermail;  //Absendername
    $mail->FromName = $absendermail; // Abdendername
    $mail->Subject = "REX_VALUE[4]"; // Betreff
    $mail->CharSet = "REX_VALUE[9]"; // Zeichensatz
    $fcounter=0;    
   //Ausgabe der einzelnen E-Mail-Zeilen 
   foreach($FORM[$formname] as $k=>$v){ 
      if($k != $formname."submit" && $k != $formname."send") 
      $mailbody .= "\n-----------------------------------------------\n".$fcounter.'. '.$AFE[ereg_replace("el_","",$k)][1].":\n".stripslashes($v)."\n\n"; 
      $fcounter++;
   } 
    
   $mail->Body = $mailbody; 
   $mail->Send(); // Versenden
    
    
// =================MAIL-RESPONDER============================
   $responder="REX_VALUE[10]"; 
   if($FORM[$formname][$formname."send"] == 1 && $responder=="ok" && count($warning)==0) 
   { 

    $mail = new rex_mailer(); 
    $mail->AddAddress($absendermail); 
    $mail->Sender = "REX_VALUE[2]";    
    $mail->From = "REX_VALUE[2]"; 
    $mail->FromName = "REX_VALUE[8] |".$REX['SERVERNAME']; 
    $mail->Subject = "REX_VALUE[4]"; 
    $mail->CharSet = "REX_VALUE[9]"; 
       
   #### Datei versenden ####
  
   if ("REX_FILE[1]"!="") 
   {
   $mail->AddAttachment($redaxofile); 
   }  
   $mail->Body = $responsemail; 
   $mail->Send();  // Versenden
   
   } 
// =================MAIL-RESPONDE-ENDE=========================
    
?>
<div id="form-module-thanks">REX_HTML_VALUE[6]</div> 
  
<? $noform="1";} 

if (count($warning)>0) 
{
 echo '<div class="forminfo">'; echo($fError); echo'</div>';
 print $out; 
}
else {    
if ($noform!="1"){   
print $out; }
}

?>
Stimmt doch, oder? Kannst du mal drüberschauen?

Danke.

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

20. Okt 2008, 11:31

hmm.... komisch ..
Hast Du im PHP-Mailer unter: Lesebstätigung was eingetragen?
Weiß nicht genau, aber wenn ja lass es mal weg und probiers nochmal.

Und versuch es evtl. mit der aktuellen Version 1.21

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

20. Okt 2008, 12:38

Hallo Skerbis,

nein, im phpmailer ist nichts bei Lesebestätigung eingetragen, das Feld ist leer. Jetzt installiere ich die neue Version.

Lesebestätigung kann es aber auch nicht liegen, denn auch der User, der das Form ausfüllt bekommt den Bestätigungstext zweimal.

Ich habe auch noch das Problem, dass die default Werte nicht angezeigt werden.

Ich gebe in Do Form ein:

Code: Alles auswählen

select|It´s a *|1|Bitte wählen: Mädchen oder Junge?|;Girl!;Boy!|
damit in einem Selectfeld Bitte auswählen erstmal steht und in der html Seite wird das Bitte auswählen nicht angezeigt.

html-Quellcode der Seite:

Code: Alles auswählen

<select name="FORM[doform52][el_3]" size="1" id="el_3" class="formselect">
    <option value=""></option>
    <option value="Girl!">Girl!</option>
    <option value="Boy!">Boy!</option>
</select>
option value ist leer, hier sollte aber Bitte auswählen stehen.

Danke schonmal.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

20. Okt 2008, 12:40

Hallo Skerbis,

kannst du mir bitte einen Link senden, wo ich diese aktuelle Version downloaden kann?

Danke.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

20. Okt 2008, 15:47

Also,

ich habe jetzt die Do Form Version 1.21 eingefügt. Es ist noch immer das gleich, es sendet doppelt.

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

20. Okt 2008, 16:19

So besser?

Code: Alles auswählen

select|It´s a *|1||Bitte wählen: Mädchen oder Junge?;Girl!;Boy!|
Das doppelte Versenden ist allerdings merkwürdig.
Da bin ich überfragt.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

10. Dez 2008, 21:27

Hallo Skerbis,

nachdem ich das mit dem doppelten Versand noch immer nicht in den Griff bekommen habe, wollte ich die neueste Version von DoForm 1.28 verwenden um zu sehen, was dann mit dem doppelten Versand ist.

Wenn ich nun Moduleingabe und Ausgabe einfüge und in einem Artikel dann einen DoForm Block anlegen will, dann funktioniert etwas mit der Modulausgabe nicht, denn ich erhalte eine leere fehlerhafte Anzeige, wo eigentlich der Artikel mit dem neuen Block angezeigt sein sollte.

Ist da ein Fehler?

Vielen Dank für Hilfe.

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

11. Dez 2008, 17:30


missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

12. Dez 2008, 10:54

Hallo Skerbis,

danke für die Info, wann wird es soweit sein? Bzw. um welchen Fehler handelt es sich genau? Vielleicht könnte ich ihn ja bis zur neuen Version solange selbst beheben?

Danke.

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

12. Dez 2008, 11:36

Der Fehler ist behoben. Das Problem mit dem doppelten Versand liegt aber wo anders. Kann ich nicht reproduzieren.

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

Lösung um mehrfach senden zu umgehen

15. Dez 2008, 23:57

Hallo,
ich hatte ein ähnliches Problem, dass wenn ich ein Formular abgeschickt habe, die Mails und Artikel mehrfach (doppelt, dreifach) angelegt wurden. nach langem hin und her bin ich dann darafu gekommen, dass es an den Ctypes Spalten liegt.

Füllte ich einen/mehrere leeren Ctype verringeerte sich das Problem um eins.

Folgendes hat dann endgültig geholfen:
nach der Verarbeitung/senden der Mail ein Prüfvariable auf Null setzen und vor jeder Verarbeitung abfragen, ob die Prüfvariable auf Null ist. Wenn dem so ist, dann Erfolgsmeldung setzten, sonst Verarbeitung starten/Mail schicken.

z.B.:

Code: Alles auswählen


if ($_POST["check"] == 'senden' ) {

$_POST["check"] = 'ctype';

...

  $mail->Send();

        //Weiterleiten, um Reloadproblem zu umgehen
        header('Location: http://'.$REX['SERVER'].'/index.php?article_id='.$this->getValue("article_id").'&clang='.$clang.'&check=ready');

}

//Abfrage um Ctype-Problem zu verhindern
//
if ($_POST["check"] == 'ctype') {
        //Weiterleiten, um Reloadproblem zu umgehen
        header('Location: http://'.$REX['SERVER'].'/index.php?article_id='.$this->getValue("article_id").'&clang='.$clang.'&check=ready');
}

if ($_GET["check"] == 'ready') {
  echo '<h1>erfolgreich!</h1>';
}

Ich stelle es als Bug ein.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

16. Dez 2008, 11:18

Hallo Goldacker und Skerbis,

die Modulausgabe funktioniert jetzt mit der Version 1.4. Allerdings ist in der Tat der Doppelversand noch immer gegeben.

Ich habe jetzt ein ganz neues Projekt gestartet, das auf einem ganz anderen Server steht, wie das Projekt, bei dem der Doppelversand auftritt. Und siehe da, auch bei dem neuen Projekt mit DoForm 1.4 und dem aktuellen PHPMailer versendet sich das ausgefüllte Formular doppelt.

Goldacker, das klinkt ja gut, kannst du mir bitte noch beschreiben, wohin ich deinen oben angeführten Code schreiben sollte. Gehört der in die Modulausgabe oder in eine Datei des PHPMailers?

Danke euch schon jetzt.

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

16. Dez 2008, 13:08

An alle
Tritt das Problem auch auf, wenn mod-Rewrite verwendet wird?
Ich verwende mod-rewrite und bei mir tritt das Problem nicht auf.

UPDATE:
Komisch, auch bei ausgeschaltetem mod-Rewrite ist alles ok hier. Habe extra hierfür eine weitere Sprache mit dem gleichen Formular angelegt
PHP 5.2.6 , MySQL 5.0.4.5, Redaxo 4.1

Wie sieht die URL im Form-Tag bei Euch aus?


Hallo Goldacker. Danke für den Lösungsvorschlag. Eine Reloadsperre kann sicher nicht schaden. Werde ich in einer der nächsten Versionen von do form! evtl. einbeziehen. Falls Du Zeit und Lust hast kannst Du das auch gerne vorweg nehmen.
:-)

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

16. Dez 2008, 18:22

den code habe ich für ein redaxo-web2.0 modul benötigt und in die Ausgabe des Formular-Moduls gepackt. dass heißt ich habe mich mit doForm nicht auseinander gesetzt - noch nicht ;-) aber ob ich vor der community zum update dieses komme weiß ich nicht.

noch zur Konkretisierung meiner Umgebung in der der Mehrfachversand aufgetreten ist:
mod-Rewrite aktiviert
PHP Version 4.4.8
MySQL 5.0.27
Redaxo 4.1

URL über senden Button: 58-0-ooo.html

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

16. Dez 2008, 18:40

@missmissr stetzt Du auch noch PHP4 ein?

Achtung PHP4 wird nicht mehr weiterentwickelt oder supportet.

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

17. Dez 2008, 12:24

Hallo Skerbis,

Danke, ich weiß, dass PHP4 nicht mehr entwickelt wird, trotzdem verwenden die Provider für die Webspaces meiner beiden betroffenen Projekte aber:

PHP 4.3.9
MySQL 4.1.22
mod_rewrite ist aktiviert

ich habe Redaxo 4.1 installiert.

PHP5 habe ich nur auf meiner lokalen Entwicklungsumgebung verfügbar, von diesem localhost kann ich allerdings nicht über sendmail oder smtp versenden.

Goldacker: Wo sollte ich den obigen Code einfügen, oder gehört der Code zu deinem Web 2.0?

Ich danke euch für euer Engagement so sehr, denn ich finde Redaxo sowas von genial und wenn nun dieser Doppelversand noch behoben wäre, dann wären meine Projekte echt perfekt.

Ich kapiere auch das Einstellen des PHPMailers im Backend nicht ganz. Vielleicht liegt da noch irgendwo mein Fehler. Meine DoForms werden nur versendet, wenn ich smpt einstelle, aber Benutzername oder Passwort kann man ja da nicht angeben, wenn ich sendmail einstelle, dann kommt wieder nichts an. Im Backend gebe ich nur smtp, eine Absenderadresse und die Adresse, an die gesendet wir an. Im DoForm steht das dann nochmal. Ist das so richtig?

Danke, bis bald,
missmissr.

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

doForm

17. Dez 2008, 12:57

ich denke du musst das um das doForm in der Modul-Ausgabe packen

missmissr
Beiträge: 175
Registriert: 9. Mär 2008, 18:36

17. Dez 2008, 14:36

Hi Goldacker,

aber wenn ich das jetzt richtig verstehe, dann geht es bei dir darum, dass die Artikel mehrfach angelegt wurden (nach ausfüllen der Formulare im Backend) und nicht darum, dass ein Kontaktformular für´s Frontend, das man mit dem Modul DoForm erstellt hat mehrfach per E-Mail versendet wird?

Das ist mein Problem, nicht das mehrfache Artikel Anlegen.

Danke solange.

Goldacker
Beiträge: 148
Registriert: 1. Jul 2007, 13:27
Wohnort: Hamburg / Berlin / Neubrandenburg
Kontaktdaten: Website

egal

17. Dez 2008, 14:50

die lösung dürfte die gleiche sein. ich poste dir jedoch nicht den fertigen code. endweder du kannst es selbst bauen (und postest es dann für die community) oder du wartest bis einer es für dich macht.

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

17. Dez 2008, 16:21

missmissr hat geschrieben:Hallo Skerbis,
Ich kapiere auch das Einstellen des PHPMailers im Backend nicht ganz. Vielleicht liegt da noch irgendwo mein Fehler. Meine DoForms werden nur versendet, wenn ich smpt einstelle, aber Benutzername oder Passwort kann man ja da nicht angeben, wenn ich sendmail einstelle, dann kommt wieder nichts an. Im Backend gebe ich nur smtp, eine Absenderadresse und die Adresse, an die gesendet wir an. Im DoForm steht das dann nochmal. Ist das so richtig?
do form! ignoriert traditionell einige Einstellungen von phpmailer
Die Empfänger-Adresse und die Codierung werden z.B. nicht verwendet.

Falls Du SMTP-Auth verwenden möchtest , gibt es eine angepasste Version des PHP-Mailers im Downloadbereich dort kannst Du dann Benutzername und Passwort festlegen.

Da ich Deinen Fehler nicht reproduzieren kann, hoffe ich, dass jemand anderes Dir bei dem Doppelversand helfen kann.

Als Alternative böte sich noch http://www.redaxo.de/165-Moduldetails.h ... ule_id=410 an. Jedochnur für PHP5

Zurück zu „Allgemeines [R4]“