Ergebnis 1 bis 4 von 4
  1. #1
    The Devils Advocat Avatar von HeadHunter
    Registriert seit
    Mar 2001
    Beiträge
    869

    Standard php Kontaktformular, Warnmeldung als Popup

    Hallo,...
    ich bin gerade dabei mir ne kleine HP zusammenzubasteln und habe mir von dieser Seite ein Script besorgt und angepasst. Funktioniert auch alles ganz gut, nur hätte ich gern, das als "Warnmeldung", falls nen Name oder die E-Mail nicht eingetragen ist, ein Popup mit dem jeweiligen Fehler erscheint.

    Wäre super wenn mir jemand sagen könnte, was ich dort anpassen muss.

    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";
          }
          
    $mailnachricht.="\nDatum/Zeit: "date("d.m.Y H:i:s");
          
    // Überprüfen ob alle Pflichtfelder gefüllt sind
          
    empty($nachname) ? $err[] = "<p>- Bitte den Nachnamen angeben.</p>" false;
          empty(
    $vorname) ? $err[] = "<p>- Bitte den Vornamen angeben.</p>" false;
          empty(
    $email) ? $err[] = "<p>- Bitte die Email-Adresse angeben.</p>" false;
          empty(
    $text) ? $err[] = "<p>- Welchen Wunsch haben Sie? Bitte den Text eingeben.</p>" false;
          
    // wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
          
    if(!empty($err)) {
            echo 
    "<p>Bitte korrigieren Sie folgende Fehler:</p>";
            foreach(
    $err as $fehler){
              echo 
    $fehler;
            } 
    ?>
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table width="100%" border="0" cellpadding="3" cellspacing="1">
            <tr><td width="140" align="right">*Nachname:</td><td align="left"><input type="text" name="nachname" value="<?php echo $nachname?>" style="width:100%;" /></td></tr>
            <tr><td align="right">*Vorname:</td><td align="left"><input type="text" name="vorname" value="<?php echo $vorname?>" style="width:100%" /></td></tr>
            <tr><td align="right">Firma:</td><td align="left"><input type="text" name="firma" value="<?php echo $firma?>" style="width:100%" /></td></tr>
            <tr><td align="right">Postanschrift:</td><td align="left"><input type="text" name="strasse" value="<?php echo $strasse?>" style="width:100%" /></td></tr>
            <tr><td align="right">Telefon:</td><td align="left"><input type="text" name="telefon" value="<?php echo $telefon?>" style="width:100%" /></td></tr>
            <tr><td align="right">*E-Mail:</td><td align="left"><input type="text" name="email" value="<?php echo $email?>" style="width:100%" /></td></tr>
            <tr><td colspan="2"><textarea rows="12"  style="width:100%" name="text"><?php echo $text?></textarea></td><td> </td></tr>
            <tr><td colspan="2" align="left" nowrap><br /><input type="reset" value="Formular l&ouml;schen" style="width:49%" />  <input type="submit" name="abschicken" class="button" value="Formular absenden" style="width:49%" /></td></tr>
            </table>
            </form>
            <p>*Pflichtfelder</p>
        <?php    // sind keine Fehler vorhanden, wird die Email versendet
          
    } else {
            
    $mailbetreff="Kontaktformular ".$_SERVER['HTTP_HOST'];
            
    // HIER DIE EMPFÄNGER EMAIL-ADRESSE ANPASSEN!!!       
            
    echo (mail("adresse@domain.tld"$mailbetreff$mailnachricht"From: $email")) ? "<p>Vielen Dank für Ihre eMail!</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 width="100%" border="0" cellpadding="3" cellspacing="1">
            <tr><td width="140" align="right">*Nachname:</td><td align="left"><input type="text" name="nachname" value="" style="width:100%;" /></td></tr>
            <tr><td align="right">*Vorname:</td><td align="left"><input type="text" name="vorname" value="" style="width:100%" /></td></tr>
            <tr><td align="right">Firma:</td><td align="left"><input type="text" name="firma" value="" style="width:100%" /></td></tr>
            <tr><td align="right">Postanschrift:</td><td align="left"><input type="text" name="strasse" value="" style="width:100%" /></td></tr>
            <tr><td align="right">Telefon:</td><td align="left"><input type="text" name="telefon" value="" style="width:100%" /></td></tr>
            <tr><td align="right">*E-Mail:</td><td align="left"><input type="text" name="email" value="" style="width:100%" /></td></tr>
            <tr><td colspan="2"><textarea rows="12"  style="width:100%" name="text"></textarea></td><td> </td></tr>
            <tr><td colspan="2" align="left" nowrap><br /><input type="reset" value="Formular l&ouml;schen" style="width:49%" />  <input type="submit" name="abschicken" value="Formular absenden" style="width:49%" /></td></tr>
            </table>
            </form>
            <p>*Pflichtfelder</p>
            <br />
            <br />
            <br />
            <br /><!-- bitte lassen Sie diesen Link sichtbar auf Ihrer Seite. Danke! -->
            <p style="text-align:right;font:normal 10px Verdana, Arial, Helvetica, sans-serif;"><a href="http://www.easy-bytes.de/" target="_blank">Easy Bytes Webdesign</a></p>
        <?php
        
    }
        
    ?>

  2. #2
    Mitglied
    Registriert seit
    May 2008
    Beiträge
    122

    Standard Re: php Kontaktformular, Warnmeldung als Popup

    Du könntest sowas mit Javascript realiesieren


    hier ein beispiel :

    HTML-Code:
    <html><head>
    <script type="text/javascript">
    function Click1 () {
      alert("Sie haben auf den Button geklickt");
    }
    
    function Click2 (Ereignis) {
      alert("Sie haben ins Fenster geklickt");
      window.routeEvent(Ereignis);
    }
    
    window.captureEvents(Event.CLICK);
    window.onclick = Click2;
    </script>
    </head><body>
    <form action="">
    <input type="button" value="Button" onclick="Click1()">
    </form>
    </body></html>
    hoffe konnte dir helfen
    Geändert von Freakdead85 (02. 02. 2012 um 01:11 Uhr)

  3. #3
    Nerd

    Board:Crew

    Avatar von Kugelfisch23
    Registriert seit
    Oct 2007
    Ort
    Im Ozean
    Beiträge
    16.810

    Standard Re: php Kontaktformular, Warnmeldung als Popup

    Unabhängig vom konkreten Problem kann ich nur stark davon abraten, das genannte Skript einzusetzen, da es verschiedene Schwachstellen aufreisst und u.U. ungültige E-Mails erzeugt. Durch die Nutzung der vom Benutzer übergebenen, in ungeeigner Weise gefilterten E-Mail-Adresse im Kontext der E-Mail-Header wird eine E-Mail-Injection-Schwachstelle geschaffen, über welche ein Angreifer sehr leicht Spam in deinem Namen verschicken kann, siehe http://de.wikipedia.org/wiki/E-Mail-Injection. Die Ausgabe der eingegebenen Werte und $_SERVER['PHP_SELF'] im (X)HTML-Kontext ohne adäquate Maskierung führt zu einer Cross-Site-Scripting-Schwachstelle. Schliesslich erzeugt das Skript unter Umständen ungültige E-Mails, insbesondere dann, wenn die vom Benutzer eingegebenen Daten Zeichen ausserhalb des 7-Bit-ASCII-Zeichenraums enthalten oder sich Zeilen mit mehr als 998 Zeichen Länge ergeben.

    Insofern kann ich dazu raten, anstelle von PHPs mail()-Funktion eine E-Mail-Bibliothek wie z.B. SwiftMailer zu nutzen. Ein Beispiel für ein Kontaktformular unter Nutzung von SwiftMailer findest du z.B. unter http://www.l-design.at/kontaktformular-generator.php (vgl. dazu den Thread unter http://board.gulli.com/thread/15612...eure-meinung-/ - inzwischen sind die dort genannten kritischen Schwachstellen beseitigt).

  4. #4
    The Devils Advocat

    (Threadstarter)

    Avatar von HeadHunter
    Registriert seit
    Mar 2001
    Beiträge
    869

    Standard

    Ui,..
    habt super vielen dank.
    Das werde ich gleich mal ausprobieren :-)

    ---

    also, ich habe mir den Code generiert und in die Seite eingefügt, sowie den lib Ordner in das selbe Verzeichnis kopiert.
    Jetzt bekomme ich leider eine Fehlermeldung oder Warnung.
    "Warning: is_writable() [function.is-writable]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/XXX) in /var/www/XXX/html/lib/preferences.php on line 15"

    Die Seite sowie das Lib Verzeichnis liegt in /html auf dem Webserver.

    Ich habe zwar nen bischen versucht die preferences.php anzupassen, aber irgendwie gelingt mir das nicht :-(
    Wäre echt klasse, wenn mir dabei jemand helfen könnte.

    PHP-Code:
    <?php

    /****************************************************************************/
    /*                                                                          */
    /* YOU MAY WISH TO MODIFY OR REMOVE THE FOLLOWING LINES WHICH SET DEFAULTS  */
    /*                                                                          */
    /****************************************************************************/

    // Sets the default charset so that setCharset() is not needed elsewhere
    Swift_Preferences::getInstance()->setCharset('utf-8');

    // Without these lines the default caching mechanism is "array" but this uses
    // a lot of memory.
    // If possible, use a disk cache to enable attaching large attachments etc
    if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir()))
    {
      
    Swift_Preferences::getInstance()
        -> 
    setTempDir(sys_get_temp_dir())
        -> 
    setCacheType('disk');
    }

    Swift_Preferences::getInstance()->setQPDotEscape(false);
    >
    Geändert von epiphora (04. 02. 2012 um 14:38 Uhr) Grund: Beiträge zusammengeführt.

  5.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •