Ankündigung

Einklappen
Keine Ankündigung bisher.

Spamschutz in meinem Kontaktformular

Einklappen

Neue Werbung 2019

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

  • Spamschutz in meinem Kontaktformular

    Hallo an alle,

    ich brauchte für meine Website ein neues Kontaktformular, da es nach dem Umzug auf einen neuen Server nicht mehr funktionierte.
    Nachdem ich so gut wie keinen Plan von PHP hab, hab ich heute schon viele Stunden damit zugebracht, ein Formular anzupassen - nämlich dieses hier.

    Und nun frage ich mich, wo der erste auf dieser Seite gepostete PHP-Code in diesem Formular hinkommt.

    Ich hab schon einige Varianten ausprobiert, die mir als halbwegs logisch erschienen - sie haben jedoch nicht funktioniert.

    Ich dachte, eigentlich müssten nur die Zeilen 3-6 im Formular vor das erste while. Hab auch schon mit den Klammern gespielt, aber so geht das nicht...

    Ich hoffe, hier kann mir jemand helfen.

    Danke,
    Elly


  • #2
    Ich versteh die Frage nicht. Gerade der 2. Link ist doch verständlich umsetzbar...
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Verständlich erklärt schon, aber ich weiß eben nicht, wo ich in meinem Formular den PHP Code eintragen muss. Es funktioniert nämlich nicht, wie ich das gemacht hab.


      Hier mein PHP-Teil.
      PHP-Code:
                          <?php
                          
      // wenn das Formular übermittelt wurde
                          
      if(isset($_POST['abschicken'])){
                              while(list(
      $feld,$wert)=each($_POST)){
                                  
      // übermittelte Inhalte "entschärfen"
                                  
      $wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im""",$wert);
                                  $
      $feld=$wert;
                                  
      // die übermittelten Variablen werden zum "Text der Email" zusammengefasst
                                  
      if($feld!="abschicken"$mailnachricht.=ucfirst($feld).": $wert\n";
                              }
                              
                              
      // Überprüfen ob alle Pflichtfelder gefüllt sind
                              
      empty($name) ? $err[] = "<p class=\"text01\">Bitte geben Sie Ihren Namen an.</p>" false;
                              empty(
      $mail) ? $err[] = "<p class=\"text01\">Bitte geben Sie Ihre E-Mail-Adresse an.</p>" false;
                              
      // wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
                              
      if(!empty($err)) {
                                  echo 
      "<p class=\"text01\">Folgende Fehler sind aufgetreten:</p>";
                                  foreach(
      $err as $fehler){
                                      echo 
      $fehler;
                                  } 
      ?>
                                  
                              <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
                              <table border="0" cellpadding="3" cellspacing="0" align="left">
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Name:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="name" value="<?php echo $name?>" size="30">
                                      </td>
                                      <td width="400" rowspan="13" align="right" valign="top"><div align="right"><img src="http://www.php.de/images/Tiroler Fahne.jpg" alt="Alpenurlaub Tirolurlaub Landurlaub bei Familie Perterer" width="150" height="90" align="right"></div></td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Stra&szlig;e:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="strasse" value="<?php echo $strasse?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">PLZ:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="PLZ" value="<?php echo $PLZ?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Ort:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="ort" value="<?php echo $ort?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Land:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="land" value="<?php echo $land?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">E-Mail:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="mail" value="<?php echo $mail?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Telefon:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="telefon" value="<?php echo $telefon?>" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                           <p class="anfrage">Ferienwohnung:&nbsp;</p>
                                      </td>
                                      <td>
                                          <select name="fewo">
                                              <option value="0" selected>bitte ausw&auml;hlen</option>
                                              <option value="Ferienwohnung I" <?if ($_REQUEST["fewo"]=="Ferienwohnung I") echo "selected='selected'"; ?>>Ferienwohnung I</option>
                                              <option value="Ferienwohnung II" <?if ($_REQUEST["fewo"]=="Ferienwohnung II") echo "selected='selected'"; ?>>Ferienwohnung II</option>
                                          </select>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Anreise:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="anreise" value=""<?php echo $anreise?>"" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Abreise:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="abreise" value=""<?php echo $abreise?>"" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                           <p class="anfrage">Personen:&nbsp;</p>
                                      </td>
                                      <td>
                                          <select name="personen">
                                              <option value="0" selected>bitte ausw&auml;hlen</option>
                                              <option value="2" <?if ($_REQUEST["personen"]=="2") echo "selected='selected'"; ?>>2</option>
                                              <option value="3" <?if ($_REQUEST["personen"]=="3") echo "selected='selected'"; ?>>3</option>
                                              <option value="4" <?if ($_REQUEST["personen"]=="4") echo "selected='selected'"; ?>>4</option>
                                              <option value="5" <?if ($_REQUEST["personen"]=="5") echo "selected='selected'"; ?>>5</option>
                                              <option value="6" <?if ($_REQUEST["personen"]=="6") echo "selected='selected'"; ?>>6</option>
                                          </select></br>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">&nbsp;</td>
                                      <td width="212" align="left">
                                          <p class="anfrage">
                                          Davon sind <input name="erwachsene" value="<?php echo $erwachsene?>" size="1"> Erwachsene und <input name="kinder" value="<?php echo $kinder?>" size="1"> Kinder im Alter von <input name="alter" value="<?php echo $alter?>" size="15"> Jahren.
                                          </p>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Sonstiges:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <textarea name="sonstiges" rows="6" cols="54" wrap="soft"><?php echo $sonstiges?></textarea>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">&nbsp;</td>
                                      <td>
                                         <input class="send" type="submit" name="abschicken" value="Senden">&nbsp;
                                         <input class="reset" type="reset" value="L&ouml;schen">
                                         
                                         <div class="spam_protect">
                                         <label for="nospam">Dieses Feld bitte nicht ausfüllen! (Spamschutz)</label>
                                         <input id="nospam" name="nospam" type="text">
                                         </div>
                                      </td>
                                  </tr>
                              </table>
                              </form>



                          <?php    // sind keine Fehler vorhanden, wird die Email versendet
                              
      } else {
                                  
      $mailbetreff="Ihre Anfrage";
                                  
      // HIER DIE EMPFÄNGER EMAIL-ADRESSE ANPASSEN!!!       
                                  
      echo (mail("x"$mailbetreff$mailnachricht"From: $mail")) ? "<p class=\"text01\">\n\nIhre Anfrage wurde erfolgreich versendet. Wir sagen Danke!</p>""<p>Ein Fehler ist aufgetreten!</p>";
                              }
                          
      // das Formular welches als erstes dem Besucher angezeigt wird
                          
      } else { ?>
                                  
                              <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
                              <table border="0" cellpadding="3" cellspacing="0" align="left">
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Name:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="name" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Stra&szlig;e:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="strasse" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">PLZ:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="PLZ" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Ort:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="ort" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Land:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="land" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">E-Mail:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="mail" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Telefon:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="telefon" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                           <p class="anfrage">Ferienwohnung:&nbsp;</p>
                                      </td>
                                      <td>
                                          <select name="fewo">
                                              <option value="0" selected>bitte ausw&auml;hlen</option>
                                              <option value="Ferienwohnung I" >Ferienwohnung I</option>
                                              <option value="Ferienwohnung II" >Ferienwohnung II</option>
                                          </select>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Anreise:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="anreise" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Abreise:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <input type="text" name="abreise" value="" size="30">
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                           <p class="anfrage">Personen:&nbsp;</p>
                                      </td>
                                      <td>
                                          <select name="personen">
                                              <option value="0" selected>bitte ausw&auml;hlen</option>
                                              <option value="2" >2</option>
                                              <option value="3" >3</option>
                                              <option value="4" >4</option>
                                              <option value="5" >5</option>
                                              <option value="6" >6</option>
                                          </select></br>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">&nbsp;</td>
                                      <td width="212" align="left">
                                          <p class="anfrage">
                                          Davon sind <input name="erwachsene" value="" size="1"> Erwachsene und <input name="kinder" value="" size="1"> Kinder im Alter von <input name="alter" value="" size="15"> Jahren.
                                          </p>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">
                                          <p class="anfrage">Sonstiges:&nbsp;</p>
                                      </td>
                                      <td width="212" align="left">
                                          <textarea name="sonstiges" rows="6" cols="54" wrap="soft"></textarea>
                                      </td>
                                  </tr>
                                  <tr>
                                      <td width="125" valign="top" align="right">&nbsp;</td>
                                      <td>
                                         <input class="send" type="submit" name="abschicken" value="Senden">&nbsp;
                                         <input class="reset" type="reset" value="L&ouml;schen">
                                         
                                         <div class="spam_protect">
                                         <label for="nospam">Dieses Feld bitte nicht ausfüllen! (Spamschutz)</label>
                                         <input id="nospam" name="nospam" type="text">
                                         </div>
                                      </td>
                                  </tr>
                              </table>
                              </form>
                              
                          <?php
                          
      }
                          
      ?>

      Kommentar


      • #4
        „geht nicht / funktioniert nicht...“ ist keine sinnvolle Fehlerbeschreibung! PHP.de Wiki | Debugging:Leitfaden
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Naja, ich bekomme Parse errors, die ich nicht beheben kann, weil ich zu wenig davon versteh.
          Ich hab zB den Code der Zeilen 3-6 vor das erste while eingefügt und bekomme einen Fehler auf Zeile 235.



          Hab das / else { / in der jetzt weggelassen. Nun bekomm ich zumindest keinen Error mehr, aber ob die Abfrage für die Spambots nun funktioniert, weiß ich nicht...

          PHP-Code:
                              <?php
                              
          // wenn das Formular übermittelt wurde
                              
          if(isset($_POST['abschicken'])){

                                  
          // http://www.shiftedwork.de/blog/2010/08/10/spam-bekampfen-aber-richtig/
                                  
          if(!empty($_POST['nospam'])) {
                                      
          // Honeypot
                                      
          die("Dear Spambot, i don't need penis enlargement!");
                                     }
                                   
                                  while(list(
          $feld,$wert)=each($_POST)){

                                      
          // übermittelte Inhalte "entschärfen"
                                      
          $wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im""",$wert);
                                      $
          $feld=$wert;
                                      
          // die übermittelten Variablen werden zum "Text der Email" zusammengefasst
                                      
          if($feld!="abschicken"$mailnachricht.=ucfirst($feld).": $wert\n";
                                  }
                                   
                                  
          // Überprüfen ob alle Pflichtfelder gefüllt sind
                                  
          empty($name) ? $err[] = "<p class=\"text01\">Bitte geben Sie Ihren Namen an.</p>" false;
                                  empty(
          $mail) ? $err[] = "<p class=\"text01\">Bitte geben Sie Ihre E-Mail-Adresse an.</p>" false;
                                  
          // wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
                                  
          if(!empty($err)) {
                                      echo 
          "<p class=\"text01\">Folgende Fehler sind aufgetreten:</p>";
                                      foreach(
          $err as $fehler){
                                          echo 
          $fehler;
                                      }
          ?>

          Kommentar


          • #6
            Poste doch mal die Fehler, vielleicht können wir ja was damit anfangen
            Relax, you're doing fine.
            RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

            Kommentar


            • #7
              Der Fehler lautete
              Parse error: syntax error, unexpected T_ELSE in /www/htdocs/w01218cd/english/anfrage.php on line 238

              Wenn ich dann das else aus dem Codeschnipsel für den Spambot weglasse, ist der Fehler weg. Aber ich schätze, die Abfrage stimmt dann nicht mehr. Das Formular an sich funktioniert aber (wieder).

              Kommentar


              • #8
                der von dir gepostete code hat keine 238 zeilen!
                parser error bedeutet zumeist vergessene klammern, hochkommate, semikolons etc pp.
                erklärt in http://php-de.github.io/jumpto/leitfaden/ unter "Sonderfall Parser Fehler".

                Kommentar


                • #9
                  $$feld=$wert;
                  empty($name) ? $err[] = "<p class=\"text01\">Bitte geben Sie Ihren Namen an.</p>" : false;
                  while(list($feld,$wert)=each($_POST))
                  if($feld!="abschicken") $mailnachricht.=ucfirst($feld).": $wert\n";
                  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
                  <input type="text" name="name" value="<?php echo $name; ?>" size="30">
                  Was für ein Müll. Such Dir lieber was zeitgemäßes.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Ich hatte absichtlich den PHP-Teil gepostet...keinen Header etc. Braucht es ja auch nicht, ist ja nur HTML und CSS.

                    Ob ein Script Müll ist oder nicht, versteh ich nicht. Ich hab es gesucht und angepasst. Und es funktioniert (abgesehen vom Spambot-Schnipsel). Ich hatte schon 2 andere Scripte in früheren Tagen, die nicht mehr funktionieren.
                    Bin schon froh, dass ich nach langer Zeit die Zeit gefunden habe, mich um ein neues zu kümmern. Und in diesem Script hätte ich halt gern die Spambots ausgeschlossen, da ganz schön viele derartiger Mails kommen.

                    Danke.

                    Kommentar


                    • #11
                      Das Scri[pt enthält mehrere problematische Sicherheitsaspekte. Dazu veralteten und unnötig komplizierten Code. Dazu Inline-Css. Es benutzt mail(), ebenfalls nicht mehr zeitgemäß. Und bei solchem Code, gruselts einen einfach nur:
                      PHP-Code:
                              echo (mail("adresse@domain.tld"$mailbetreff$mailnachricht"From: $email")) ? "<p>Vielen Dank für Ihre eMail!</p>""<p>Ein Fehler ist aufgetreten!</p>"
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        Guckstu:
                        Code:
                        Parse error: syntax error, unexpected T_ELSE in /www/htdocs/w01218cd/english/anfrage.php on line 238
                        besagt, daß in der Datei anfrage.php in Zeile 238 der Fehler auftritt, um genau zu sein ein unerwartetes (unexpected) else (T_ELSE).
                        Aufgrund dessen, daß Dein geposteter Code keine 238 Zeilen hat, können wir schwerlich sagen, was genau der Fehler ist. Die allgemeine Vermutung geht aber sicher in die Richtung von moma.

                        Zudem kommen die Hinweise von nikosch.
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          238 dann diese hier:

                          PHP-Code:
                                              // das Formular welches als erstes dem Besucher angezeigt wird
                                              
                          } else { ?> 
                          Ohne dem else im Schnipsel kommt dann der Error bei diesem else (23 nicht mehr.

                          Kommentar


                          • #14
                            Man sollte vielleicht noch ein paar Zeilen von davor und danach posten, da findet man den Fehler meistens.

                            LG
                            https://github.com/Ma27
                            Javascript Logic is funny:
                            [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                            Kommentar


                            • #15
                              Das gesamte Formular steht auf der 1. Seite.

                              Kommentar

                              Lädt...
                              X