ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Antispam im Kontaktformular

Geschlossen
  1. #1
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    Hallo.

    Mir ist aufgefallen das bei einer fehlerhaften Eingabe des Captchas das Kontaktformular geleert wird und nicht mal eine Fehlermeldung angezeigt wird.

    Gibt es eine Möglichkeit das das Formular nicht geleert wird und eine Fehlermeldung erscheint?

    Mir haben schon viele Gäste erzählt das die Emails nie ankommen.

    Vielen Dank.


    verwendete ilch Version: 1.1 P
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    Das in dem Fall das Formular geleert wird ist mir auch schon mal aufgefallen.

    www.ilch.de/forum-showposts-51794-p1.html#373975
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Wäre doch noch etwas für 1.1Q

    Ich habe es mal so umgesetzt:

    <?php  
    #   Copyright by: Manuel Staechele 
    #   Support: www.ilch.de
    
    defined ('main') or die ( 'no direct access' ); 
    
    $title = $allgAr['title'].' :: Kontakt'; 
    $hmenu = 'Kontakt'; 
    $design = new design ( $title , $hmenu ); 
    $design->header(); 
    
    $erg = db_query("SELECT v2,t1,v1 FROM prefix_allg WHERE k = 'kontakt'"); 
    $row = db_fetch_assoc($erg); 
    $k = explode('#',$row['t1']); 
    
    $name = ''; 
    $mail = ''; 
    $subject = ''; 
    $wer  = ''; 
    $text = ''; 
    $fehler = ''; 
    
    ## config 
    $mailadr = true; // check  check valide email --> true = Yes, false = No 
    
    ## check valide email
    function check_valide_mail($email)
    { 
    	$regex = '/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+'. 
    			'(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|'. 
    			'(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|'. 
    			'([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))'. 
    			'\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|'. 
    			'(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|'. 
    			'([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))'. 
    			'\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|'. 
    			'((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/';
    	if(preg_match($regex, $email))
    	{
    		if(function_exists('checkdnsrr'))
    		{
    			list (, $domain) = explode('@', $email);
    			if(checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A'))
    			{
    				return true;
    			}
    		}
    	} 
    	return false; 
    }
    
    ## absenden
    if(isset($_POST['submit']))
    {
    	if(empty($_POST['wer']))
    	{
    		$fehler .= 'Es wurde kein Empfänger ausgewählt!<br />';
    	} 
    	if(empty($_POST['name']))
    	{
    		$fehler .= 'Es wurde kein Name angegeben!<br />';
    	} 
    	if($_POST['mail'] != '')
    	{
    		if($mailadr)
    		{
    			$fehler .= (check_valide_mail($_POST['mail']) == true ? '' : 'Es wurde keine gültige E-Mail Adresse angeben!<br />');
    		}
    	}
    	else
    	{
    		$fehler .= 'Es wurde keine E-Mail-Adresse angegeben!<br />';
    	}
    	if(empty($_POST['subject']))
    	{
    		$fehler .= 'Es wurde kein Betreff eingegeben!<br />';
    	}
    	if(empty($_POST['txt']))
    	{
    		$fehler .= 'Es wurde kein Nachrichtentext eingegeben!<br />';
    	}
    	if(chk_antispam ('contact') != true)
    	{
    		$fehler .= 'Der AntiSpam Code wurde war nicht korrekt!<br />';
    	}
    	if ($fehler == '' AND !empty($_POST['wer']))
    	{ 
    		$name = $_POST['name'];
    		$mail = escape_for_email($_POST['mail']);
    		$betreff = escape_for_email($_POST['subject'], true);
    		$wer  = $_POST['wer'];
    		$text = strip_tags($_POST['txt']);
    		$wero = FALSE;
    		foreach($k as $a)
    		{
    			$e = explode('|',$a);
    			if (md5($e[0]) == $wer)
    			{
    				$wero = TRUE;
    				$wer  = $e[0];
    				break;
    			}
    		}
    		if (strpos($text, 'Content-Type:') === FALSE
    		AND strpos($text, 'MIME-Version:') === FALSE
    		AND strpos($mail, '@') !== FALSE AND $wero === TRUE
    		AND strlen($name) <= 50 AND strlen($mail) <= 50
    		AND strlen($text) <= 5000
    		AND $mail != $name AND $name != $text AND $text != $mail)
    		{ 
    			$subject = "Kontakt über " . $_SERVER['HTTP_HOST'];
    			$inhalt = $name . " hat Ihnen eine Nachricht über " . $_SERVER['HTTP_HOST'] . " gesendet. \n\n";
    			$inhalt .= "Betreff: " . $betreff . " \n\n";
    			$text .= " \n\nViele Grüße von \n";
    			$text .= $name . " (" . $mail . ") ";
    			$text = $inhalt.$text;
    			icmail ($wer, $subject, $text, $name . " <" . $mail . ">");
    			echo '<div style="border:1px green dotted;text-align:center;"><strong>Ihre Anfrage per Email wurde erfolgreich versendet!</strong></div>'; 
    			$name = ''; 
    			$mail = ''; 
    			$subject = ''; 
    			$wer  = ''; 
    			$text = '';
    		} 
    		else 
    		{
    			$name = $_POST['name']; 
    			$mail = $_POST['mail']; 
    			$subject = $_POST['subject']; 
    			$wer  = $_POST['wer']; 
    			$text = $_POST['txt'];
    			echo '<div style="border:1px red dotted;text-align:center;"><strong>' . $lang['emailcouldnotsend'] . '</strong></div>';
    		}
    	}
    	else
    	{ 
    		$name = $_POST['name']; 
    		$mail = $_POST['mail']; 
    		$subject = $_POST['subject']; 
    		$wer  = $_POST['wer'];
    		$text = $_POST['txt'];
    		echo '<div style="border:1px red dotted;text-align:center;"><strong>Aufgrund folgender Fehler, wurde die Email nicht versendet:</strong><br />' . $fehler . '</div>'; 
    	}
    } 
    
    $tpl = new tpl ( 'contact.htm' ); 
    $tpl->out(0); 
    
    foreach($k as $a)
    { 
      $e = explode('|',$a); 
      if ($e[0] == '' OR $e[1] == '' ) { continue; }
      if (md5($e[0]) == $wer) { $c = 'checked'; } else { $c = ''; }
      $tpl->set_ar_out( array ('KEY' => md5($e[0]), 'VAL' => $e[1], 'c' => $c) , 1 ); 
    } 
    
    $tpl->set('name', $name); 
    $tpl->set('mail', $mail); 
    $tpl->set('subject', $subject); 
    $tpl->set('text', $text);
    $tpl->set('ANTISPAM', get_antispam('contact',1)); 
    $tpl->out(2); 
    
    $design->footer(); 
    ?>


    <form action="?contact" method="POST">
      <table width="100%" border="0" cellspacing="0" cellpadding="3" align="center">
        <tr>
          <td valign="top" width="50%">Empf&auml;nger ausw&auml;hlen:</td>
          <td width="50%">
          {EXPLODE}
            <input id="w{KEY}" {c} type="radio" name="wer" value="{KEY}" style="float: left; border:0px; background-color:#fff;"><label for="w{KEY}">&nbsp;&nbsp; {VAL}</label><br style="clear: both;" />
          {EXPLODE}
          </td>
        </tr><tr>
          <td colspan="2">&nbsp;</td>
        </tr><tr>
          <td>Ihr Name:</td>
          <td><input type="text" name="name" value="{name}" style="width: 100%"></td>
        </tr><tr>
          <td>Ihre E-mail:</td>
          <td><input type="text" name="mail" value="{mail}" style="width: 100%"></td>
        </tr><tr>
          <td>Betreff:</td>
          <td><input type="text" name="subject" value="{subject}" style="width: 100%"></td>
        </tr><tr>
          <td valign="top">Nachricht:</td>
          <td><textarea name="txt" style="width: 100%; overflow:auto;" rows="8">{text}</textarea></td>
        </tr>
        {ANTISPAM}
        <tr>
          <td colspan="2">&nbsp;</td>
        </tr><tr>
          <td>&nbsp;</td>
          <td><input name="submit" type="submit" value=" Absenden "></td>
        </tr>
      </table>
    </form>



    Zuletzt modifiziert von Lord|Schirmer am 26.01.2015 - 18:31:17
    rules :: doku :: faq :: linkus
    2 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    xxlynusxx Mitglied
    Registriert seit
    28.01.2013
    Beiträge
    272
    Beitragswertungen
    4 Beitragspunkte
    Du bist der beste. Vielen Dank.


    Zuletzt modifiziert von xxlynusxx am 26.01.2015 - 22:03:50
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    blackcoder Entwickler
    Registriert seit
    22.05.2014
    Beiträge
    2.277
    Beitragswertungen
    356 Beitragspunkte
    ZitatZitat geschrieben von Lord|Schirmer
    Wäre doch noch etwas für 1.1Q

    Yes
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten