Kontaktformular: methode Post geht nicht
sdgfnnfg433d
- css
- html
- php
Hi, mein Kontaktformular funktioniert leider nicht so wie es soll. Es gibt eine Fehlermeldung, dass method Post nicht erlaubt sei. Ich hoffe ihr könnt mir da helfen:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Titel</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<form action="kontaktformular.php" method="post">
<div id="kontaktformular">
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Vorname:</div> <input class="kontaktformular_feld" type="text" name="vorname" /></div>
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Nachname:</div> <input class="kontaktformular_feld" type="text" name="nachname" /></div>
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">E-Mail:</div> <input class="kontaktformular_feld" type="text" name="e-mail" /></div>
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Telefon:</div> <input class="kontaktformular_feld" type="text" name="telefon" /></div>
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Straße:</div> <input class="kontaktformular_feld" type="text" name="strasse" /></div>
<div id="kontaktformular_spalte_plz"><div class="kontaktformular_bezeichnung">PLZ:</div> <input id="kontaktformular_feld_plz" type="text" name="plz" /></div>
<div id="kontaktformular_spalte_ort"><div class="kontaktformular_bezeichnung">Ort: </div><input id="kontaktformular_feld_ort" type="text" name="ort" /></div>
<div id="kontaktformular_spalte_betreff"><div class="kontaktformular_bezeichnung">Betreff: </div><input id="kontaktformular_feld_betreff" type="text" name="betreff" /></div>
<div id="kontaktformular_spalte_nachricht"><div class="kontaktformular_bezeichnung">Nachricht: </div><textarea id="kontaktformular_feld_nachricht" type="text" name="nachricht" ></textarea></div>
<input type="submit" value=" Absenden " id="absenden" name="abschicken">
</form>
</div>
</body>
</html>
#kontaktformular{
margin-left: 80px;
margin-top: 40px;
background: white;
box-shadow: 3px 3px 3px 3px #bbbbbb;
height: 700px;
width: 934px;
float: left;
}
.kontaktformular_spalte{
float: left;
margin-left: 50px;
margin-top: 20px;
width: 392px;
}
.kontaktformular_bezeichnung{
color: #555655;
}
.kontaktformular_feld{
width: 392px;
box-shadow: 1px 1px 7px 1px grey;
border-radius: 5px;
}
#kontaktformular_spalte_plz{
width: 122px;
margin-left: 50px;
margin-top: 20px;
float: left;
}
#kontaktformular_feld_plz{
width: 122px;
box-shadow: 1px 1px 7px 1px grey;
border-radius: 5px;
}
#kontaktformular_spalte_ort{
width: 265px;
margin-left: 5px;
margin-top: 20px;
float: left;
}
#kontaktformular_feld_ort{
width: 265px;
box-shadow: 1px 1px 7px 1px grey;
border-radius: 5px;
}
#kontaktformular_spalte_betreff{
width: 834px;
margin-left: 50px;
margin-top: 20px;
float: left;
}
#kontaktformular_feld_betreff{
width: 834px;
box-shadow: 1px 1px 7px 1px grey;
border-radius: 5px;
}
#kontaktformular_spalte_nachricht{
width: 834px;
margin-left: 50px;
margin-top: 20px;
float: left;
}
#kontaktformular_feld_nachricht{
width: 834px;
box-shadow: 1px 1px 7px 1px grey;
border-radius: 5px;
height: 250px;
}
#absenden{
float: right;
margin-right: 50px;
margin-top: 30px;
}
<?php
$Mail = "meinemail@abc.de";
$Betreff = "Kontaktformularnachricht";
if(isset($_POST['abschicken'])){
if(empty($_POST['vorname']) OR empty($_POST['nachname']) OR empty($_POST['e-mail']) OR empty($_POST['strasse']) OR empty($_POST['plz']) OR empty($_POST['ort']) OR empty($_POST['betreff']) OR empty($_POST['nachricht']) OR empty($_POST['telefon'])){ // Wenn eins der Felder nicht ausgefüllt wurde, dann wird darauf hingewiesen, dass man alle Felder ausfüllen muss.
print "Bitte füllen Sie alle Felder korrekt aus! \n";
}
else{
$Abs_Mail = $_POST['e-mail'];
$Abs_Vorname = $_POST['vorname'];
$Abs_Nachname = $_POST['nachname'];
$Abs_Telefon = $_POST['telefon'];
$Abs_Strasse = $_POST['strasse'];
$Abs_Plz = $_POST['plz'];
$Abs_Ort = $_POST['ort'];
$Abs_Betreff = $_POST['betreff'];
$Abs_nachricht = $_POST['nachricht'];
$Nachricht = "Vorname:$Abs_Vorname </br>
Nachname:$Abs_Nachname</br>
E-Mail:$Abs_Mail</br>
Telefon:$Abs_Telefon</br>
Strasse:$Abs_Strasse</br>
Plz:$Abs_Plz</br>
Ort:$Abs_Ort</br>
Betreff:$Abs_Betreff</br>
Nachricht:$Abs_nachricht ";
$senden = mail($Mail, $Betreff, $Nachricht,"From: $Abs_Mail");
if($senden){
print "Ihre Mail wurde erfolgreich an uns versandt.
";
}
}
}
?>
Hallo sdgfnnfg433d,
magst du uns vielleicht den genauen Wortlaut der Fehlermeldung geben?
Freundliche Grüße
Christian
Hallo sdgfnnfg433d,
magst du uns vielleicht den genauen Wortlaut der Fehlermeldung geben?
Freundliche Grüße
Christian
Method Not Allowed The requested method POST is not allowed for the URL /kontaktformular.php
das wäre die Meldung
Hallo,
Method Not Allowed
The requested method POST is not allowed for the URL /kontaktformular.php
bietet denn dein Webhoster überhaupt PHP an? Es soll immer noch Gratis- oder Billighoster geben, bei denen das nicht der Fall ist. Und wenn keine serverseitig aktiven Inhalte unterstützt werden, dann wird oft auch die Methode POST einfach verboten, weil sie keinen Sinn mehr ergibt.
So long,
Martin
bietet denn dein Webhoster überhaupt PHP an? Es soll immer noch Gratis- oder Billighoster geben, bei denen das nicht der Fall ist. Und wenn keine serverseitig aktiven Inhalte unterstützt werden, dann wird oft auch die Methode POST einfach verboten, weil sie keinen Sinn mehr ergibt.
Mhh okay. Der Hoster schlägt auch selber ein CGI dafür vor. Das benutzt auch die Post methode. Da kann ich aber lediglich mit Name, Betreff, Email und Nachricht arbeiten
Mal abgesehen vom POST Problem: dein HTML leidet an einer bösen div- und class-Seuche. Wenn Gunnar das sieht, exorziert er dich... ;-)
Das erste div im form sieht aus als wäre es unnötig, die Beschriftungen macht man mit label und deine class-Angaben scheinen überflüssig, du kannst das mit CSS-Selektoren lösen die die Tagnamen ansprechen.
Rolf
@@Rolf b
Mal abgesehen vom POST Problem: dein HTML leidet an einer bösen div- und class-Seuche. Wenn Gunnar das sieht, exorziert er dich... ;-)
Schon passiert.
Das erste div im form sieht aus als wäre es unnötig, die Beschriftungen macht man mit label und deine class-Angaben scheinen überflüssig, du kannst das mit CSS-Selektoren lösen die die Tagnamen ansprechen.
Gut zusammengefasst.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
@@sdgfnnfg433d
mein Kontaktformular funktioniert leider nicht so wie es soll.
Dein Kontaktformular funktioniert aus mehreren Gründen nicht.
Du erwartest, dass jemand, der mit dir in Kontakt treten möchte, 9 Felder ausfüllt? Und seine Anschrift und Telefonnummer preisgibt? Ernsthaft? Wozu?
Datensparsamkeit! AFAIK bist du dazu verpflichtet. Das heißt, du darfst nur die Daten erheben, die du bei einer Kontaktaufnahme wirklich benötigst. Das wäre wohl nur die E-Mail-Adresse.
Mache deutlich, welche Felder Pflichtfelder sind. Auch im HTML mittels required
-Attribut. Die anderen Felder lässt du am besten ganz weg.
Deine Eingabefelder haben keine Beschriftung. Sie müssen aber eine haben, damit Nutzer wissen, was sie in welches Feld eingeben sollen.
Im Markup wäre also zu ändern:
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Vorname:</div> <input class="kontaktformular_feld" type="text" name="vorname" /></div>
in:
<p>
<label for="vorname">Vorname:</label>
<input type="text" id="vorname" name="vorname" />
</p>
Und das bei allen Eingabefeldern.
Statt des div
hab ich mal p
genommen. Die Klassen brauchst du nicht.
Das <div id="kontaktformular">
brauchst du auch nicht. Das hattest du übrigens auch nicht richtig geschlossen.
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Nachname:</div> <input class="kontaktformular_feld" type="text" name="nachname" /></div>
Statt „Nachname“ solltest du besser „Familienname“ verwenden.
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">E-Mail:</div> <input class="kontaktformular_feld" type="text" name="e-mail" /></div>
Statt type="text"
wäre hier type="email"
angebracht.
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Telefon:</div> <input class="kontaktformular_feld" type="text" name="telefon" /></div>
Statt type="text"
wäre hier type="tel"
angebracht.
<div class="kontaktformular_spalte"><div class="kontaktformular_bezeichnung">Straße:</div> <input class="kontaktformular_feld" type="text" name="strasse" /></div>
Warum verstüelst du das ß? Du solltest „Straße“ mit ß schreiben.
(Den Artikel gab’s doch auch mal auf deutsch‽ Da war ja noch was … *Knoten-ins-Taschentuch-mach*)
<input type="submit" value=" Absenden " id="absenden" name="abschicken">
Für Buttons gibt es das button
-Element. Verwende es:
<button type="submit" id="absenden" name="abschicken">Absenden</button>
Außerdem solltest du hier
<html>
die Sprache des Seiteninhalts angeben. (Warum?)
Wenn dieser auf deutsch ist:
<html lang="de">
Damit sich der Seiteninhalt dem Viewport anpassen kann, ist noch die eine Angabe in den head
hinzuzufügen
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
und im Stylesheet keine Breiten in px
festnageln, also nicht sowas wie
#kontaktformular{ height: 700px; width: 934px; }
Mein Viewport ist – wie der vieler anderer – deutlich schmaler als 934px. Sinvoll wäre vielleicht max-width
statt width
. Und responsive design (deutsche Übersetzung).
700px für die Höhe ist eine magic number – der Wert mag bei dir passen, aber nicht zwangsweise bei anderen. Sowas sollte man immer vermeiden.
Wozu willst du da überhaupt eine Höhe angeben? Du willst eher einen clearfix verwenden.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
@@sdgfnnfg433d
mein Kontaktformular funktioniert leider nicht so wie es soll.
Vor deinen Problemen mit Datenschutz, UX, Barrierefreiheit und dem nachgelagerten Problem mit dem POST ersteinmal die Frage:
Wozu ein Kontaktformular?
Und wenn eins, dann bitte zusätzlich zur Angabe deiner E-Mail-Adresse.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|