Probleme mit Kontaktformular

Alt 30.01.2011, 22:30   # 1
Dre
 
Registriert seit: 19.10.2010
Beiträge: 10
Hallo zusammen,

hoffe ich bin hier richtig. Zu meinem Problem. Ich versuche immoment eine kleine Homepage für ein Event zu basteln, das hat bis jetzt auch sehr gut funktioniert, nur das angesprochene Kontaktformular, über das man Tickets bestellen kann, verschickt keine Mails. Man muss dazu sagen, dass ich das Formular, nicht selber programmiert habe, sondern mit einem "Generator" erstellt habe und sich meine Kenntnisse im programmieren von Webseiten noch etwas im Aufbau befinden

Hier mal das Script:

PHP-Code:
<!DOCTYPE html>
<html>
 <head>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <meta name="robots" content="noindex,nofollow">

 <style type="text/css">
 /* Formular Stylesheet */
 body, textarea, table {
  font-family: Verdana, Sans-Serif;
  font-size: 12px;
  color: #000000;
 }
 table {
  margin: auto;
  border-spacing: 1px;
 }
 th, td {
  padding: 3px;
  font-weight: normal;
 }
 label {
  cursor: pointer;
 }
 textarea {
  width: 460px;
  height: 110px;
 }
 .pflichtfeld {
  color: #EE0000;
 }
 .hintergrund {
  color: #000000;
  background-color: #?00000;
 }
 .zeichen {
  background-color: #F0F0F0;
  border: 0;
  height: 12px;
 }
 </style>

 <script type="text/javascript">
 // Tasteneingaben begrenzen
 function CheckLen() {
  var Chars, StrLen = document.Form.nachricht.value.length;
  if (StrLen > 250) {
   document.Form.nachricht.value = document.Form.nachricht.value.substring(0, 250);
   Chars = 0;
  }
  else {
   Chars = 250 - StrLen;
  }
  document.Form.Zeichen.value = Chars;
 }
 </script>

 <script type="text/javascript">
 // Kontaktformular vor dem absenden überprüfen
 var fehlerfarbe = "#FFFFDD";
 function check() {
  if (document.getElementsByTagName("input").length < 1) {return false;}
  else if (document.Form.vorname.value == "") {document.Form.vorname.style.backgroundColor=fehlerfarbe; document.Form.vorname.focus(); return false;}
  else if (document.Form.nachname.value == "") {document.Form.nachname.style.backgroundColor=fehlerfarbe; document.Form.nachname.focus(); return false;}
  else if (document.Form.feld1.value == "") {document.Form.feld1.style.backgroundColor=fehlerfarbe; document.Form.feld1.focus(); return false;}
  else if (document.Form.feld2.value == "") {document.Form.feld2.style.backgroundColor=fehlerfarbe; document.Form.feld2.focus(); return false;}
  else if (document.Form.feld3.value == "") {document.Form.feld3.style.backgroundColor=fehlerfarbe; document.Form.feld3.focus(); return false;}
  else if (document.Form.mailfrom.value == "") {document.Form.mailfrom.style.backgroundColor=fehlerfarbe; document.Form.mailfrom.focus(); return false;}
  else if (document.Form.nachricht.value == "") {document.Form.nachricht.style.backgroundColor=fehlerfarbe; document.Form.nachricht.focus(); return false;}
  else return true;
 }
 function check2(ziel) {
  if (ziel.value == "") {
   ziel.style.backgroundColor=fehlerfarbe;
  }
  else {
   ziel.style.backgroundColor="#FFFFFF";
  }
 }
 </script>

 </head>
 <body>

<?php
/*
   Kontaktformular - Erstellt am: 30.01.2011 (Sprache: deutsch)
   mit dem Kontaktformular Generator - www.homepage-total.de
   Wichtig: Der Webserver muss PHP unterstützen.
   Speichern Sie die Datei zum Beispiel als: "kontakt.php".
*/

// Ihr Name (wird für die E-Mail-Kopie 
// an den Besucher benötigt!)
$webmaster "";

// Ihre E-Mail-Adresse:
$mailto "info[at]***.de";

// Ihre Webseite (Startseite). Nach dem absenden der E-Mail
// gelangt der Besucher über einen Link auf Ihre Startseite.
$url "http://www.***.de/";

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
$eingabefehler "";
$vorname = isset($_POST["vorname"]) ? $_POST["vorname"] : "";
$nachname = isset($_POST["nachname"]) ? $_POST["nachname"] : "";
$feld1 = isset($_POST["feld1"]) ? $_POST["feld1"] : ""// "Geburtsdatum"
$feld2 = isset($_POST["feld2"]) ? $_POST["feld2"] : ""// "Anschrift"
$feld3 = isset($_POST["feld3"]) ? $_POST["feld3"] : ""// "PLZ, Ort"
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$betreff "Anfrage";
$nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : "";
$kopie = isset($_POST["kopie"]) ? " checked='checked'" "";

// Auswahlliste: "Anzahl der Karten"
$array = array(
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"
"10"
);
$auswahl1 = isset($_POST["auswahl1"]) ? $_POST["auswahl1"] : "";
$auswahlliste1 "\n   <select name='auswahl1' id='Auswahl1' size='1'>";
foreach (
$array as $element) {
 
$auswahlliste1 .= "\n    <option value='" $element "'" .
 ((isset(
$_POST["auswahl1"]) ? $_POST["auswahl1"] : "") == $element ?
 
" selected='selected'" "") .  ">" $element "</option>";
}
$auswahlliste1 .= "\n   </select>";

// Formular erstellen
$formular "<form name='Form' action='" $_SERVER["SCRIPT_NAME"] . "' method='post' onsubmit='return check();'>
<table>
 <tr><td colspan='2' class='pflichtfeld'><!-- Fehleranzeige --></td></tr>
 <tr class='hintergrund'>
  <td><label for='Vorname'>Vorname: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='30' name='vorname' value='" 
$vorname "' id='Vorname' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Nachname'>Nachname: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='30' name='nachname' value='" 
$nachname "' id='Nachname' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Feld1'>Geburtsdatum: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='40' name='feld1' value='" 
$feld1 "' id='Feld1' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Feld2'>Anschrift: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='40' name='feld2' value='" 
$feld2 "' id='Feld2' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Feld3'>PLZ, Ort: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='40' name='feld3' value='" 
$feld3 "' id='Feld3' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Email'>E-Mail: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='40' name='mailfrom' value='" 
$mailfrom "' id='Email' onkeyup=\"check2(this)\"></td>
 </tr>
 <tr class='hintergrund'>
  <td colspan='2'><label for='Nachricht'>Nachricht: <span class='pflichtfeld'>*</span></label>
   &nbsp; &nbsp; Sie haben noch <input type='text' name='Zeichen' size='3' value='250' class='zeichen' readonly='readonly'> Zeichen<br>
  <textarea name='nachricht' id='Nachricht' onkeyup=\"check2(this);CheckLen()\">" 
$nachricht "</textarea></td>
 </tr>
 <tr class='hintergrund'>
  <td colspan='2'><input type='checkbox' id='marke3' name='kopie' 
$kopie> <label for='marke3'>Ich w&uuml;nsche eine Kopie meiner Anfrage an meine E-Mail-Adresse</label></td>
 </tr>
 <tr class='hintergrund'>
  <td colspan='2'>
   <label for='Auswahl1'>Anzahl der Karten: </label>" 
$auswahlliste1 "
  </td>
 </tr>
 <tr class='hintergrund'>
  <th colspan='2'>
   <br><span class='pflichtfeld'>*</span> <small>Bitte alle Pflichtfelder ausf&uuml;llen!</small> &nbsp; &nbsp; &nbsp; &nbsp; 
     <input type='submit' name='sendung' value='Bestellen'>
  </th>
 </tr>
</table>
</form>"
;

if (isset(
$_POST["sendung"])) {
 
// Pflichtfelder überprüfen
 
if (strlen($vorname) <= 2) {$eingabefehler .= "&bull; Vorname fehlt!<br>";}
 if (
strlen($nachname) <= 2) {$eingabefehler .= "&bull; Nachname fehlt!<br>";}
 if (
$feld1 == "") {$eingabefehler .= "&bull; Geburtsdatum fehlt!<br>";}
 if (
$feld2 == "") {$eingabefehler .= "&bull; Anschrift fehlt!<br>";}
 if (
$feld3 == "") {$eingabefehler .= "&bull; PLZ, Ort fehlt!<br>";}
 if (!
preg_match("/^([_a-z0-9-äöüß])(([-_a-z0-9-äöüß._])*([_a-z0-9-äöüß]))*\@([_a-z0-9-äöüß])(([_a-z0-9-äöüß-])*([_a-z0-9-äöüß]))+(\.([_a-z0-9-äöüß])([-a-z0-9_-])?([_a-z0-9-äöüß])+)+$/i"$mailfrom)) {
  
$eingabefehler .= "&bull; Fehler in der E-Mail-Adresse!<br>";
 }
 
//if (strlen($nachricht) <= 19) {$eingabefehler .= "&bull; Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" : " ist zu kurz") . " (min. 20 Zeichen)!<br>";}
 
if ($eingabefehler == "") {
  
// Diese Nachricht wird an Ihre E-Mail-Adresse gesendet (\n = neue Zeile)
  
$text "Datum: " date("d.m.Y H:i") . "\n
   Vorname: 
$vorname \n
   Nachname: 
$nachname \n
   Geburtsdatum: 
$feld1 \n
   Anschrift: 
$feld2 \n
   PLZ, Ort: 
$feld3 \n
   E-Mail: 
$mailfrom \n
   Nachricht: 
$nachricht \n\n
   Anzahl der Karten: 
$auswahl1 \n
   "
;
  
// E-Mail versenden
  
@mail($mailto$betreff$text"From: " $mailfrom);
  
// Bestätigung der E-Mail
  
echo "<p style='text-align:center; margin-top:200px;'>";
  echo 
"Vielen Dank " $vorname " " $nachname ", die Nachricht wurde gesendet.<br><br>";
  if (isset(
$_POST["kopie"])) {
   
// Diese Nachricht wird an die E-Mail-Adresse des Besuchers gesendet
   
$kopie "Vielen Dank f&uuml;r Deine Besuch bei $url.\n
   Wir haben folgende Nachricht erhalten:\n\n
   ====\n\n 
   Vorname: 
$vorname \n
   Nachname: 
$nachname \n
   Geburtsdatum: 
$feld1 \n
   Anschrift: 
$feld2 \n
   PLZ, Ort: 
$feld3 \n
   E-Mail: 
$mailfrom \n
   Nachricht: 
$nachricht \n\n
   Anzahl der Karten: 
$auswahl1 \n
   ====\n\n
   Mit freundlichen Gr&uuml;ßen,\n  
$webmaster
   "
;
   
// E-Mail Kopie versenden
   
@mail($mailfrom"Kopie einer Anfrage"$kopie"From: " $mailto);
   
// Bestätigung der E-Mail Kopie
   
echo "Sie erhalten eine Kopie Ihrer Anfrage an Ihre E-Mail-Adresse.<br><br>";
  }
  
// Link zur Startseite
  
echo "<a href=\"" $url "\" target=\"_top\">Weiter zur Startseite</a></p>";
 }
 else {
  
// Eingabefehler und Formular ausgeben
  
echo str_replace("<!-- Fehleranzeige -->""<strong>Die Nachricht wurde aus folgendem Grund nicht gesendet:</strong><br>$eingabefehler"$formular);
 }
}
else {
 
// Formular ausgeben
 
echo $formular;
}
?>

 </body>
</html>
Hoffe Ihr könnt mir helfen. Vielen Dank schonmal !
  Mit Zitat antworten
Alt 31.01.2011, 06:29   # 2
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Was Du zuerst mal ausprobieren solltest ist das @ vor dem ersten "mail(" wegzunehmen, denn das unterdrückt wohl die Ausgabe von Fehlermeldungen - wenig hilfreich bei der Fehlersuche.

Ein Problem kann sein, dass PHP im Webserver gar nicht für E-Mail-Versendung konfiguriert ist, bei gemietetem Webspace sollte das eigentlich nicht so sein (und Du bist ja scheinbar bei STRATO). Testest Du bereits online auf der Seite oder mit einem lokalen Webserver auf Deinem System?

Grüße,
Thorsten
  Mit Zitat antworten
Alt 31.01.2011, 10:31   # 3
Dre
Threadstarter
 
Registriert seit: 19.10.2010
Beiträge: 10
Hallo FreewareGuide,

bist aber nen ganz früher Vogel
Das @ habe ich mal rausgenommen und getestet, da passiert immernoch das gleiche. Man füllt das Formular aus, verschickt es und man springt auf die Startseite zurück.
:idea:
Mir ist grad noch was eingefallen und habs mal sofort getestet. Meine Seite ist so aufgebaut, dass ich eine index.php habe und hier der content mit include eingeblendet wird. Wenn ich jetzt also einfach nur die tickets.php als einzigste Seite auf die Page mache, funktioniert alles wunderprächtig. Folglich muss ich das irgendwie erreichen, dass die ticket-Seite von dem include verschond bleibt. Die Frage ist nur wie

Das ist mein include Teil:
PHP-Code:
 <?php
      
if(!isset($_GET["seite"])) $seite="event"
      else 
$seite $_GET["seite"];
      
$invalide = array('/','/\/',':','.');
      
$seite str_replace($invalide,' ',$seite);
      if(!
file_exists($seite ".php")) $seite "event";
      include(
$seite ".php");
    
?>
Das mit der Fehlermeldung, hat bei mir den Funken ausgelöst
  Mit Zitat antworten
Alt 31.01.2011, 11:05   # 4
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Zitat:
Zitat von Dre Beitrag anzeigen
Man füllt das Formular aus, verschickt es und man springt auf die Startseite zurück.
Das ist ja eine grundsätzlich andere Problembeschreibung (vorausgesetzt Startseite ungleich Bestell-/Kontaktseite) als:
Zitat:
Zitat von Dre Beitrag anzeigen
nur das angesprochene Kontaktformular, über das man Tickets bestellen kann, verschickt keine Mails.
Okay, sei es drum. Dein Include-Mechanismus scheint tatsächlich das Problem zu sein, aber bei dem Mechanismus sollte es reichen, auch den Namen der Zielseite (Formular) wieder als versteckten Parameter im Formular mitzuschicken:
PHP-Code:
// Formular erstellen
$formular "<form name='Form' action='" $_SERVER["SCRIPT_NAME"] . "' method='post' onsubmit='return check();'>
<input type='hidden' name='seite' value='tickets'> 
Dann muss allerdings Dein Include-Mechanismus sowohl POST- als auch GET-Variablen verarbeiten, z.B. so:
PHP-Code:
<?php
      $seite 
trim((!empty($_POST['seite'])) ? $_POST['seite'] : $_GET['seite']);
      
$invalide = array('/','/\/',':','.');
      
$seite str_replace($invalide,' ',$seite);
      if(!
file_exists($seite ".php")) $seite "event";
      include(
$seite ".php");
    
?>
Nur ein Schuss ins Blaue, habe ich natürlich nicht getestet
  Mit Zitat antworten
Alt 31.01.2011, 11:09   # 5
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Andere Möglichkeit, einfach die URL der Action erweitern, sollte eigentlich auch klappen:
PHP-Code:
// Formular erstellen
$formular "<form name='Form' action='" $_SERVER["SCRIPT_NAME"] . "?seite=tickets' method='post' onsubmit='return check();'> 
  Mit Zitat antworten
Alt 31.01.2011, 11:54   # 6
Dre
Threadstarter
 
Registriert seit: 19.10.2010
Beiträge: 10
Vielen Dank für deine Hilfe !

Hab jetzt die Beiden Varianten getestet und Beide funktionieren.
Super support Danke !
  Mit Zitat antworten

Alt 28.05.2012, 21:07 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:07 Uhr.