Antworten auf deine Fragen:
Neues Thema erstellen

Problem mit Kontaktformular! Bitte um Hilfe

sindyho0374

Nicht mehr ganz neu hier

Hallo liebe Freunde.
Ich habe mit meinem Kontaktformular ein Problem.
Es wird keine Dankesnachricht angezeigt wenn man das Formular absendet wobei eigentlich alles definiert ist.
Ich zeige meine Seiten dynamisch an also z.B. index.php?s=kontakt
Ich denke das hat damit zu tun weil es die Fehlerausgabe wenn ein oder mehrere Felder nicht richtig ausgefüllt wurden angezeigt wird.
Vielleicht könnt Ihr mir ja weiterhelfen und mir erklären was ich falsch mache.

Hier der Code:
PHP:
<?PHP
$script = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"] .'?s=kontakt' ;
$errorFields = array('Vorname', 'Name','eMail','Auswahl', 'Nachricht'); 
for($x=0;$x<count($errorFields);$x++)
{
 $errorClass[$errorFields[$x]] = 'inputField';
}
 
if(isset($_POST['submit']))
{
 
 $error = FALSE;
 foreach($errorFields as $key => $value)
 {
 
  if(empty($_POST[$errorFields[$key]]))
  {
   $error = TRUE;
   $errorClass[$value] = 'errorField';
   $errorPicture[$value] = '<img src="images/achtung_klein.png">&nbsp;';
  }
 
 }
}
if($_GET['check'] == "TRUE")
{
 $errorMessage = '<div class="errorDiv">
          Vielen Dank für Ihre Nachricht. 
          Ihre Daten wurden an uns weitergeleitet.
          Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.
          </div><br>';
}
if(isset($_POST['submit'])){
 
 if($error == TRUE)
 {
  $errorMessage = '<div class="errorDiv">
           <img src="images/achtung_gross.png">&nbsp;Achtung! Es ist zu einem Fehler gekommen. Bitte füllen Sie alle 
           farblich markierten Pflichtfelder aus.</div><br>';
 }
 else
 {
  
  // Alles ist in Ordnung
  // Daten können gespeichert werden
    
  $zeit = date("d.m.y \t H:i:s");    
        $ip_adresse = $_SERVER['REMOTE_ADDR'];
        
        $DeineEMailAdresse = "email@email.de";
        $DerEMailText = 
"Datum:\t". $zeit ."\n"
.
"IP:\t\t".$ip_adresse."\n"
.
"Vorname:\t\t".trim($_POST['Vorname'])."\n"
.
"Name:\t\t".trim($_POST['Name'])."\n"
.
"Telefon:\t\t".trim($_POST['Telefon'])."\n"
.
"eMail:\t\t".trim($_POST['eMail'])."\n"
.
"Auswahl:\t\t".trim($_POST['Auswahl'])."\n"
.
"\n" . trim($_POST['Nachricht']);  
        
        $header = "From: kramer-sport-marketing.de - Kontaktformular ". $_POST['Name'] . " <" .  $_POST['eMail'] . ">\r\n";    
                    
        mail($DeineEMailAdresse, $betreff, $DerEMailText, $header);  
  
  // Seite neu laden und Hinweis anzeigen
  header("Location: $script?check=TRUE");
 }
}
?>
 

Dagobert68

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Moin :)

Wenn ich es auf die Schnelle richtig sehe, definierst du ganz oben $script mit ?s=kontakt und ganz unten beim Neuladen der Seite übergibst du noch zusätzlich zu $script einen weiteren Parameter mit ?check=TRUE. Wenn tatsächlich beide übergeben werden sollen, ist da ein Fragezeichen zuviel, denke ich. Stattdessen dann check=TRUE mit "&" anhängen.

Das ist jetzt aber nur so auf die Schnelle ins Blaue...

Grüßli,
Dagobert
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Die Danke-Nachricht wird angezeigt, wenn der Parameter 'check' in der URL mit übergeben wurde, also "index.php?s=kontakt&check=TRUE". Falls kein Fehler auftritt wird auch dahingehend dieser Parameter an die derzeitige URL angehängt und darauf umgeleitet (siehe die Zeile mit header(...)).

Das Problem ist, dass in der Zeile
PHP:
  header("Location: $script?check=TRUE");
der Parameter nach einem "?" angegeben wird. Das Fragezeichen wird aber nur für den ersten Parameter benutzt, alle folgenden Parameter benötigen ein "&".

Lange Rede, kurzer Sinn: wahrscheinlich reicht es schon, wenn du die Zeile auf
PHP:
  header("Location: $script&check=TRUE");
änderst.


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Danke erstmal für die schnellen Antworten.

Habe das jetzt so gemacht nur es wird nichts angezeigt auch oben in der Adresszeile steht nicht

index.php?s=kontakt&check=TRUE obwohl ich es abgeändet (wie von euch erklärt) habe.
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Schickt er denn die E-Mail ab? Wenn nicht, passt schon vorher irgendwas nicht. Der einfachste Weg zu prüfen was das Script genau macht ist an günstigen Stellen eine kleine Ausgabe zu machen, also bspw.
PHP:
if(isset($_POST['submit']))
{
 echo "In isset post submit, 1";
 $error = FALSE;
 foreach($errorFields as $key => $value)
Und so weiter.
Dann führst du es aus und schaust dir an in welche Zweige er kommt und bis wohin alles wie erwartet funktioniert.

Falls du dabei erfolgreich bis zur header()-Anweisung kommst, solltest du einen Fehler ala "cannot modify header information" bekommen. Dann entfernst du die Fehlerausgaben wieder, weil es so funktionieren sollte.

Kommt die Danke-Meldung, wenn du den Parameter manuell anhängst?

Ach, was mir nach dieser Frage auffällt: wo wird $errorMessage ausgegeben? Die Variable wird zwar deklariert aber nie ausgegeben, ergo kein Danke. Passiert das ausserhalb des Auszuges?


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Abgeschickt wird das Formular. Dass passt. Auch die Meldung wenn Felder nicht ausgefüllt worden sind wird ausgegeben. Es wird halt nur nicht die Meldung ausgegeben wenn das Formular richtig versendet wurde.

Die $errorMessage wird in einem Div ausgegeben.

LG
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Kommt die Danke-Meldung falls du die URL manuell mit "&check=TRUE" aufrufst?
Wirst du denn allgemein umgeleitet wenn die Mail abgeschickt wird, oder bleibst du auf der gleichen Seite?


Duddle
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Wirst du denn allgemein umgeleitet wenn die Mail abgeschickt wird, oder bleibst du auf der gleichen Seite?
?

Ich vermute gerade, dass die Umleitung nicht stattfindet aber Fehlermeldungen ausgeschaltet sind und du daher keine bekommst.


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

ja da findet keine umleitung statt.

also ich denke du meinst das so



richtig?

Aber die Fehlermeldungen werden ja im gleichen Div ausgegeben und das funktioniert ja auch
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Du sagst, mit manuell angehängtem Parameter kommt die Danke-Meldung. Also funktioniert das schon mal. Du sagst, die Fehler werden auch ausgegeben, ebenfalls prima. Du sagst, die Mails werden abgeschickt, also kommt er bis zur Umleitung selbst. Und du sagst, die Umleitung findet nicht statt. Ohne Umleitung kein Parameter, damit keine Danke-Meldung.

Damit haben wir das Problem eingegrenzt. Setz mal bitte vor die header-Zeile ein
PHP:
error_reporting(E_ALL);
Dann solltest du Fehler angezeigt bekommen.

Ich wette, du siehst dann ein "cannot modify header information" irgendwo auf der Seite. Falls das passiert ist der Fix eindeutig: du darfst vor der header-Zeile keinerlei Ausgaben machen, d.h. kein HTML, keine Fehlermeldungen, keine Leerzeichen. Ergo muss das obige Script vor allem anderen stehen, sonst findet die Umleitung nicht statt.

Falls eine andere Fehlermeldung kommt, dann diese bitte hier vermerken.


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Du hast recht.
Fehlermeldung kommt wie folgt:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/40/d105034136/htdocs/Kramer/website/index.php:14) in /homepages/40/d105034136/htdocs/Kramer/website/kontakt.php on line 82
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Also das Script steht ganz oben vor allen anderen Angaben.
Vielleicht ist es das beste ich poste mal die gesamte Seite:

Code:
<?PHP
$script = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"] .'?s=kontakt' ;
$errorFields = array('Vorname', 'Name','eMail','Auswahl', 'Nachricht'); 
for($x=0;$x<count($errorFields);$x++)
{
 $errorClass[$errorFields[$x]] = 'inputField';
}
 
if(isset($_POST['submit']))
{
 
 $error = FALSE;
 foreach($errorFields as $key => $value)
 {
 
  if(empty($_POST[$errorFields[$key]]))
  {
   $error = TRUE;
   $errorClass[$value] = 'errorField';
   $errorPicture[$value] = '<img src="images/achtung_klein.png">&nbsp;';
  }
 
 }
}
if($_GET['check'] == "TRUE")
{
 $errorMessage = '<div class="errorDiv">
          Vielen Dank für Ihre Nachricht. 
          Ihre Daten wurden an uns weitergeleitet.
          Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.
          </div><br>';
}
if(isset($_POST['submit'])){
 
 if($error == TRUE)
 {
  $errorMessage = '<div class="errorDiv">
           <img src="images/achtung_gross.png">&nbsp;Achtung! Es ist zu einem Fehler gekommen. Bitte füllen Sie alle 
           farblich markierten Pflichtfelder aus.</div><br>';
 }
 else
 {
  
  // Alles ist in Ordnung
  // Daten können gespeichert werden
    
  $zeit = date("d.m.y \t H:i:s");    
        $ip_adresse = $_SERVER['REMOTE_ADDR'];
        
        $DeineEMailAdresse = [EMAIL="mail@mail.de"]mail@mail.de[/EMAIL];
        $DerEMailText = 
"Datum:\t". $zeit ."\n"
.
"IP:\t\t".$ip_adresse."\n"
.
"Vorname:\t\t".trim($_POST['Vorname'])."\n"
.
"Name:\t\t".trim($_POST['Name'])."\n"
.
"Telefon:\t\t".trim($_POST['Telefon'])."\n"
.
"eMail:\t\t".trim($_POST['eMail'])."\n"
.
"Auswahl:\t\t".trim($_POST['Auswahl'])."\n"
.
"\n" . trim($_POST['Nachricht']);  
        
        $header = "From: kramer-sport-marketing.de - Kontaktformular ". $_POST['Name'] . " <" .  $_POST['eMail'] . ">\r\n";    
                    
        mail($DeineEMailAdresse, $betreff, $DerEMailText, $header);  
  
  // Seite neu laden und Hinweis anzeigen
  error_reporting(E_ALL);
  header("Location: $script&check=TRUE");
 }
}
?>
<!--Hauptausgabecontainer-->
<div id="hauptcontainer">
<div id="box_top"></div>
<div id="box_middle">
<div id="kontakt_links">
</div>
<div id="kontakt_rechts">
<div class="errorDiv">
<p><?PHP echo $errorMessage; ?></p>
</div>
<div id="formular">
<form class="cmxform" action="<?PHP echo $script; ?>" method="post">
<fieldset>
  <ol>
    <li>
      <label for="Name"><?PHP echo $errorPicture['Name']; ?>&nbsp;Name: <em>*</em></label>
      <input class="<?PHP echo $errorClass['Name']; ?>" name="Name" value="<?PHP echo $_POST['Name']; ?>" />
    </li>
     <li>
      <label for="Vorname"><?PHP echo $errorPicture['Vorname']; ?>&nbsp;Vorname: <em>*</em></label>
      <input class="<?PHP echo $errorClass['Vorname']; ?>" name="Vorname"  value="<?PHP echo $_POST['Vorname']; ?>" />
    </li>
</ol>
</fieldset>
<fieldset>
  <ol>
    <li>
      <label for="Telefon"><?PHP echo $errorPicture['Telefon']; ?>&nbsp;Telefon o. Mobil: </label>
      <input class="<?PHP echo $errorClass['Telefon']; ?>" name="Telefon" value="<?PHP echo $_POST['Telefon']; ?>" />
    </li>
     <li>
      <label for="eMail"><?PHP echo $errorPicture['eMail']; ?>&nbsp;Email: <em>*</em></label>
      <input class="<?PHP echo $errorClass['eMail']; ?>" name="eMail" value="<?PHP echo $_POST['eMail']; ?>" />
    </li>
</ol>
</fieldset>
<fieldset>
  <ol>
    <li>
      <label for="Auswahl"><?PHP echo $errorPicture['Auswahl']; ?>&nbsp;Auswahl: <em>*</em></label>
   <select class="<?PHP echo $errorClass['Auswahl']; ?>" name="Auswahl" size="1" value="<?PHP echo $_POST['Auswahl']; ?>">
      <option selected>Bitte w&auml;hlen</option>
      <option value="Leistungen">Leistungen</option>
      <option value="Sportevents">Sportevents</option>
      </select>
    </li>
</ol>
</fieldset>
 
<fieldset>
  <ol>
    <li>
   <label for="Nachricht"><?PHP echo $errorPicture['Nachricht']; ?>&nbsp;Nachricht: <em>*</em></label>
<textarea class="<?PHP echo $errorClass['Nachricht']; ?>" name="Nachricht" rows="5" cols="50" ><?PHP echo $_POST['Nachricht']; ?></textarea> 
 </li>
</ol>
</fieldset>
<fieldset>
  <ol>
    <li>
<input style="width:100px; float:right; text-align:center; margin: 0px 10px 0px 10px; " type="reset" value="zurücksetzen" />
<input style="width:100px; float:right; text-align:center; " name="submit" type="submit" value="abschicken" />
 </li>
</ol>
</fieldset>
<fieldset><p>Alle mit einem <em>*</em> gekennzeichneten Felder sind Pflichtangaben. </p></fieldset>
</form>
</div> 
</div>
</div>
<div id="box_bottom"></div>
</div>
<!--Ende_Hauptausgabecontainer^-->
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Das Problem ist, dass du diese Datei per include() o.ä. in deine Seite holst. Falls du in index.php also schon vorher Zeug ausgibst, funktioniert es nicht mehr.

Es gibt mehrere Möglichkeiten, das zu lösen. Die für dich einfachste wäre wohl, die gesamten Ausgabe zu puffern und erst am Ende auszugeben. Falls währenddessen ein header() ausgeführt wird, meckert er nicht mehr. Geh dazu in deine index.php und füge am Anfang die Zeile
PHP:
ob_start();
und am Ende die Zeile
PHP:
ob_end_flush();
ein. Diese PHP-Funktionen starten und beenden den Puffer. Sie sollten keinen Einfluss auf andere Bereiche der Website haben, also probier das mal aus.


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Hey Danke das hat funktioniert. Jetzt geht alles richtig.

Wäre es noch möglich mir in einer Sache nochmal zu helfen?
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Dazu ist das Forum da. Falls das ein komplett anderes Thema ist solltest du dafür wohl einen neuen Thread aufmachen (damit andere es leichter finden). Ansonsten, schieß los.


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Also nochmals Danke an dich Duddle.
Wäre es nun auch möglich das Formular auszublenden, da es ja trotzdem nach erfolgreichem Versand weiterhin sichtbar ist?!
 

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit Kontaktformular! Bitte um Hilfe

Jau, natürlich. Dazu müsstest du vor dem unerwünschten Teil einen PHP-Block starten und dort auf check abfragen:
PHP:
<?php
if(!isset($_GET['check']) || $_GET['check'] != "TRUE") {
?>
hier der html-code vom formular
<?php
}
?>
Es ist so gedacht, dass dort nur ein schließendes } steht, das beendet den if-Block im PHP-Teil vor dem Formular.

Das ist nicht die sauberste Lösung, sollte aber funktionieren.

Duddle
 

sindyho0374

Nicht mehr ganz neu hier

AW: Problem mit Kontaktformular! Bitte um Hilfe

Sorry! Hat a bissle länger gedauert weil ich kurz Besuch hatte.

Verstehe ich das so richtig?

PHP:
<?php
if(!isset($_GET['check']) || $_GET['check'] != "TRUE") {
?>
<div id="formular">formularinhalt</div>
<?php
}
?>
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.477
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben