Problem mit Kontaktformular

Tidus9

Hobby-Grafiker
ID: 78687
L
16 September 2006
695
69
Ich habe ein Kontaktformular erstellt und es lief auf einer kostenlosen Webspace von Funpic auch perfekt.

Jetzt habe ich es auf die Webspace von 1 & 1 geladen und musste folgende Fehlermeldung lesen: "Method Not Allowed - The requested method POST is not allowed for the URL /versand.html."

Ausschnitt aus "kontakt.html":

HTML:
<form action="versand.html" method="post">
<tr>
  <td>Name, Vorname:</td>
  <td><input name="Name" size="30" type="text"></td>
</tr>
<tr>
  <td>Ihre E-Mail-Adresse:</td>
  <td><input name="Email" size="30" type="text"></td>
</tr>
<tr>
  <td>Ihr Aktenzeichen:</td>
  <td><input name="Aktenzeichen" size="15" type="text"></td>
</tr>
<tr>
  <td>Empfänger:</td>
  <td><select name="Empfaenger" size="1">
  <option value=geldhai55@web.de selected=selected>Büro</option>
  <option value=mail@mail.de>Mail 1</option>
  <option value=mail@mail.de>Mail 2</option>
  <option value=mail@mail.de>Mail 3</option>
  </select>
  </td>
</tr>
<tr>
  <td>Betreff:</td>
  <td><input name="Betreff" size="30" type="text"></td>
</tr>
<tr>
  <td>Ihre Nachricht:</td>
  <td><textarea cols="42" name="Nachricht" rows="11"></textarea></td>
</tr>
<tr>
  <td>Rechtschutzversichert?</td>
  <td>    Ja <input name="Rechtschutzversicherung" type="radio" value="ja">    Nein <input name="Rechtschutzversicherung" type="radio" value="nein"></td>
</tr>
<tr>
<td align="right" colspan="2"><input name="Send" type="submit" value="Senden"></td>
</tr>
</form>

Script der "versand.html":

PHP:
<?php
        
$Empfaenger = $_POST['Empfaenger'];

if($_REQUEST['Send'])
{
   if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
   {
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
   }
   else
   {
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send")
         {
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Mailnachricht .= "\nDatum/Zeit: ";
      $Mailnachricht .= date("d.m.Y H:i:s");
      $Mailbetreff .= $_REQUEST['Betreff'];
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
      echo"Vielen Dank für Ihre Nachricht!";
   }
}
else
{
   echo"Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href="kontakt.html">Kontaktformular</a> zurück.";
}

?>

Ich habe schon gegoogelt, aber wirklich effektiv war es letztendlich doch nicht. Vielleicht hat ja jemand den entscheidenden Tipp für mich.

Bin für jede Hilfe dankbar.
 
Du verweist auf ein HTML-Dokument (versand.html), das PHP-Elemente enthält... Ich bin mir nicht sicher aber glaube das HTML-Dokumente bei 1&1 nicht geparset werden.

Versuch mal die versand.html in versand.php umzubenennen und änder
<form action="versand.html" method="post"> in
<form action="versand.php" method="post">

MfG
Xot
 
Die Anfrage darf nur mit anderen HTTP-Methoden (z. B. GET statt POST) gestellt werden.
 
Zuletzt bearbeitet:
Danke für eure ersten Ratschläge. Also immerhin zeigt er jetzt schon einmal eine andere Fehlermeldung an. :D

"Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /homepages/27/d168457098/htdocs/versand.php on line 66"

line 66 ist diese hier:

PHP:
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href="kontakt.html">Kontaktformular</a> zurück.";
 
"Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /homepages/27/d168457098/htdocs/versand.php on line 66"

line 66 ist diese hier:

PHP:
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href="kontakt.html">Kontaktformular</a> zurück.";

Hmm soweit ich sehe hast du einfach ein Leerzeichen nach echo vergessen und wenn du im Text " verwenden möchtest musst du die so darstellen: \" ausser du verwendest am Anfang '.

Möglichkeit 1:
PHP:
echo 'Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href="kontakt.html">Kontaktformular</a> zurück.';

Möglichkeit 2:
PHP:
echo "Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href=\"kontakt.html\">Kontaktformular</a> zurück.";

So sollte es gehen.
 
Zuletzt bearbeitet:
Leerzeichen sind jetzt nach allen "echo"s gesetzt, jedoch noch die gleiche Fehlermeldung. :-/
 
Ehrlich gesagt habe ich noch nie mit Request gearbeitet...

PHP:
<?php 

  $Empfaenger = $_POST['Empfaenger']; 

  if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Nachricht'])) 
  { 
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!"; 
  } 
  else 
  { 
    $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n"; 
    while(list($Formularfeld, $Wert)=each($_REQUEST)) 
    { 
       if($Formularfeld!="Send") 
       { 
          $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; 
       } 
    } 
    $Mailnachricht .= "\nDatum/Zeit: "; 
    $Mailnachricht .= date("d.m.Y H:i:s"); 
    $Mailbetreff .= $_REQUEST['Betreff']; 
    mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']); 
    echo "Vielen Dank für Ihre Nachricht!"; 
  } 

?>

Edit:
Soweit ich nun gekommen bin würde ich das $Request einfach weglassen.
Mal ein Post von Ice-Breaker aus nem anderen Forum:
https://www.tutorials.de/forum/php/...e-request-statt-post-und-get.html#post1521069
 
Zuletzt bearbeitet:
Args da haben sich noch ein paar böse $Requests versteckt ^^

PHP:
<?php 

  $Empfaenger = $_POST['Empfaenger']; 

  if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Nachricht'])) 
  { 
    echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!"; 
  } 
  else 
  { 
    $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n"; 
    while(list($Formularfeld, $Wert)=each($_POST)) 
    { 
       if($Formularfeld!="Send") 
       { 
          $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; 
       } 
    } 
    $Mailnachricht .= "\nDatum/Zeit: "; 
    $Mailnachricht .= date("d.m.Y H:i:s"); 
    $Mailbetreff .= $_POST['Betreff']; 
    mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_POST['Email']); 
    echo "Vielen Dank für Ihre Nachricht!"; 
  } 

?>

So jetzt aber x)

Edit: Falls diese Version nicht klappen sollte bleib bei der andern und schreib hier kurz rein, dann schau ichs mir Morgen noch kurz an.
 
Dein Script solltest Du noch etwas modifizieren, sonst wird Dein Server evtl. als Spamschleuder missbraucht.

Der code:
Code:
"From: ".$_POST['Email'])

Das würde ich anders machen, sonst kann man über mailheaderinjection Blindcopies versenden.
 
Ist mir erst jetzt aufgefallen - Dein mailer bietet ja von Haus aus die Möglichkeit den Empfänger frei zu wählen.

Schätze mal Du verwendest den mailer nur für eigene Zwecke.
Somit gibts am funktionierenden Code nichts auszusetzen.
 
Zuletzt bearbeitet: