Kontaktformular

Guten Tag,

ich möchte auf meiner Webseite ein Kontaktformular anbieten und ein User hier im Forum hat mir freundlicherweise ein Skript zukommen lassen.
Wenn ich dort auf abschicken klicke, öffnet sich die Datei kontakt_versenden.php. Kann man dies irgendwie unterbinden, sodass wieder auf das leere Kontaktformular gesprungen wird?
Ich habe zwar eine Mail bekommen, aber ohne Inhalt. Was ist denn da schief gegangen?

Schon mal vielen Dank im Voraus.

Gruß Elsner

kontakt.html:

[code]

Nachname
Vorname
Ort
E-Mail
Nachricht
 
[/code]

kontakt_versenden:

<?php //Eingaben darstellen echo "Nachname: $_POST[nachname]"; echo "Vorname: $_POST[vorname]"; echo "Ort: $_POST[ort]"; echo "Email-Adresse: $_POST[email]"; echo "Nachricht: $_POST[nachricht]"; //email versenden mail("volner-reisel@freenet.de","$_POST[Email]"); ?>

Du guckst dir am besten mal die mail-Funktion an:

de.php.net/manual/de/function.mail.php

Den Inhalt solltest du zu einer Zeichenkette vereinen und diese
dann der Funktion übergeben, Betreff könntest du dann auch
noch hinzufügen…

Vielen Dank hoffmann für deine schnelle Reaktion. Das größte Problem ist, dass ich mich mit PHP noch nicht auskenne und mir momentan die Zeit fehlt, um mich dort einzuarbeiten. Ich weiß noch nicht mal, was du mit “zur Zeichenkette vereinen” meinst.
Den Link habe ich mir mal angeschaut und den Code folgendermaßen geändert:

<?php //Eingaben darstellen echo "Nachname: $_POST[nachname]"; echo "Vorname: $_POST[vorname]"; echo "Ort: $_POST[ort]"; echo "Email-Adresse: $_POST[email]"; echo "Nachricht: $_POST[nachricht]"; //email versenden mail("volner-reisel@freenet.de","Betreff: Kontakt",$[nachricht]); ?>

Hallo

Ich hab dir ja den skript gegeben.
Du hast oben die nachricht vergessen.
Passt ja jetzt. :wink:

Falls er wieder zum leeren Formular sprigen soll mach folgendens:

<?php
//Eingaben darstellen
echo "Nachname: $_POST[nachname]";
echo "Vorname: $_POST[vorname]";
echo "Ort: $_POST[ort]";
echo "Email-Adresse: $_POST[email]";
echo "Nachricht: $_POST[nachricht]";
//email versenden
mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht']);
?>
<!-- Hier Kontaktformular erneut einfügen. -->

Das bewirkt dass nach dem absenden in der php datei das Fomular auch ist. :wink:

Noch eine möglichkeit wäre ein dynamisches Formular:

if(isset($_POST['nachricht'])){
//mail versenden 
echo "Nachname: $_POST[nachname]";
echo "Vorname: $_POST[vorname]";
echo "Ort: $_POST[ort]";
echo "Email-Adresse: $_POST[email]";
echo "Nachricht: $_POST[nachricht]";
//email versenden
if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht'])){
echo "Die email wurde erfolgreich versendet.";
}else{
echo "Fehler beim versenden der nachricht.";
}
}
<form action="" method="POST">
<table width="100%">
    <colgroup>
        <col width="150" />
        <col />
    </colgroup>
   <tr>   <td>Nachname</td>
      <td><input name="nachname" size="40" maxlength="50"></td>
   </tr>
   <tr>   <td>Vorname</td>
      <td><input name="vorname" size="40" maxlength="50"></td>
   </tr>
   <tr>   <td>Ort</td>
      <td><input name="ort" size="40" maxlength="50"></td>
   </tr>
   <tr>   <td>E-Mail</td>
      <td><input name="email" size="40" maxlength="50"></td>
   </tr>
   <tr>   <td>Nachricht</td>
      <td><textarea rows="9" name="nachricht" cols="60"></textarea></td>
   </tr>
    <tr>
        <td>&#160;</td>
        <td><input type="submit" name="submit" value="abschicken"/>
       <input type="reset" name="reset" value="zurücksetzen"/></td>
    </tr>
</table>
</form>

Das bewirkt folgendes:
Wenn die Variable $_POST[‘Nachricht’] gesetzt ist (isset) dann wird verschickt.
Falls die Variable $_POST[‘Nachricht’] nicht gesetzt ist dann wird nur das Formular angezeigt.
Da aber das Kontaktfomular ausserhalb der Schleife ist, wird es immer angezeigt.

Ich habs noch etwas verfeinert.
siehe:

if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht'])){
echo "Die email wurde erfolgreich versendet.";
}else{
echo "Fehler beim versenden der nachricht.";
}

Das bewirkt, dass wenn die mail versendet wird bekommt der user ne Rückmeldung.
Wenn nicht kommt die Rückmeldung:

Fehler beim versenden der nachricht.

PS: Wieso hast du Felder die nicht verschickt werden ?

Da entgehen dir immer noch zentrale Informationen, wenn es
so überhaupt funktioniert ;o)

Vereinen etwa so:

$dummy=$_POST[nachname]." \n “.$_POST[vorname].” \n “.$_POST[ort].” \n “.$_POST[email].” \n ".$_POST[nachricht];

und dann sowas wie

mail("volner-reisel@freenet.de",“Betreff: Kontakt”,$dummy);

Ergebnis ist zwar nicht schön, enthält aber immerhin den
ganzen Kram, der im Formular angegeben war

Geht aber auch so wie meine Lösung.
Meine mails sehen dann aufgeräumter aus. :wink:
Deine Lösung ist aber auch möglich. :wink:

Bei deiner Variante bekommt der email-Empfänger doch gar
nicht mit, wer die Nachricht versendet hat - oder wo hast du das
versteckt?

Gegebenenfalls müßtest du das gesamte POST-array verschicken
lassen, nicht nur ‘nachricht’…

Meinte ich ja dass man alles unterbringen sollte.
Aber ich wollt nicht zu viel oben umändern. :wink:

(Ja, Der_Admin, ich weiß, dass ich das Skipt vor dir habe. Nochmals vielen Dank dafür.)

Vielen Dank euch Beiden für eure Bemühungen. Keider bekomme ich es immer noch nicht gebacken.

Hier ist mal ein Link: http://www.elsner.bplaced.net/test1/kontakt.html.
Hier habe ich es mal zu Testzwecken hochgeladen.

kontakt.html

[code]

Volner Reisel - Kontakt
Startseite  |  Über mich  |  Galerie  |  Kontakt  |  Gästebuch  |  Impressum

Kontakt



Nachname
Vorname
Ort
E-Mail
Nachricht
 
[/code]

kontakt_versenden.php

if(isset($_POST['nachricht'])){ //mail versenden echo "Nachname: $_POST[nachname]"; echo "Vorname: $_POST[vorname]"; echo "Ort: $_POST[ort]"; echo "Email-Adresse: $_POST[email]"; echo "Nachricht: $_POST[nachricht]"; //email versenden if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht'])){ echo "Die email wurde erfolgreich versendet."; }else{ echo "Fehler beim versenden der nachricht."; }

versuchs mal mit <?php am anfang und ?> am ende des scriptes;)
ansonsten wird bei php dateien der normale inhalt wie in einer .html behandelt

Danke Mgier. Das hätte ich auch selbst sehen können.

Leider klappt es noch immer nicht. Ich bekomme folgende Fehlermeldung beim Abschicken:

Eine E-Mail kommt dabei auch nicht bei mir an.

Code der kontakt_versenden.php:

[code]

Volner Reisel - Kontakt <?php if(isset($_POST['nachricht'])){ //mail versenden echo "Nachname: $_POST[nachname]"; echo "Vorname: $_POST[vorname]"; echo "Ort: $_POST[ort]"; echo "Email-Adresse: $_POST[email]"; echo "Nachricht: $_POST[nachricht]"; //email versenden if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht'])){ echo "Die email wurde erfolgreich versendet."; }else{ echo "Fehler beim versenden der nachricht."; } ?> [/code]

du machst die oberste geschweifte klammer nicht zu

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<title>Volner Reisel - Kontakt</title>
</head>
<body>
<?php
if(isset($_POST['nachricht'])){
//mail versenden
echo "Nachname: $_POST[nachname]";
echo "Vorname: $_POST[vorname]";
echo "Ort: $_POST[ort]";
echo "Email-Adresse: $_POST[email]";
echo "Nachricht: $_POST[nachricht]";
//email versenden
if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$_POST['nachricht'])){
echo "Die email wurde erfolgreich versendet.";
}else{
echo "Fehler beim versenden der nachricht.";
}
}
?>
</body>
</html>

Danke comjag. Das war es.

Jetzt würde ich es gerne noch etwas optimieren.
In der E-Mail, die ich erhalte, wird nur die Nachricht angezeigt. Wie erreiche ich es, dass noch die anderen Variablen angezeigt werden? Etwa so:
Nachname: …
Vorname: …
usw.

Wenn ich auf “abschicken” klicke, öffnet sie die kontakt_versenden.php. Dort werden alle Variablen mit den eingegebenen Werten angezeigt. Kann man das irgendwie unterdrücken?

Danke vielmals.

Gruß Elsner

[quote=“elsner”]Danke comjag. Das war es.

Jetzt würde ich es gerne noch etwas optimieren.
In der E-Mail, die ich erhalte, wird nur die Nachricht angezeigt. Wie erreiche ich es, dass noch die anderen Variablen angezeigt werden? Etwa so:
Nachname: …
Vorname: …
usw.

Wenn ich auf “abschicken” klicke, öffnet sie die kontakt_versenden.php. Dort werden alle Variablen mit den eingegebenen Werten angezeigt. Kann man das irgendwie unterdrücken?

Danke vielmals.

Gruß Elsner[/quote]
vll. würde eine lektüre mal gut tuhen. aber ich will nicht meckern sondern helfen. um das zu unterdrücken, löscht du einfach die echo-befehle mit den jeweiligen variablen raus;) was net da ist, wird auch net angezeigt :wink:
um das mit dem nachname:… unso hinzubekommen beispielsweise einfach:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<title>Volner Reisel - Kontakt</title>
</head>
<body>
<?php
if(isset($_POST['nachricht'])){
//mail versenden
//echo "Nachname: $_POST[nachname]";
//echo "Vorname: $_POST[vorname]";
//echo "Ort: $_POST[ort]";
//echo "Email-Adresse: $_POST[email]";
//echo "Nachricht: $_POST[nachricht]";
//habe das hier als kommentare gesetzt, es wird nichts angezeigt.
//email versenden
$inhalt = "Vorname: " . $_POST['vorname'] . "\nNachname: " . $_POST['nachname'] . "\nEmail-Adresse: " . $_POST['email'] . "\nOrt: " . $_POST['ort'] . "\n\nNachricht:\n" . $_POST['nachricht'];
// \n bewirkt einen zeilenumbruch in der email, nur zur info; habe de ganzen post variablen
 //mit einem . verbunden
if(mail("volner-reisel@freenet.de","Betreff: Kontakt",$inhalt)){
echo "Die email wurde erfolgreich versendet.";
}else{
echo "Fehler beim versenden der nachricht.";
}
}
?>
</body>
</html>

Wie du alle Parameterwerte zugesendet bekommst, hatte ich doch
oben schon angemerkt, warum machst du das nicht einfach?

Danke Mgier, deine Vorlage brachtre das gewünschte Ergebnis.

Kleine Erläuterung: PHP ist komplettes Neuland für mich und deshalb weiß ich leider noch rein gar nicht darüber. Aber man hat eben seine Ziele und will sie umsetzen. Momentan bin ich schulisch sehr eingespannt (zwei Abschlussprojekte) und da fehlt mir die Zeit, um mich in PHP einzuarbeiten. Aber ihr konnt mr gerne einen Link hinterlassen, bei dem auf das Theme PHP grundlegend eingegangen wird (Was ist PHP? Was kann es?). Ich verspreche auch, dass ich es mir ansehe, wenn die Projekte vorüber sind.

Aber nochmals vielen Dank für eure Bemühungen und Vorlagen. Ohne euch hätte ich es nicht geschafft.

Gruß Elsner

kein problem jeder hat mal angefangen. (ich auch erst vor 3 monaten :ps: ) sowas schaffe ich auch gerade noch, kannst mir immer gern eine pm schicken.
hier ein paar tutorials mit denen ich gut zurechtgekommen bin:
http://www.schattenbaum.net/php/
http://www.php-kurs.com