Ankündigung

Einklappen
Keine Ankündigung bisher.

Überprüfung des Scriptes eines Kontaktformulars

Einklappen

Neue Werbung 2019

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

  • Überprüfung des Scriptes eines Kontaktformulars

    Hi,

    danke für den vorhin geposteten link zu einem Tutorial, hier mein Ergebnis...

    Ich habe momentan nicht die möglichkeit die Datei hochzuladen um sie zu testen. Würd mich freuen wenn ihr kurz drüberschauen könntet, ob das so funktioniert.

    speziell bitte einmal drauf schauen wegen meinen *pflichtfeldern*, ob die prüfung so korrekt angelegt ist.

    Code:
    <?php 
    <?php 
    // Grundlegende Einstellungen: 
    $Mail = ""; //vorname.nachname@gmx.de 
    $Betreff = ""; //Kontakt @ Firma 
    $Name = ""; //Dein Name 
    $Homepage = ""; // www.Firma.de
    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
      "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head>  
      <title>Kontaktformular</title> 
    </head> 
    <body> 
    <?php 
    ?> 
    
    
    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST"> 
    <font face="Arial">
    	<table style="width:600px; color:#123456;"> 
    	<tr>
      	<td align="left"><strong>&Uuml;ber Sie</strong></td>
      	<td>&nbsp;</td></tr>
    	<tr><td align="right"> </td><td>&nbsp;</td></tr>
    		<tr><td align="right">Anrede</td><td> <SELECT ID="Auswahlfeld1" NAME="Auswahlfeld1" NOFINSIDE="~!   ~!" >
    		<OPTION VALUE="" SELECTED> </OPTION>
    		<OPTION VALUE="">Frau</OPTION>
    		<OPTION VALUE="">Herr</OPTION>
    		</SELECT></td></tr>
    	
    	<tr><td width="263" align="right"><font face="Arial">Vorname</font>*</td>	<td width="325"><input name="Name1" type="text" size="40" id="Name1"></td></tr> 
    	<tr><td align="right"><font face="Arial">Nachname</font>*</td>		<td><input name="Name2" type="text" size="40" id="Name2"></td></tr>
    	<tr><td align="right">Telefon*</td>	<td><input name="phone" type="text" size="40" id="phone"></td></tr> 
      	<tr>
      	  <td align="right"><font face="Arial">E-Mail</font></td>		<td><input name="Mail" type="text" size="40" id="Mail"></td></tr>
      
    	<tr><td align="right"> </td><td>&nbsp;</td></tr>
    	<tr><td align="left"><strong>Sie haben Fragen zu? </strong></td> <td>&nbsp;</td></tr>
    	<tr><td align="right"> </td><td>&nbsp;</td></tr>
    
    		<tr>
    
     		 <td width="263" align="right">Ambulante Pflege</td><td><INPUT ID="Kontrollkaestchen1" TYPE=CHECKBOX NAME="Kontrollkästchen1" VALUE="" NOFINSIDE="~!   ~!" ></td></tr>
      
      		<td width="263" align="right">Angebot für Schulkinder </td><td><INPUT ID="Kontrollkaestchen1" TYPE=CHECKBOX NAME="Kontrollkästchen1" VALUE="" NOFINSIDE="~!   ~!" ></td></tr>
      
      		<td width="263" align="right">Kinderbetreuung </td><td><INPUT ID="Kontrollkaestchen1" TYPE=CHECKBOX NAME="Kontrollkästchen1" VALUE="" NOFINSIDE="~!   ~!" ></td></tr>
      
      		<td width="263" align="right">Angebot für Senioren </td><td><INPUT ID="Kontrollkaestchen1" TYPE=CHECKBOX NAME="Kontrollkästchen1" VALUE="" NOFINSIDE="~!   ~!" ></td></tr>
      
    	<tr><td align="right"> </td><td>&nbsp;</td></tr>
    
    	<tr>  <td align="left"><strong>Senden Sie uns eine Nachricht </strong></td><td>&nbsp;</td></tr>
    	<tr><td align="right"> </td><td>&nbsp;</td></tr>
        	<td align="right" valign="top"><font face="Arial">Ihre Nachricht</font>*</td><td><textarea name="Eintrag" cols="50" rows="10"></textarea></td></tr> 
    	<tr><td align="right"><input type="submit" value="abschicken" name="abschicken"></td><td><input type="reset" value="zur&uuml;cksetzen" name="reset"></td></tr> 
    </table> 
    </font>
    </form>
    
    </p> Die mit * gekennzeichneten Felder sind Pflichtfelder
    <p>&nbsp;</p>
    
    <?php 
       
      if(isset($_POST['abschicken'])){  
        
        if(empty($_POST['Name1']) OR empty($_POST['Name2']) OR empty($_POST['phone'])  OR empty($_POST['Eintrag'])) 
    {  
          print "Bitte füllen Sie alle Felder korrekt aus!
    \n"; 
        } 
    
        else{  
    
          $Abs_Mail = $_POST['Mail']; 
          $Abs_Name1 = $_POST['Name1']; 
          $Abs_Name2 = $_POST['Name2']; 
          $Abs_Nachricht = $_POST['Eintrag']; 
          
          $Nachricht = "Hallo $Name!\n\n $Abs_Name1 $Abs_Name2 hat dir auf deiner Website per Kontaktformular folgenden Text geschickt:\n _______\n$Abs_Nachricht\n_______\n"; 
      
         
          $senden = mail($Mail, $Betreff, $Nachricht,"From: $Abs_Mail"); 
      
    
         if($senden){ 
            print "Ihre Mail wurde erfolgreich versandt. Ihre Anfrage wird schnellstmöglich von einem unserer Mitarbeiter bearbeitet.
     
    "; 
          } 
      
          else {  
            print "Ihre Mail konnte leider nicht an mich versandt werden. 
     Probieren Sie es zu einem anderen Zeitpunkt noch einmal
    "; 
          } 
           
        } 
      } 
       
      ?> 
    </body> 
    </html> 
    ?>
    Das ganze ist in einer .html Datei und wird dann in den Body index der dazugehörigen Seite eingebunden, seh ich das richtig?

    Vielen Dank.

    Grüße Crow


  • #2
    Zitat von The-Crow Beitrag anzeigen
    Ich habe momentan nicht die möglichkeit die Datei hochzuladen um sie zu testen.
    Teste selber - dann, wenn du die Möglichkeit hast.


    Und informiere dich über das Stichwort Mail Header Injection, sonst baust du eine 1A Spamschleuder.

    Kommentar


    • #3
      Das macht keinen Sinn:
      PHP-Code:
      <?php 
      <?php
      PHP-Code:
      <?php 
      ?>
      Und bitte beachten:
      PHP-Code:
      // nicht gut !!!
      <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">

      // besser:
      <form action="<?php print $_SERVER['SCRIPT_NAME']; ?>" method="POST">
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        1.
        PHP-Code:
        <?php 
        <?php
        wtf???
        2.
        PHP-Code:
        <?php 
        ?>
        3. Das Skript ist so nicht sicher.
        Ich mag den Link gerade nicht suchen, aber IMHO ist es nicht "ok", mail folgendermassen ohne vorherige "Validierung" der Daten auszuführen:
        PHP-Code:
         $.. = $_POST[...]
        $senden mail($Mail$Betreff$Nachricht,"From: $Abs_Mail"); 
        So kann man "div. Daten" unterjubeln und sim sala bim hast du ein ein Problem und dein Hoster deaktiviert Mail, weil dein Formular für Spam jeglicher Art verwendet werden kann

        Am besten du verwendest eine der vielen frei verfügbaren Mail Klassen (Zend,...)
        Hier im Forum gibt es einen Thread dazu, Robo47(hoffe der Name stimmt^^) hat acuh etwas dazu in seinem Blog gepostet, aber müsstest du selbst mal suchen...

        Kommentar


        • #5
          Zitat von Arne Drews Beitrag anzeigen
          PHP-Code:
          // nicht gut !!!
          <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">

          // besser:
          <form action="<?php print $_SERVER['SCRIPT_NAME']; ?>" method="POST">
          wo is der unterschied? ^^

          Zitat von ragtek
          "From: $Abs_Mail"
          heißt ich muss mich drum kümmern, das der server prüft ob es die angegebene adresse tatsächlich gibt?

          Muss die Absendermailadresse dann auch ein auszufüllendes Pflichtfeld sein?

          Danke einstweilen

          Kommentar


          • #6
            Zitat von The-Crow Beitrag anzeigen
            wo is der unterschied? ^^
            Darin, wie leicht du deine Seite mit ersterem für XSS-Attacken anfällig machst.

            Kommentar


            • #7
              Lass das action="" - Attribut einfach leer, wenn du die Daten eh an die aktuelle Seite senden möchtest.

              Den von ragtek erwähnten Artikel findest du unter: http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail .

              [edit]

              Btw. dein HTML-Code ist schrecklich. Tabellendesign und veraltete Tags (<font>, ...).

              Code:
              <p>&nbsp;</p>
              
              <!-- sowie -->
              
              </html> 
              ?>
              auch nicht so das Gelbe vom Ei.
              http://hallophp.de

              Kommentar


              • #8
                Zitat von Asipak Beitrag anzeigen
                Lass das action="" - Attribut einfach leer, wenn du die Daten eh an die aktuelle Seite senden möchtest.
                Wie meinst du das "an die gleiche Seite senden"?

                Btw. dein HTML-Code ist schrecklich. Tabellendesign und veraltete Tags (<font>, ...).
                naja, so kann ichs halt. wie soll ichs denn sonst machen? ^^

                Code:
                <p>&nbsp;</p>
                
                <!-- sowie -->
                
                </html> 
                ?>
                ja, das nehm ich dann wohl noch raus


                Wäre es eigentlich ohne Mailvalidierung auch ok, einen Sicherheitscode einzufügen?

                Kommentar


                • #9
                  Grundlagen Formularverarbeitung -> Affenformular -> an gleiche Seite senden

                  Weißt Du überhaupt, was $_SERVER['PHP_SELF']; macht???
                  Immerhin benutzt Du es doch...
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Beachte das EVA-Prinzip.

                    Kommentar


                    • #11
                      Zitat von The-Crow Beitrag anzeigen
                      Wie meinst du das "an die gleiche Seite senden"?
                      Indem du
                      Code:
                      $_SERVER['SCRIPT_NAME']
                      im action=""-Attribut angibst, sagst du dem Formular, dass es beim Absenden an die geöffnete Seite gesendet wird. Warum man sich damit immer noch einen "abbricht" kann ich gar nicht verstehen. Es ist viel einfacher und semantisch immer noch korrekt, das Attribut einfach leer zu lassen.



                      naja, so kann ichs halt. wie soll ichs denn sonst machen? ^^
                      Mit CSS.
                      - Warum Layout mit Tabellen dumm ist: Probleme definiert, Lsungen angeboten
                      - http://webstandard.kulando.de/post/2...n_es_vermeiden

                      Wäre es eigentlich ohne Mailvalidierung auch ok, einen Sicherheitscode einzufügen?
                      Was meinst du damit?

                      Ergänzung zu xm22 (Post #10): EVA-Prinzip (Standardverfahren) - PHP.de Wiki .

                      Gruß
                      http://hallophp.de

                      Kommentar


                      • #12
                        Das ein oder andere hab ich schon geändert, danke erstmal.
                        Ich hab mir jez einfach mal nen kostenlosen webspace geholt, und die kontakt.php hochgeladen um sie zu testen....

                        geht nicht, wie bekomm ich jetzt raus, wo der fehler liegt?
                        Ich habe mein gesamtes Formular ausgefüllt und drücke auf senden. Jetzt wird aber unten stehende Zeile aktiv...warum?

                        PHP-Code:
                        else {  
                                print 
                        "Ihre Mail konnte leider nicht an mich versandt werden. 
                         Probieren Sie es zu einem anderen Zeitpunkt noch einmal
                        "

                              } 
                        außerdem wird nachdem ich "senden" drücke (und ja dann die fehlermeldung kommt, das ich alle pflichtfelder füllen soll) is das ganze formular wieder leer. kann ich das ändern? Also, das der schon geschriebene text stehenbleibt, bis entweder erfolgreich versandt wurde, oder ich auf "zurücksetzen" drücke?

                        Kommentar


                        • #13
                          Hallo,

                          greife doch bitte zu einer Mailerklasse!

                          http://www.php.de/adventskalender-20...fverkehrs.html

                          außerdem wird nachdem ich "senden" drücke (und ja dann die fehlermeldung kommt, das ich alle pflichtfelder füllen soll) is das ganze formular wieder leer. kann ich das ändern?
                          Affenformular (Standardverfahren) - PHP.de Wiki
                          http://hallophp.de

                          Kommentar


                          • #14
                            Auf gratis-webspace ist sehr oft (aus naheliegenden Gründen) der Versand von Mails nicht möglich.
                            Nimm PHPmailer und sende über einen anderen Mailserver aus.
                            PHP-Code:
                            if ($var != 0) {
                              
                            $var 0;

                            Kommentar


                            • #15
                              Jetz seh ich das ja erst:
                              Ich habe momentan nicht die möglichkeit die Datei hochzuladen um sie zu testen. Würd mich freuen wenn ihr kurz drüberschauen könntet, ob das so funktioniert.
                              Kleiner Tipp: Lokale Arbeitsumgebung anlegen

                              Kommentar

                              Lädt...
                              X