1. Dashboard
  2. Articles
  3. Forum
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • More Options
  1. webEdition Forum
  2. Forum
  3. Deutschsprachiges Support Forum
  4. webEdition Templates erstellen (we:tags)

Verschiedene Formail Probleme

  • steff11
  • September 18, 2024 at 8:39 AM
1st Official Post
  • steff11
    Beginner
    Posts
    25
    • September 18, 2024 at 8:39 AM
    • #1

    Hallo Zusammen,

    ich habe ein seltsames Problem:

    Bei 2 verschiedenen Webseiten nutze ich den gleichen Code für das Formular. Beide sind beim gleichen Hoster, Version 9.2.3.0, PHP 8.1.21

    Bei der einen Webseite funktioniert alles problemlos, bei der zweiten nicht:


    1. Bekomme Fehlermeldung

    Code
    Undefined array key "auswahl" 
    Undefined array key "vorname"

    Wenn ich

    Code
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    mache, kommt keine Meldung. Aber bei Webseite 1 brauche ich dies nicht.

    2. Außerdem geht

    Code
    if (strlen($_POST['vorname']) > 0 && strlen($_POST['nachname'])  > 0 &&

    nicht mehr, da kommt:

    Code
    strlen(): Passing null to parameter #1 ($string) of type string is deprecated

    Mit

    Code
    if ($_POST['vorname'] != null && $_POST['nachname'] != null && 

    klappt es.

    3. Gibt es Probleme beim Captcha.
    Es kommt immer die Meldung "Das Formular wurde aus folgendem Grund nicht übermittelt:
    • Email dispatch blocked / Email Versand blockiert (mixed)!"

    Wenn ich

    Code
    	 <we:ifCaptcha name="captchaname" formname="myForm">
    		<we:formmail/>
    	<we:else />
    	</we:ifCaptcha>


    entferne, kommt die Meldung nicht, aber man kann im Captcha irgendetwas eingeben und das Formular wird dennoch gesendet.

    Im Logbuch sind keine IP's gesperrt. Auch habe ich Formmail über Dokument aufrufen auf "nein"

    Wie gesagt, System und Voraussetzung bei beiden Webseiten gleich, aber bei der einen kommen die Fehler.

    Hoffe, mir kann jemand helfen.

  • Finn
    Administrator
    Reactions Received
    10
    Posts
    259
    • September 18, 2024 at 3:21 PM
    • Official Post
    • #2

    Moin Moin,
    ich glaube ohne mehr Template wird das schwer.

    https://www.wg-werbeagentur.de

  • steff11
    Beginner
    Posts
    25
    • September 19, 2024 at 8:35 AM
    • #3

    Sehr gerne :) Ich habe sensible Daten entfernt:

    PHP
    <?php
    
    $error=0;
    $send =0;
    
    
    
    
    switch($_POST['auswahl'])
    {
    
    	case 'eins':
    	$email = 'eins@xxx.de';
    	break;
    	case 'zwei':
    	$email = 'zwei@xxx.de';
    	break;
    	case 'drei':
    	$email = 'drei@xxx.de';
    	break;
    	
    }
    
    if (strlen($_POST['vorname']) > 0 && strlen($_POST['nachname'])  > 0 && strlen($_POST['email']) > 0 && strlen($_POST['nachricht']) > 0 && strlen($_POST['captchaname']) > 0)
    {
    	$empfaenger = $email;
    	$betreff = 'Nachricht von der Webseite xxx';
    	$nachricht = 'Vorname: '.$_POST['vorname'].'<br>';
    	$nachricht .= 'Nachname: '.$_POST['nachname'].'<br>';
    	$nachricht .= 'E-Mail-Adresse: <a href="mailto:'.$_POST['email'].'">'.$_POST['email'].'</a><br><br>';
    	$nachricht .= 'Nachricht: <br>';
    	$nachricht .= nl2br($_POST['nachricht']);
    	
    	$header  = 'MIME-Version: 1.0' . "\r\n";
    	$header .= "Content-type: text/html; charset=utf-8". "\r\n";
    	$header .= 'From: xxx' . "\r\n";
    	
    	mail($empfaenger, $betreff, $nachricht, $header);
    	$send=1;
    
    }
    else
    {
    	//$send=2;
    	//echo '<p>Bitte füllen Sie alle Felder aus.</p><br><input type="button" value="Zurück" onclick="history.back();" />';
    }
    		?>
    
    <?php if ($send==1){?>
    <div class="infoblock">Vielen Dank für Ihre Nachricht. Wir werden uns schnellst möglichst bei Ihnen melden.</div>
    <?php }?>
    
    <?php if ($send==2){?>
    <div class="infoblock">Bitte füllen Sie alle Felder aus.</div>
    <?php }?>
    
    <we:checkForm match="myForm" type="id" mandatory="inputName1,inputNachname1,inputMail1,captchaname"  onError="dealFormError">Bitte füllen Sie alle Pflichtfelder aus und &uuml;berpr&uuml;fen Sie Ihre E-Mail-Adresse.</we:checkForm>
    <script type="text/javascript">
    		function dealFormError(form,missingFields,wrongEmails,wrongPassword){
    	
    		  var wrongFields = missingFields.concat(wrongEmails);
    				  
    		  msg = "Bitte kontrollieren Sie Ihre Eingaben!";
    		  if(missingFields.length>0){
    			msg += "\nDie Felder mit Stern (*) sind Pflichtfelder.";
    		  }
    		  if(wrongEmails.length>0){
    			msg += "\nIhre E-Mail-Adresse scheint nicht korrekt zu sein.";
    		  }
    		//	msg += wrongFields;
    		  alert(msg);
    		}
    	</script>
    	
    
         <we:form nameid="myForm" method="post"  required="inputName1,inputNachname1,inputMail1,captchaname">
               
              
               <div class="form-group">
                 
    								<label>Empfänger</label>
                     <select name="auswahl" size="1" class=" form-control required" type="text" >			
    									
    											<option value="eins">eins</option>
    											<option value="zwei">zwei</option>
    											<option value="drei">drei</option>
    									
    								</select>
                </div>
                <div class="form-group">    
    							     <input id="inputName1" name="vorname" class="form-control required" type="text" placeholder="Vorname*">
                  </div>        
                   <div class="form-group">               
                    <input id="inputNachname1" name="nachname" class="form-control required" type="text" placeholder="Nachname*">
                  </div> 
                  
                  <div class="form-group">               
                   <input id="inputMail1" name="email" class="form-control required email" type="email" placeholder="E-Mail*">
                  </div>
                  
                  <div class="form-group">               
                    <textarea id="inputAnliegen1" class="form-control" name="nachricht" rows="5"  placeholder="Ihr Anliegen"></textarea>
                  </div>
    							
    							<div class="form-group captcha-form">    
    								 <div class="captcha_container">
    										<we:captcha height="40" width="200" alt="Zahlencode" bgcolor="#edf6fa" case="mix" fontcolor="#000000" fontsize="20" maxlength="5" skip="i,I,l,L,0,o,O,1,g,9"  stylecolor="#cccccc" subset="alphanum" type="png"  />
    										<we:img id="680" onClick="refresh();" class="refresh-button"/>
    									 	<input id="captchaname" name="captchaname" class="form-control required" type="text" placeholder="Captcha eingeben*" pass_alt=""  />
    								</div>
    
    									<script>
    									function refresh(){
    										var xhr=new XMLHttpRequest();
    										xhr.open('POST',window.location.origin+window.location.pathname);
    										xhr.addEventListener('loadend',function(){
    										var parser=new DOMParser();
    										var doc=parser.parseFromString(xhr.responseText, 'text/html');
    										document.querySelector('.captcha_container > img').replaceWith(doc.querySelector('.captcha_container > img'));
    										});
    										xhr.send();
    									}
    									refresh();
    								</script>							 
    								
    								 <we:ifCaptcha name="captchaname" formname="myForm">
    									 <we:formmail/>
    									<we:else />
    								</we:ifCaptcha>
                   </div>
    							
    							
                  <div class="form-group" style="    clear: both;    display: flex;">
                   <button type="submit" class="btn">Absenden</button>
                   
                  </div>
                </we:form>
    Display More
  • WBTMagnum
    Student
    Reactions Received
    11
    Posts
    139
    • September 19, 2024 at 5:47 PM
    • #4
    Quote from steff11

    Bei der einen Webseite funktioniert alles problemlos, bei der zweiten nicht:


    1. Bekomme Fehlermeldung

    Code
    Undefined array key "auswahl" 
    Undefined array key "vorname"

    Wenn ich

    Code
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    mache, kommt keine Meldung. Aber bei Webseite 1 brauche ich dies nicht.

    Wie die Meldung (wird wohl ein Warning sein) schon sagt, sind die Keys nicht definiert. Du fragst hier direkt die Keys ab, ohne vorher zu prüfen ob diese überhaupt vorhanden sind.


    Quote from steff11

    2. Außerdem geht

    Code
    if (strlen($_POST['vorname']) > 0 && strlen($_POST['nachname'])  > 0 &&

    nicht mehr, da kommt:

    Code
    strlen(): Passing null to parameter #1 ($string) of type string is deprecated

    Mit

    Code
    if ($_POST['vorname'] != null && $_POST['nachname'] != null && 

    klappt es.

    Selbe Ursache. Zuerst muss geprüft werden, ob hier überhaupt ein Key vorhanden ist.


    Quote from steff11

    3. Gibt es Probleme beim Captcha.
    Es kommt immer die Meldung "Das Formular wurde aus folgendem Grund nicht übermittelt:
    • Email dispatch blocked / Email Versand blockiert (mixed)!"

    ...

    Gehört das <we:formmail/> wirklich innerhalb vom <we:form/>?


    Quote from steff11

    Wie gesagt, System und Voraussetzung bei beiden Webseiten gleich, aber bei der einen kommen die Fehler.

    Ich kann hier jetzt auch nur vermuten, dass die PHP-Settings anders sind? Oder der Fehler tritt nicht auf, weil die Parameter die Probleme verursachen immer gesetzt sind?


    HTH,
    Sascha

  • schmitter
    Student
    Reactions Received
    6
    Posts
    58
    • September 23, 2024 at 11:18 AM
    • #5

    Servus steff11,

    noch ne Idee: Schau doch mal, ob "dynamisch" bei den Dokument-Eigenschaften angehakt ist.

    Viele Grüße
    Thomas

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself Login

Donations

200.00 EUR

Donate now

Tags

  • formmail
  • Formular
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™