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

Geschlossen
  1. #1
    User Pic
    Ibizakid Mitglied
    Registriert seit
    24.08.2008
    Beiträge
    127
    Beitragswertungen
    1 Beitragspunkte
    Über die Suchfunktion habe ich nichts gefunden, aber mich wunderts bissl dass das noch keiner bemerkt hätte.

    Bei mir is es nämlich so das keine Fehlermeldung kommt wenn man beim Kontaktformular etwas nicht ausfüllt oder das antispam falsch eingibt.
    Das setzt die Seite einfach wieder zurück und die User gehen im Normalfall davon aus dass das Ganze gesendet wurde... was aber natürlich nicht der Fall ist.

    Gibts da ne Lösung? soweit ich gesehen habe gehts hier auf der Seite....
    ...hab mir aber nochmal die neueste ilch version zum testen runtergeladen... aber da gings genauso wenig wie auf meiner HP.

    Hat jemand ne Lösung für mich?

    betroffene Homepage: externer Link
    Hier geht's zum The E-Network
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Ja dieses hat mich auch immer genervt, hier mal meine Ausführung mit Abfragen!

    include/contents/contact.php
    <?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 Mailaddress //> true = Yes, false = No 
    
    if(isset($_POST['submit'])){
    	
     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 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) <= 30 AND strlen($mail) <= 30
      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 'Ihre Anfrage per Email wurde erfolgreich versendet!'; 
       $name = ''; 
       $mail = ''; 
       $subject = ''; 
       $wer  = ''; 
       $text = ''; 
      } else { 
       $name = $_POST['name']; 
       $mail = $_POST['mail']; 
       $subject = $_POST['subject']; 
       $wer  = $_POST['wer']; 
       $text = $_POST['txt'];
       echo $lang['emailcouldnotsend'];
      } 
     } else { 
      $name = $_POST['name']; 
      $mail = $_POST['mail']; 
      $subject = $_POST['subject']; 
      $wer  = $_POST['wer'];
      $text = $_POST['txt']; 
      echo 'Aufgrund folgender Fehler, wurde die Email nicht versendet:<br>'.$fehler; 
     } 
    } 
    
    
    
    $tpl = new tpl ( 'contact.htm' ); 
    $tpl->out(0); 
    
    $i = 1; 
    foreach($k as $a) { 
      $e = explode('|',$a); 
      if ($e[0] == '' OR $e[1] == '' ) { continue; } 
      if ($i == 1) { $c = 'checked'; } else { $c = ''; } 
      $tpl->set_ar_out( array ('KEY' => md5($e[0]), 'VAL' => $e[1], 'c' => $c) , 1 ); 
      $i++; 
    } 
    
    $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(); 
    ?>


    contents/templates/contact.htm
    <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 width="50%">Ihr Name:</td>
    												<td width="50%">
    												<input type="text" name="name" value="{name}" style="width: 100%"></td>
    								</tr>
    								<tr>
    												<td width="50%">Ihre E-mail:</td>
    												<td width="50%">
    												<input type="text" name="mail" value="{mail}" style="width: 100%"></td>
    								</tr>
    								<tr>
    												<td width="50%">Betreff:</td>
    												<td width="50%">
    												<input type="text" name="subject" value="{subject}" style="width: 100%"></td>
    								</tr>
    								<tr>
    												<td width="50%" valign="top">Nachricht:</td>
    												<td width="50%">
    												<textarea name="txt" style="width: 100%; overflow:auto;" rows="8">{text}</textarea></td>
    								</tr>
    								{ANTISPAM}
    								<tr>
    												<td>&nbsp;</td>
    												<td>
    												<input name="submit" type="submit" value=" Absenden "></td>
    								</tr>
    				</table>
    </form>


    Die Fehlerausgaben können dann noch formatiert werden!


    Zuletzt modifiziert von Lord|Schirmer am 24.01.2011 - 23:28:09
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Ibizakid Mitglied
    Registriert seit
    24.08.2008
    Beiträge
    127
    Beitragswertungen
    1 Beitragspunkte
    SUPER
    Dankeschön
    Hier geht's zum The E-Network
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Ibizakid Mitglied
    Registriert seit
    24.08.2008
    Beiträge
    127
    Beitragswertungen
    1 Beitragspunkte
    Oh, lol, klappt doch net!!!
    Jetzt gehen zwar die Fehlermeldungen, aber irgendwie fehlt mir ne Funktion!!
    Jetzt geht das senden nämlich nicht mehr wenn man alles korrekt eingegeben hat:
    Fatal error: Call to undefined function check_valide_mail() in /hp/bn/aa/ap/www/mysteria-network/include/contents/contact.php on line 34
    Hier geht's zum The E-Network
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Stimmt die Funktion hatte ich noch mit eingebaut ... wenn ich heute Abend zu Hause bin poste ich diese hier!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Sniper Mitglied
    Registriert seit
    31.10.2007
    Beiträge
    1.468
    Beitragswertungen
    63 Beitragspunkte
    ganz oben einfügen
    <?php
    function check_valide_mail($email) {
      // First, we check that there's one @ symbol, 
      // and that the lengths are right.
      if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
        // Email invalid because wrong number of characters 
        // in one section or wrong number of @ symbols.
        return false;
      }
      // Split it into sections to make life easier
      $email_array = explode("@", $email);
      $local_array = explode(".", $email_array[0]);
      for ($i = 0; $i < sizeof($local_array); $i++) {
        if
    (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
    &#8618;'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
    $local_array[$i])) {
          return false;
        }
      }
      // Check if domain is IP. If not, 
      // it should be valid domain name
      if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) {
            return false; // Not enough parts to domain
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
          if
    (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
    &#8618;([A-Za-z0-9]+))$",
    $domain_array[$i])) {
            return false;
          }
        }
      }
      return true;
    }
    ?>



    Zuletzt modifiziert von Sniper am 25.01.2011 - 14:03:59
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Ibizakid Mitglied
    Registriert seit
    24.08.2008
    Beiträge
    127
    Beitragswertungen
    1 Beitragspunkte
    Ah, ok.
    Funktionert jetzt alles.
    DANKE
    Hier geht's zum The E-Network
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Beatzler Mitglied
    Registriert seit
    17.04.2005
    Beiträge
    186
    Beitragswertungen
    0 Beitragspunkte
    Hey,

    könntet ihr das bitte ggf. nochmals zusammenfassen wie es nun endgültig und richtig aussehen müsste ?

    Vielen Dank !!!

    MFG Beatzler
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    include/contents/contact.php
    <?php  
    #   Copyright by: Manuel Staechele 
    #   Support: www.ilch.de
     
    defined ('main') or die ( 'no direct access' ); 
    
    function check_valide_mail($email) {
      if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
        return false;
      }
      $email_array = explode("@", $email);
      $local_array = explode(".", $email_array[0]);
      for ($i = 0; $i < sizeof($local_array); $i++) {
        if
    (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
    &#8618;'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
    $local_array[$i])) {
          return false;
        }
      }
      if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) {
            return false;
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
          if
    (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
    &#8618;([A-Za-z0-9]+))$",
    $domain_array[$i])) {
            return false;
          }
        }
      }
      return true;
    }
     
    $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 Mailaddress //> true = Yes, false = No 
     
    if(isset($_POST['submit'])){
        
     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 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) <= 30 AND strlen($mail) <= 30
      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 'Ihre Anfrage per Email wurde erfolgreich versendet!'; 
       $name = ''; 
       $mail = ''; 
       $subject = ''; 
       $wer  = ''; 
       $text = ''; 
      } else { 
       $name = $_POST['name']; 
       $mail = $_POST['mail']; 
       $subject = $_POST['subject']; 
       $wer  = $_POST['wer']; 
       $text = $_POST['txt'];
       echo $lang['emailcouldnotsend'];
      } 
     } else { 
      $name = $_POST['name']; 
      $mail = $_POST['mail']; 
      $subject = $_POST['subject']; 
      $wer  = $_POST['wer'];
      $text = $_POST['txt']; 
      echo 'Aufgrund folgender Fehler, wurde die Email nicht versendet:<br>'.$fehler; 
     } 
    } 
     
     
     
    $tpl = new tpl ( 'contact.htm' ); 
    $tpl->out(0); 
     
    $i = 1; 
    foreach($k as $a) { 
      $e = explode('|',$a); 
      if ($e[0] == '' OR $e[1] == '' ) { continue; } 
      if ($i == 1) { $c = 'checked'; } else { $c = ''; } 
      $tpl->set_ar_out( array ('KEY' => md5($e[0]), 'VAL' => $e[1], 'c' => $c) , 1 ); 
      $i++; 
    } 
     
    $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(); 
    ?>


    contents/templates/contact.htm
    <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 width="50%">Ihr Name:</td>
                                                    <td width="50%">
                                                    <input type="text" name="name" value="{name}" style="width: 100%"></td>
                                    </tr>
                                    <tr>
                                                    <td width="50%">Ihre E-mail:</td>
                                                    <td width="50%">
                                                    <input type="text" name="mail" value="{mail}" style="width: 100%"></td>
                                    </tr>
                                    <tr>
                                                    <td width="50%">Betreff:</td>
                                                    <td width="50%">
                                                    <input type="text" name="subject" value="{subject}" style="width: 100%"></td>
                                    </tr>
                                    <tr>
                                                    <td width="50%" valign="top">Nachricht:</td>
                                                    <td width="50%">
                                                    <textarea name="txt" style="width: 100%; overflow:auto;" rows="8">{text}</textarea></td>
                                    </tr>
                                    {ANTISPAM}
                                    <tr>
                                                    <td>&nbsp;</td>
                                                    <td>
                                                    <input name="submit" type="submit" value=" Absenden "></td>
                                    </tr>
                    </table>
    </form>



    Zuletzt modifiziert von Lord|Schirmer am 02.02.2011 - 22:35:53
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Beatzler Mitglied
    Registriert seit
    17.04.2005
    Beiträge
    186
    Beitragswertungen
    0 Beitragspunkte
    Hey,

    super klappt perfekt !!!

    Vielen lieben Dank dafür !


    MFG Beatzler
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Danke Lord, das haben wir auch gebraucht.
    Nur noch ne Frage dazu. Es werden immer die beiden User mit der ID 1 und ID 2 ausgewählt.
    Da bei uns der User mit der ID 1 ausgeschieden ist, wollte ich mal fragen, ob man nicht eine Liste einbauen kann, wo man die Empfänger per id eintragen kann.

    Oder besser gesagt, wie kann ich dem user mit der ID 1 eine andere ID Nummer geben, aber so, dass auch alle anderen Einträge (Forum, News, Kommentare etc.) mit übernommen werden.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Zur User-ID Änderung, schau mal hier

    Ansonsten kannst Du ja eigentlich die Kontaktempfänger im Adminbereich einstellen!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Oh verdammt, der Lord war schneller als ich. Wollte gerade meinen Post editieren da ich nach Oberadmin gesucht habe. Trotzdem Danke dafür.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten