Pflichtfelder bei Formular aktivieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ich komme nicht weiter ... ich habe den Script eingefügt, aber es klappt nicht. Eigentlich soll ja das Script meckern, wenn ein Pflichtfeld fehlt, aber statt dessen brauch ich nur irgendein Feld auszufüllen und das reicht ... Ihr könnt es ja mal hier ausprobieren:

    http://www.uni-due.de/io/email/beispiel.htm

    Hier der Code aus beipiel.htm
    Code:
    <form name="mail" method="post" action="planetmail.php">
    
    <!-- <input type=hidden name="send_index" value="dat2"> -->
    
    <b>Name</b>
    <br />
    <input type="text" id="name" name="name" />
    <br /><br />
    <b>eMail-Adresse</b>
    <br />
    <input type="text" id="adresse" name="adresse" />
    <br /><br />
    <b>Mitteilung</b>
    <br />
    <textarea name="wohnort" id="wohnort "rows="6"></textarea>
    <br />
    <input name="Submit" type="submit" value="Nachricht senden" />
    
    </form>
    Zuletzt geändert von Sarah; 24.09.2007, 14:35.

    Kommentar


    • #17
      Und hier der Code von planetmail.php

      PHP-Code:
      <?php

      if(isset($_POST)){
        
      $fehler = array();
        
      $zwang = array('name','adresse','wohnort');
        
      $leer array_keys($_POST,'');
        foreach(
      $leer as $wert){
          if(
      array_key_exists($wert,$zwang)){
            switch(
      $wert){
              case 
      'name':
                
      $fehler['name'] = 'Bitte einen Namen angeben';
              break;
              case 
      'adresse':
                
      $fehler['adresse'] = 'Ihre Adresse wäre auch ganz nett';
              break;
              case 
      'wohnort':
                
      $fehler['wohnort'] = 'Wir müssten auch noch wissen wo sie wohnen';
              break;
            }
          }
        }
      }


      sendEmail();

      function 
      sendEmail(){





      // Geben Sie hier ein gültige eMail-Adresse von sich an
      // Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
      // Option nicht aktiviert (also auf 1 gesetzt) wird.
      // (Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)
      $emailFrom "sarah.mix@gmx.net";



      // eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
      // 1 => Ja  | 0 => Nein
      $useSendersEmail 1;

      // Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
      // eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
      // Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!
      $mailFromField 'eMail-Adresse';



      // SPAM-MISSBRAUCH-SCHUTZ
      // Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
      // Genauere Informationen finden Sie in der README.txt
      // 1 => aktiviert  | 0 => NICHT aktiviert
      $spamProtect 1;

      // "Badword"-Schutz (Erweiterung zum Spam-Schutz)
      // Hier können Sie Wörter und Wortkombinationen eintragen, die nicht in einer eMail vorkommen dürfen.
      // Kommen diese Wörter vor, wird die Verarbeitung der Nachricht mit einer Fehlermeldung abgebrochen.
      // Zusätzlich können Sie angeben, wie oft ein Wort maximal vorkommen darf.
      // Z.B. kann es sein, dass jemand einen Link mit "http:" senden möchte. Immer häufiger kommen aber auch
      // Spam-eMails vor, welche unmengen an Links enthalten. So könnte man einstellen, dass mehr als X Links
      // in einer Nachricht vermutlich Spam sind.
      // In der Vorgabe, dürfte in der Nachricht das Wort "Viagra" nicht einmal vorkommen, "Free Software" dürfte
      // Ihnen zumindest einmal gesagt werden. Selbstverständlich können hier auch eMail-Adressen oder andere
      // Inhalte eingetragen werden.
      // NUTZEN SIE DIESE OPTION MIT BEDACHT, UM NICHT UNNÖTIG "GUTE" EMAILS ZU BLOCKEN
      $GLOBALS['badwords'] = array('Viagra' => '0''************' => '0''arsch' => '0',  'kostenlos' => '0''free' => '0''@' => '1');




      // Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
      // Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
      // "kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
      // Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
      // Genauere Informationen finden Sie in der README.txt
      $send_dat = array(

      "dat1" => array("sarah.mix@gmx.de""""CAMPUS ESSEN Anmeldung O-Tage""danke.htm"),
      #"dat2" => array("", "", "", ""),
      #"dat3" => array("", "", "", ""),

      );



      // Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
      // TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
      // der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
      // geben sie für den grafischen Button  name="senden" ein.
      $ignoreFormFields = array('send_index''senden''submit''check_form','Submit','senden_y','senden_x');


      ###########################################################
      # ENDE DER KONFIGURATION (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)
      ###########################################################
      $mailto '';
      $mail_cc '';
      $subject'';
      $message '';

      // Datum (+deutsche Tage)
      $name_tag = array('Sonntag''Montag''Dienstag''Mittwoch''Donnerstag''Freitag''Samstag');
      $day $name_tag[date('w')];
      $year date('Y');  
      $n date('d');
      $month date('m');
      $time date('H:i');


      // Prüfung, welches send_dat-Array zum senden verwendet werden soll
      // Default: dat1
      !empty($_POST['send_index']) ? $st $_POST['send_index'] : $st 'dat1';


      // Versende Daten
      $mailto $send_dat[$st][0]; // Ziel-eMail-Adresse
      $mail_cc $send_dat[$st][1]; // 2. Ziel-eMail-Adresse (Kopie)
      $subject $send_dat[$st][2]; // Subjekt
      $redirect $send_dat[$st][3]; // Zielseite nach eMailversand



      // Formularfelder auslesen und in die eMail "einsetzen"
      // Zu ignorierende Felder werden NICHT eingesetzt
      while (list($fieldName$fieldValue) = each($_POST))
      {
          if (
      in_array($fieldName$ignoreFormFields) || empty($fieldValue)) continue;
          
      $message .= "$fieldName:\n$fieldValue\r\n\r\n\r\n";
      }


      // Funktion zum prüfen des Inhaltes aufrufen
      $message cleanContent($message$spamProtect);

      // Datum und Zeit voranstellen
      $message ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::\r\n\r\n$message";


      // Weiterleitung auf eine andere Seite
      Header("Location: $redirect");


      // Absender-eMail-Adresse
      ($useSendersEmail == 1) ? $emailFrom $_POST[$mailFromField] : $emailFrom $emailFrom;

      $header "From: $emailFrom";


      // Kopie schicken
      if (!empty($mail_cc)) {
          
      $header .= "\r\n";
          
      $header .= "Cc: $mail_cc";
      }


      // eMail verschicken
      if ($testOffline == '0') {
          @
      mail ($mailto$subject$message$header)
              || die(
      '<b>Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut!</b>');
      }

      // eMail zum testen in ein Textfile schreiben
      if ($testOffline == '1') {
          
      $testmail fopen('email.txt''w+');
          
      fwrite($testmail$message);
          
      fclose($testmail);
      }


      // end function



      /***** Inhalte "bereinigen" *****/
      function cleanContent($content$spamProtect)
      {
          
      $content str_replace('<br>'"\r\n"$content);
          
      $content stripslashes(strip_tags($content));
          
          
      // Spam-Missbrauch-Schutz aufrufen
          
      if($spamProtect == 1) { $content checkContent($content); }
          
          return 
      $content;
      }


      /***** Spam-Missbrauch-Schutz *****/
      function checkContent($tpcontent)
      {
          
      // kritische Zeichen entfernen
          
      $checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
          
      $tpcontent preg_replace($checkit""$tpcontent);

          
      // Script-Abbruch bei eindeutigem Spamversuchen
          
      if (preg_match("/(MIME\-Version\:|Content\-Type\:)/i"$tpcontent)) {
              die(
      'Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
          }

          
      // "Badword"-Überprüfung
          
      if ($GLOBALS['badwords']) {
              foreach(
      $GLOBALS['badwords'] as $badword=>$count)
              {
                  
      preg_match_all('/\b'.$badword.'\b/i'$tpcontent$match);

                  if (
      sizeof($match[0]) > $count) {
                      die(
      'Ihre Eingabe beinhaltet nicht akzeptierte Zeichen oder Wörter. Diese Nachricht wird nicht gesendet!');
                  }
              }
          }
          
          
      // Formular ohne Inhalte nicht versenden
          
      if (empty($tpcontent)) {
              die(
      'Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
          }
          
          return 
      $tpcontent;
      }


      ?>
      Zuletzt geändert von Sarah; 24.09.2007, 14:40.

      Kommentar


      • #18
        Wo liegt denn da nur der Wurm drin

        Kommentar


        • #19
          wenn ich das auf die schnelle richtig sehe, werden fehler zwar erkannt, aber es passiert schlichtweg nichts, um das scipt aufzuhalten.

          tobis script macht nur die überprüfung.

          was du jetzt noch machen musst, ist eine abfrage bauen, die entscheidet ob das script ne mail schickt (!$fehler) oder ob das script abbricht ($fehler)....

          ich denke, an der stelle kann mal ein versuch von dir gestartet werden ... sonst lernste ja nüschts
          **********
          arkos
          **********

          Kommentar


          • #20
            Also ich habe hin und her probiert, aber es hat einfach nicht geklappt. Wäre echt toll wenn mir einer die Lösung veraten könnte. Ich glaube danach werde ich sowieso nie wieder mit PHP arbeiten

            Kommentar


            • #21
              1. Ich glaube kaum, dass du dein error_reporting() wie es in den Regeln steht voll aufgedreht hast. Du prüfst die Daten und rufst dann eine Funktion auf, die erst eine Zeile später definiert wird
              2. Bevor du deine sendEmail() aufrufst prüfst du noch, dass $fehler leer ist
              PHP-Code:
              if(empty($fehler)){
                
              sendEmail();
              }else{
                
              //Fehlerbehandlung

              3.Habe den Code nur schnell überflogen, aber mit diesem Code kann man dein Form easy zum spammen missbrauchen.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #22
                prob mit der überprüfung

                vorneweg: ich bin ein völliger php-dau und fummle mir das wenige, das ich brauche, irgendwie zusammen.

                ich habe ein formular, das an einen autoresponder versandt wird (das kann ich mit html direkt in meine page einbauen und das design per css anpassen). das fehler-korrekturform des autoresponders (verbleibt auf deren server) ist häßlich und praktisch nicht umzustylen.

                deshalb möchte ich die überprüfung in mein eigenes form integrieren. mit js könnte ich das, aber das nützt ja nix, wenn der user js deaktiviert hat.

                im prinzip müßte ja das (natürlich angepaßte) php-script in diesem thread als lösung taugen.

                PHP-Code:
                <?php
                if(isset($_POST)){ 
                $fehler = array(); 
                $zwang = array('name','adresse','wohnort'); 
                $leer array_keys($_POST,''); 
                foreach(
                $leer as $wert){ 
                if(
                array_key_exists($wert,$zwang)){ 
                switch(
                $wert){ 
                case 
                'name'
                $fehler['name'] = 'Bitte einen Namen angeben'
                break; 
                case 
                'adresse'
                $fehler['adresse'] = 'Ihre Adresse wäre auch ganz nett'
                break; 
                case 
                'wohnort'
                $fehler['wohnort'] = 'Wir müssten auch noch wissen wo sie wohnen'
                break; 




                ?>
                das form (code vom responder geliefert) beginnt so

                HTML-Code:
                <form action="http://....../subscribe/post.......28e&amp;id=aac20ef9b7" method="post" id="mc-embedded-subscribe-form" 
                (die 367 zeichen der url habe ich rausgekürzt)

                und endet mit einem submit-button so:

                HTML-Code:
                <input type="submit" value="absenden" name="subscribe" id="mc-embedded-subscribe" class="btn">

                wie und wo muß ich das script einbauen und wie erkennt "($_POST)", daß der button geklickt wurde?


                Danke, falls mir jemand helfen kann.
                Zuletzt geändert von glStgt; 18.07.2010, 19:00.

                Kommentar


                • #23
                  Hallo und willkommen im Forum,

                  bitte Beitrag gemäß Forenregeln anpassen und Code-Tags benutzen.

                  Gruß,

                  Amica
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar

                  Lädt...
                  X