• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kontaktformular

kercon

Mitglied
Hallo Leute,
ich habe gestern ein einfaches (funktionierendes) Kontaktformular erstellt. Heute baue ich es in der HP ein und nichts geht mehr. Kann sein, dass ich irgendetwas übersehen habe, aber irgendwie bin ich vollkommen (betriebs)blind. Könnt Ihr etwas erkennen?
1) das Formular auf der kontakt.php
PHP:
<?php
    $to = "[email protected]";
    $from = $_REQUEST['email'];
    $name = $_REQUEST['name'];
    $headers = "From: $from";
    $subject = "Neue Kontaktanfrage von meiner Homepage";

    $fields = array();
    $fields{"vorname"} = "Vorname";
    $fields{"name"} = "Name";
    $fields{"email"} = "Email";
    $fields{"tel"} = "Tel";
    $fields{"message"} = "Nachricht";
?>          
<h3>Kontaktformular</h3>
<form>
<p><label>Vorname:*<br><input type="text" name="vorname" required="required"></label></p>
<p><label>Name:*<br><input type="text" name="name" required="required"></label></p>
<p><label>e-Mail:*<br><input type="text" name="email" required="required"></label></p>
<p><label>Telefon:<br><input type="text" name="tel"></label></p>
<p><label>Nachricht:*<br>
<textarea name="message" cols="50" rows="8" required="required"></textarea></label></p>
<input type="submit" class="sendButton" value="Senden"><input class="clearButton" type="reset" value="Löschen">
</form>
<small> * Pflichtfelder. Bitte ausfüllen! </small>

2) so auf der index.php eingebunden

PHP:
<?php
$s = $_GET['s'];
switch ($s) {
   case "start":
          include_once('include/start.html');
          break;
   case "beratung":
          include_once('include/beratung.html');
          break;
     case "gruppen":
          include_once('include/gruppen.html');
          break;
   case "inspiration":
          include_once('include/inspiration.html');
          break;
    case "person":
          include_once('include/person.html');
          break;   
   case "kontakt":
          include_once('include/kontakt.php');
          break;  
   case "impressum":
          include_once('include/impressum.html');
          break;                      
    default:
        include('include/start.html');
        }        
?>

Die einzelnen Seiten funktionieren und nach dem Klick auf dem Formular-Senden-Button landet man wieder auf der Startseite, leider kommt nichts im Postfach an :-(
Schonmal vielen Dank!
 
Zuletzt bearbeitet:
Ein Kontaktformular sollte man per Post versenden.

$_GET['s'] ist bei Senden des Formulars nicht gesetzt, was man wüsste, wenn man sich hieran halten würde:

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Ich bin mir sicher, dass bei hochgedrehtem Error-Reporting dir einige Warnings um die Ohren fliegen werden
 
Also entweder bin ich auch betriebsblind oder du machst einfach nichts mit den Daten. Du befüllst zwar Variablen und das Array obwohl, dies hier ist auch schon falsch
$fields{"vorname"} = "Vorname";

da müssen eckige Klammern hin
$fields["vorname"] = "Vorname";

Und bei dem form tag fehlt der action und die method attributes
 
da müssen eckige Klammern hin
$fields["vorname"] = "Vorname";

Ja, das musste ich jetzt auch erst mal nachlesen:
http://php.net/manual/en/language.types.array.php#99015

Note:

Both square brackets and curly braces can be used interchangeably for accessing array elements (e.g. $array[42] and $array{42} will both do the same thing in the example above).

Kann ich jedenfalls nur davon abraten. Vor allem da ${'vorname'} wieder etwas ganz anderes ist.
 
Unter anderem fehlt der Form action und method.

Zudem sehe ich keine Mail Funktion.

Gesendet von meinem SM-N910F mit Tapatalk
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben