1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Suche Kontaktformular (+tut für die Integration in die Seite)

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von img, 21.05.08.

  1. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    ich suche ein Kontaktformular welches ich einfach (oder nach Anleitung) in eine bestehende Seite einbauen kann. Die Seite ist komplett mit CSS gestaltet, ohne Tabellen und JS.

    Wie so oft bei solchen Threads: ich habe keine Ahnung von php.. drum wäre ein Formular mit Anleitung Ideal... (Tutorial?)

    jemand vielleicht nen Tip?


    grüße img
     
  2. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    folgendes als kontakt.php (oder so) speichern (dabei die Adresse in der zweiten Zeile anpassen):

    Code:
    <?php
    
    $email = "mustermann@musterdomain.mu"; // Empfängeradresse anpassen
    
    $action = $_REQUEST['action'];
    $absname = $_REQUEST['absname'];
    $inhalt = $_REQUEST['inhalt'];
    $absemail = $_REQUEST['absemail'];
    $betreff = $_REQUEST['betreff'];
    
      if($action=="senden") {
    
        $inhalt = trim(stripslashes($inhalt));
        
        // Prüfung der Angaben nach dem Senden
    
        if(!$absname) $fehler[] = "Ihr Name fehlt.";
        if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
        if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
        
        if(!count($fehler)) { 
    
        
          @mail($email ,$betreff,$inhalt,"From: ".$absemail);
          echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
          echo "Name: <b>$absname</b><br />\n";
          echo "Inhalt: <b>".nl2br($inhalt)."</b><br />\n";
      
        } else { // Fehlerausgabe, wenn Felder leer waren
    
          
          echo "Beim Senden traten folgender Fehler auf:";
          echo "<ul><li>".implode("<li>",$fehler)."</ul>";
        
        }
        
      }else{
    
    ?>
    
    <form action="" method="post">
    <input type="hidden" name="action" value="senden">
    
      <table width=100%><tr>
        <td>Name</td>
        <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
      </tr><tr>
        <td>E-Mailadresse</td>
        <td><input name="absemail" size="40" value=""></td>
      </tr><tr>
        <td></td>
        <td><input name="betreff" type="hidden" value="Kontaktformular E-Mail"></td>
      </tr><tr>
        <td>Inhalt</td>
        <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
      </tr><tr>
        <td> </td>
        <td><input type="submit" value="senden"></td>
      </tr></table></form>
    <?
    }
    ?>
    und an entsprechender Stelle mit
    Code:
    include "kontakt.php";
    einbinden (evtl. auf relative Pfadangaben achten)
     
    #2 .holger, 21.05.08
    Zuletzt bearbeitet: 21.05.08
  3. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    ok ich tests mal, wie muss ich das
    include "kontakt.php"; in den body einbinden?
     
  4. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    Deine Seiten Enden sicher alle auf .php, oder?

    Wenn nicht, dann ändere die Endung auf .php, solange dein Webspace php kann ist das kein Problem - musst nur die Verlinkungen innerhalb der Seite auch so anpassen.
    Dann haste eine PHP Seite mit deinem HTML Layout drin:

    Code:
    <html>
     <head>
      <title>Seitentitel</title>
     </head>
    <body>
     Inhalt der Seite ...
    </body> 
    </html>

    an der Stelle, an der das Formular erscheinen soll machst Du dann mit php (deswegen den Dateitypen auf php ändern) die Integration:

    Code:
    <html>
     <head>
      <title>Seitentitel</title>
     </head>
    <body>
     Inhalt der Seite ...
    
    <?
    include "kontakt.php";
    ?>
    
    </body> 
    </html>
    das <? leitet dabei den PHP Quelltext ein und das ?> beendet es wieder. Alles was dazwischen ist, erkennt der Webserver bzw. der PHP Parser als zu verarbeitenden Code, den Rest gibt er einfach so über die Leitung an den Browser weiter (deswegen kann man so schön oder unschön PHP und HTML mischen)
     
  5. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    werds gleich ma antesten und geb dir ne Rückmeldung :)
     
  6. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    Parse error: syntax error, unexpected T_VARIABLE in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 5
     
  7. .holger

    .holger Geflammter Kardinal

    Dabei seit:
    13.09.04
    Beiträge:
    9.117
    ooops, nach dem " in der zweiten Zeile fehlte ein ; hab ich korrigiert.
     
  8. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    ah super danke, leider sind da noch 1, 2 kleine Fehler drin glaube ich...

    trägt man die emailadresse nicht ein, kommt keine fehlermeldung und er sendet alles ab. Und in der mail wird leider das feld "name" nicht mitgesendet?
    Sehe gerade, die emailadresse wird auch nicht mitgesendet
     
  9. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    mach mal in der zeile mit dem @mail mal zwischen jedes ,$ ein leerzeichen, es kann webserver geben, die sich dran verschlucken
     
  10. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    Ich hatte da mal etwas hier gepostet, das funktioniert auch super, mit allen möglchen Abfragen, hier ist es: http://www.apfeltalk.de/forum/kommentar-mail-form-t135441.html
    Ich kann es dir ein wenig vereinfachen (persönliches Zeug rausnehmen, das nur ich brauche), wenn du möchtest

    EDIT: das da oben ist hat das alles auch nur "schöner" ;)
     
  11. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    leider nich, dann geht nichmal mehr das eingabe interface :(
     
  12. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    Code:
    @mail($email , $betreff , $inhalt , "From: " . $absemail);
    geht nicht?

    EDIT: wenn du das $ von z.B. betreff trennst, dann erkennt PHP das nicht mehr als Variable.
    Alles mit $ vorne ist eine Variable in PHP und $ muss von einer Zahl/einem Buchstaben gefolgt sein - wenn da ein Leerzeichen ist, dann ist das ein Fehler bei dem das Skript abbricht
     
  13. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    ah ok ja die seite geht, aber die mail und name wird trotzdem nicht gesendet, auch die überprüfung der mail geht nich
     
  14. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    hast du deine Emailadresse angepasst?
    Versuch doch mal $_REQUEST durch $_POST zu ersetzen (alle)
     
  15. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    kommt mnoch immer nur das feld "inhalt" in der email an
     
  16. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    kommt die Email also an?
    pack doch nur mal aus reiner Neugierde

    Code:
    error_reporting(E_ALL);
    direkt an den Anfang, ganz oben unter <?php und vor $email

    wenn die Mail ankommt, dann kannst du aber die anderen Variablen in den Text einfügen, sowas wie
    Code:
    $inhalt2 = $absname . ", " . $absemail . " sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . $inhalt ;
    das setzt du vor den Block, der mit @mail losgeht und die Zeile mit @mail ersetzt du dann durch
    Code:
    @mail($email , $betreff , $inhalt2 , "From: " . $absemail);
     
  17. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    wenn ichs so mach

    <?php
    error_reporting(E_ALL);
    $email = "#####"; // Empfängeradresse anpassen

    $action = $_POST['action'];

    dann gehts nich mehr ;)

    Notice: Undefined index: action in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 5

    Notice: Undefined index: absname in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 6

    Notice: Undefined index: inhalt in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 7

    Notice: Undefined index: absemail in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 8

    Notice: Undefined index: betreff in /mnt/web3/53/81/51260781/htdocs/gb/form.php on line 9
     
  18. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    dann lass error_reporting weg, war nur so ein Gedanke.

    Wenn die Email im Endeffekt bei dir ankommt, dann hilft $inhalt2, da siehst du dann alles im Emailtext.
     
  19. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    Code:
    <?php
    $email = "jan@img-media.de"; // Empfängeradresse anpassen
    
    $action = $_POST['action'];
    $absname = $_POST['absname'];
    $inhalt = $_POST['inhalt'];
    $absemail = $_POST['absemail'];
    $betreff = $_POST['betreff'];
    
      if($action=="senden") {
    
        $inhalt = $absname . ", " . $absemail . ", sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . $inhalt ;
        
        // Prüfung der Angaben nach dem Senden
    
        if(!$absname) $fehler[] = "Ihr Name fehlt.";
        if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
        if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
        
        if(!count($fehler)) { 
    
            @mail($email , $betreff, $inhalt, "From: " . $absemail);
            echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
          echo "Name: <b>$absname</b><br />\n";
          echo "Inhalt: <b>".nl2br($inhalt)."</b><br />\n";
      
        } else { // Fehlerausgabe, wenn Felder leer waren
    
          
          echo "Beim Senden traten folgender Fehler auf:";
          echo "<ul><li>".implode("<li>",$fehler)."</ul>";
        
        }
        
      }else{
    
    ?>
    
    <form action="" method="post">
    <input type="hidden" name="action" value="senden">
    
      <table width=100%><tr>
        <td>Name</td>
        <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
      </tr><tr>
        <td>eMail</td>
        <td><input name="absemail" size="40" value=""></td>
      </tr><tr>
        <td></td>
        <td><input name="betreff" type="hidden" value="Kontaktformular Webseite"></td>
      </tr><tr>
        <td>Inhalt</td>
        <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
      </tr><tr>
        <td> </td>
        <td><input type="submit" value="senden"></td>
      </tr></table></form>
    <?
    }
    ?>
    die bestätigung des absendens sieht etwas seltsam aus ;)

    Ihre Nachricht wie folgt wurde gesendet.
    Name: name
    Inhalt: name, email sendete folgende Nachricht mit dem Betreff 'Kontaktformular Webseite':
    inhalt
     
  20. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    Was ich meinte ist hier mal rot markiert:

    Code:
    <?php
    $email = "jan@img-media.de"; // Empfängeradresse anpassen
    
    $action = $_POST['action'];
    $absname = $_POST['absname'];
    $inhalt = $_POST['inhalt'];
    $absemail = $_POST['absemail'];
    $betreff = $_POST['betreff'];
    
      if($action=="senden") {
    
        $inhalt[COLOR="Red"]2[/COLOR] = $absname . ", " . $absemail . ", sendete folgende Nachricht mit dem Betreff '" . $betreff . "':\n" . [COLOR="Red"]$inhalt[/COLOR] ;
        
        // Prüfung der Angaben nach dem Senden
    
        if(!$absname) $fehler[] = "Ihr Name fehlt.";
        if(!$inhalt) $fehler[] = "Sie haben keine Nachricht geschrieben.";
        if(!$email) $fehler[] = "Ihre Emailadresse fehlt";
        
        if(!count($fehler)) { 
    
          @mail($email , $betreff, $inhalt[COLOR="red"]2[/COLOR], "From: " . $absemail);
          echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
          echo "Name: <b>$absname</b><br />\n";
          echo "Inhalt: <b>".nl2br([COLOR="red"]$inhalt[/COLOR])."</b><br />\n";
      
        } else { // Fehlerausgabe, wenn Felder leer waren
    
          
          echo "Beim Senden traten folgender Fehler auf:";
          echo "<ul><li>".implode("<li>",$fehler)."</ul>";
        
        }
        
      }else{
    
    ?>
    
    <form action="" method="post">
    <input type="hidden" name="action" value="senden">
    
      <table width=100%><tr>
        <td>Name</td>
        <td><input name="absname" size="40" value="<?php echo $name; ?>"></td>
      </tr><tr>
        <td>eMail</td>
        <td><input name="absemail" size="40" value=""></td>
      </tr><tr>
        <td></td>
        <td><input name="betreff" type="hidden" value="Kontaktformular Webseite"></td>
      </tr><tr>
        <td>Inhalt</td>
        <td><textarea name="inhalt" rows="5" cols="40"><?php echo $inhalt; ?></textarea></td>
      </tr><tr>
        <td> </td>
        <td><input type="submit" value="senden"></td>
      </tr></table></form>
    <?
    }
    ?>
    Deswegen ja $inhalt2, dann sieht das so aus:

    Ihre Nachricht wie folgt wurde gesendet.
    Name: name
    Inhalt: inhalt

    weil: $inhalt2 dient nur dir, damit du einen schnellen Überblick hast, wer was schreibt und mit welcher Emailadresse, auch wenn du kein Absenderfeld hast.
    Der Benutzer muss ja nicht sehen, wie du am Ende die Mail bekommst ($inhalt2), sondern nur dass, was er dir schreibt ($inhalt).
     

Diese Seite empfehlen