• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP - Kontaktformular

Michael Burkart

New member
Hallo an alle Experten,
ich habe eine Frage zu PHP - Kintaktformularen. Da ich auf diesem Gebiet noch ein Anfänger bin, bitte ich um Eure Hilfe...

Ich weiß, dass ein Kontaktformular aus zwei Dateien besteht, einer *.html und einer *.php - Datei.

Muss ich die Dateien an einem besonderen Ort auf dem Server speichern, oder eine bestimmte Software installieren, um php - Dokumente nutzen zu können oder sind "php - Dokumente" ähnlich wie "html - Dokumente" ohne Weiteres auf den Server zu plazieren?

Vielen Dank im voraus,
Gruß, Michael
 
Ich weiß, dass ein Kontaktformular aus zwei Dateien besteht, einer *.html und einer *.php - Datei.
nicht zwingend. Eine reicht auch aus und die Dateiendung ist Wurst.

Muss ich die Dateien an einem besonderen Ort auf dem Server speichern
I.d.R. reicht es wenn Deine PHP Script im selben Verzeichnis wie Deine HTML Dokumente liegen. Allerdings ist das auch nicht zwingend.

oder eine bestimmte Software installieren
Ja, PHP

oder sind "php - Dokumente" ähnlich wie "html - Dokumente"
I.d.R. gibst Du mit PHP ein HTML Dokument aus.
 
Ich schenk dir mal "mein" Formular. Ist was kleines kurzes. Aber für mcih hat es immer gereicht :)

Einfach die txt Datei als *.php speichern und fertig. Ach neee, Du musst noch Deine Emailadresse da eintragen wo "XXXXX@XXXXX.XXX" steht, damit die auch an Dich gesendet wird.
 
Vielen Dank für die schnellen Antworten.
Welche Software muss ich denn nun noch installieren? Und woher bekomme ich diese?
Extra Dankeschön übrigens an .colin für das attachment :)

Gruß, Michael
 
Wunderbar,

vielen Dank. Ich hab' das Skript von .colin einfach mal ausprobiert. Klappt einwandfrei. Demnach ist der Server schon soweit eingerichtet.

Ihr seid klasse,
Gruß, Michael
 
1. ich weiss daran hab ich vor nem Jahr noch nicht gedacht
2. Weiss ich auch - aber den Ottonormal User wird's nicht stören denke ich :) auf meinem eigenen Server hab ich register_globals auch off aber auch noch nicht so lange.....
 
Hallo,

ich habe das Skript von .colin nun angepasst. Leider habe ich noch einige kleine Schweirigkeiten. Vielleicht könnt ihr mir weiterhelfen?

Also, Die Prüfung der einzelnen Felder ist ok. Allerdings wird nun die Mail nicht mehr an mich gesandt. Die XXX@XXX.XXX habe ich sicherheitshalber wieder eingfügt. Bei meinem Skript auf dem Server steht natürlich meine Adresse :)

Hier also das Skript:


<link href="../../stylesheet.css" rel="stylesheet" media="screen">


<body bgcolor="#de0000" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<?php
if($action=="senden") {

// $betreff = trim(stripslashes($betreff));
$name = trim(stripslashes($name));
$vorname = trim(stripslashes($vorname));
$strasse = trim(stripslashes($strasse));
$plz = trim(stripslashes($plz));
$wohnort = trim(stripslashes($wohnort));
$mail = trim(stripslashes($mail));
$inhalt = trim(stripslashes($inhalt));

// Pr¸fung der Angaben nach dem Senden

if(!$name) $fehler[] = "Bitte geben Sie Ihren Namen ein.";
// if(!$betreff) $fehler[] = "Bitte geben Sie einen Betreff ein.";
if(!$vorname) $fehler[] = "Bitte geben Sie Ihren Vornamen ein.";
if(!$strasse) $fehler[] = "Bitte geben Sie Ihre Strasse ein";
if(!$plz) $fehler[] = "Bitte geben Sie Ihre Postleitzahl ein";
if(!$wohnort) $fehler[] = "Bitte geben Sie Ihren Wohnort ein";
if(!$mail) $fehler[] = "Bite geben Sie Ihre E-Mailadresse ein";
if(!$inhalt) $fehler[] = "Bitte gebe Sie Ihre Nachricht ein.";

if(!count($fehler)) { // Sendet Email, wenn Pr¸fung "ok"


@mail($an,$betreff,$name,$vorname,$strasse,$plz,$wohnort,$inhalt,"From: ".$email);
echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
echo "Name: <b>$name</b><br>\n";
// echo "Betreff: <b>$betreff</b><br>\n";
echo "vorname: <b>$vorname</b><br>\n";
echo "strasse: <b>$strasse</b><br>\n";
echo "plz: <b>$plz</b><br>\n";
echo "wohnort: <b>$wohnort</b><br>\n";
echo "mail: <b>$mail</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>";

}

}

?>
<table width="410" border="0" cellspacing="0" cellpadding="0" bgcolor="white" height="466">
<tr height="18">
<td bgcolor="#fcdad0" width="410" height="18"><br>
</td>
</tr>
<tr height="31">
<td class="ueberschrift" width="410" height="31">Kontakt</td>
</tr>
<tr height="386">
<td class="tabelle_abstand" valign="top" width="410" height="386">
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="action" value="senden">
<input type="hidden" name="an" value="XXXXXX@XXXXXXX.XX">

<table width="376" border="0" cellspacing="0" cellpadding="0">
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">E-Mail an:</td>
<td width="261" height="21"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Name</td>
<td width="261" height="21"><input name="name" value="<?php echo $name; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica">Vorname:</font></b></td>
<td width="261" height="21"><input name="vorname" value="<?php echo $vorname; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica,">Straße</font></b></td>
<td width="261" height="21"><input name="strasse" value="<?php echo $strasse; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica">PLZ:</font></b></td>
<td width="261" height="21"><input name="plz" value="<?php echo $plz; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Wohnort</td>
<td width="261" height="21"><input name="wohnort" value="<?php echo $wohnort; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Email</td>
<td width="261" height="21"><input name="mail" value="<?php echo $mail; ?>" size="35" maxlength="35"></td>
</tr>
<tr>
<td width="115"></td>
<td width="261"><input name="betreff" type="hidden" value="Mail von der Webseite der SPD Ratsfraktion Münster"></td>
</tr>
<tr height="110">
<td class="schrift_inhalt_fett" valign="top" width="115" height="110">Ihre Nachricht</td>
<td width="261" height="110"><textarea name="inhalt" rows="8" cols="33"><?php echo $inhalt; ?></textarea></td>
</tr>
<tr>
<td width="115"></td>
<td width="261"><input type="submit"></td>
</tr>
</table>
</form>
</td>
</tr>
<tr height="31">
<td class="linie_absatzende_links" width="410" height="31"></td>
</tr>
</table>
</body>
 
@mail($an,$betreff,$name,$vorname,$strasse,$plz,$wohnort,$inhalt,"From: ".$email);

Das dürfte kaum funktionieren.

Probier doch mal

$content = "$vorname $name\n$strasse\n\n$plz $wohnort\n\n\n$inhalt";
$from = "From: $vorname $name <$email>";
mail($an,$betreff,$content,$from);

Wenn du bei deinem das @ weglässt, sagt er dir auch wo der Schuh drückt. Fakt ist, dass die mail Funktion nur 4 Argumente erwartet.
 
Aha, mmh, ich wußte nicht, dass hier nur vier Argumente erwartet werden.
Ist das generell so? Wie gesagt, ich bin php - Neuling :)

Gruß, Michael
 
Ja. Eine für die Zieladresse, eine für den Betreff, eine für den Inhalt und eine für den Header. Wenn man aber beispielsweise html-Mails oder Mails mit Anhang schickt, kommt der Inhalt auch in den Header, das ist aber reichlich kompliziert.
 
Hallo,

das sieht ja schon ganz gut aus. Jetzt fehlt mir nur noch eine Kleinigkeit...
Ich möchte gern auf eine Antwortseite verlinken. Wo muss ich den entsprechenden Link unterbringen?

Vielen Dank für eure hilfreiche Unterstützung,

Gruß, Michael
 
mach noch ein echo mit dem link hin:
PHP:
echo "<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n";
echo "Name: <b>$name</b><br>\n";
// echo "Betreff: <b>$betreff</b><br>\n";
echo "vorname: <b>$vorname</b><br>\n";
echo "strasse: <b>$strasse</b><br>\n";
echo "plz: <b>$plz</b><br>\n";
echo "wohnort: <b>$wohnort</b><br>\n";
echo "mail: <b>$mail</b><br>\n";
echo "Inhalt: <b>".nl2br($inhalt)."</b><br>\n";
echo '<a href="hier-geht-es-zur-homepage-zurueck.html">zur homepage</a>';
 
Danke für die Antwort,

ich schätze jedoch, dass der Link nicht automatisch ausgeführt wird.

Die Nachricht, was der Absender verschickt hat, wollte ich eigentlich wieder löschen, da es meiner Meinung nach eher unwichtig ist. Er sollte ja schließlich wissen, was er geschrieben hat :)

Eine automatische Weiterleitung nach dem Klicken auf den Button "Senden" zu einer Antwortseite wäre genau das Richtige.

Gruß, Michael
 
Jetzt hab' ich schon so lange herumprobiert und ich komme einfach nicht auf die Lösung. Vielleicht lasse ich besser die Spezialisten ran :)

Nach dem Abschicken der Mail bekomme ich nun folgende Fehlermeldung:

Cannot add header information - headers already sent by (output started at /mnt/be1/06/437/00000008/htdocs/kontakt.php:6) in /mnt/be1/06/437/00000008/htdocs//kontakt.php on line 6

Hier poste ich noch mal der gesamte Quellcode:


<link href="../../stylesheet.css" rel="stylesheet" media="screen">


<body bgcolor="#de0000" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<?php
if($action=="senden") {

// $betreff = trim(stripslashes($betreff));
$name = trim(stripslashes($name));
$vorname = trim(stripslashes($vorname));
$strasse = trim(stripslashes($strasse));
$plz = trim(stripslashes($plz));
$wohnort = trim(stripslashes($wohnort));
$mail = trim(stripslashes($mail));
$inhalt = trim(stripslashes($inhalt));

// Pr¸fung der Angaben nach dem Senden

if(!$name) $fehler[] = "Bitte geben Sie Ihren Namen ein.";
// if(!$betreff) $fehler[] = "Bitte geben Sie einen Betreff ein.";
if(!$vorname) $fehler[] = "Bitte geben Sie Ihren Vornamen ein.";
if(!$strasse) $fehler[] = "Bitte geben Sie Ihre Strasse ein";
if(!$plz) $fehler[] = "Bitte geben Sie Ihre Postleitzahl ein";
if(!$wohnort) $fehler[] = "Bitte geben Sie Ihren Wohnort ein";
if(!$mail) $fehler[] = "Bite geben Sie Ihre E-Mailadresse ein";
if(!$inhalt) $fehler[] = "Bitte gebe Sie Ihre Nachricht ein.";

if(!count($fehler)) { // Sendet Email, wenn Pr¸fung "ok"


$content = "$vorname $name\n$strasse\n\n$plz $wohnort\n\n\n$inhalt";
$from = "From: $vorname $name <$mail>";
mail($an,$betreff,$content,$from);
header("Location: http://www.meine_seite.de/kontakt_antwort.html");
exit;

echo("<p>Ihre Nachricht wie folgt wurde gesendet.<p>\n\n");
echo "Name: <b>$name</b><br>\n";
// echo "Betreff: <b>$betreff</b><br>\n";
echo "vorname: <b>$vorname</b><br>\n";
echo "strasse: <b>$strasse</b><br>\n";
echo "plz: <b>$plz</b><br>\n";
echo "wohnort: <b>$wohnort</b><br>\n";
echo "mail: <b>$mail</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>";

}

}

?>
<table width="410" border="0" cellspacing="0" cellpadding="0" bgcolor="white" height="466">
<tr height="18">
<td bgcolor="#fcdad0" width="410" height="18"><br>
</td>
</tr>
<tr height="31">
<td class="ueberschrift" width="410" height="31">Kontakt</td>
</tr>
<tr height="386">
<td class="tabelle_abstand" valign="top" width="410" height="386">
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="action" value="senden">
<input type="hidden" name="an" value="meine@mail.de">

<table width="376" border="0" cellspacing="0" cellpadding="0">
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">E-Mail an:</td>
<td width="261" height="21"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Name</td>
<td width="261" height="21"><input name="name" value="<?php echo $name; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica">Vorname:</font></b></td>
<td width="261" height="21"><input name="vorname" value="<?php echo $vorname; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica,">Straße</font></b></td>
<td width="261" height="21"><input name="strasse" value="<?php echo $strasse; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21"><b><font size="2" face="Arial, Helvetica">PLZ:</font></b></td>
<td width="261" height="21"><input name="plz" value="<?php echo $plz; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Wohnort</td>
<td width="261" height="21"><input name="wohnort" value="<?php echo $wohnort; ?>" size="35" maxlength="35"></td>
</tr>
<tr height="21">
<td class="schrift_inhalt_fett" width="115" height="21">Email</td>
<td width="261" height="21"><input name="mail" value="<?php echo $mail; ?>" size="35" maxlength="35"></td>
</tr>
<tr>
<td width="115"></td>
<td width="261"><input name="betreff" type="hidden" value="der betreff"></td>
</tr>
<tr height="110">
<td class="schrift_inhalt_fett" valign="top" width="115" height="110">Ihre Nachricht</td>
<td width="261" height="110"><textarea name="inhalt" rows="8" cols="33"><?php echo $inhalt; ?></textarea></td>
</tr>
<tr>
<td width="115"></td>
<td width="261"><input type="submit" value="Abschicken"> <input type="reset" name="Button2" value="Zurücksetzen"></td>
</tr>
</table>
</form>
</td>
</tr>
<tr height="31">
<td class="linie_absatzende_links" width="410" height="31"></td>
</tr>
</table>
</body>
 
aus dem phpmanual:
Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.
http://ch.php.net/manual/de/function.header.php
 
Zurück
Oben