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

Formular versendet nicht komplett

Seppeli

Neues Mitglied
Hallo Zusammen,
und zwar: Ich habe für meine Website eine Umfrage geschrieben. Wenn ich diese jedoch ausfülle und absende, wird nicht alles übertragen, sondern nur ein Teil.
Es wird nur folgendes Übertragen:
From: sebastian <meineemail>
Reply-To: meineemail
Content-Type: text/html
Und im Betriff in meinem Emailpostfach steht der Inhalt von "Nachricht6".

Wo liegt der Fehler? Hier sind mal die Codes:
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Umfrage</title>
</head>
<body>
<form method="post" action="senden.php">
<p> Alle Felder mit einem * m&uuml;ssen ausgef&uuml;llt werden!</p>
Vorname*: <input type="text" name="vor" /><br />
Nachname: <input type="text" name="nach" /><br />
E-Mail Adresse*: <input type="text" name="mail" /><br />
Vereinszugeh&ouml;rigkeit: <select name="verein">
<option></option>
<option>Ja</option>
<option>Nein</option>
</select><br /><br />
Gesamturteil: <select name="urteil">
<option>gef&auml;llt mir sehr</option>
<option>gef&auml;llt mir</option>
<option>ok</option>
<option>gef&auml;llt mir nicht</option>
<option>gef&auml;llt mir gar nicht</option>
</select>
<br />
Anzahl Besuche: <select name="besuche">
<option></option>
<option>t&auml;glich</option>
<option>mehrmals pro Woche</option>
 <option>mehrmal pro Monat</option>
<option>seltener</option>
</select><br />
Aufmerksam auf diese Seite geworden durch: <select name="aufmerksam">
<option></option>
<option>Google</option>
<option>Facebook</option>
<option>Werbung Heft</option>
<option>Bekannte/Freunde</option>
<option>Sonstiges</option>
</select><br /><br />
Grund der Besuche:<br />            <textarea style="width:500px;height:50px;" name="nachricht1"></textarea>            <br /><br />
Was w&uuml;rde ich gerne mehr lesen:<br />            <textarea style="width:500px;height:50px;" name="nachricht2"></textarea>            <br /><br />
Was mir auf der Seite komplett fehlt:<br />            <textarea style="width:500px;height:50px;" name="nachricht3"></textarea>            <br /><br />
Was k&ouml;nnte verbessert werden:<br />            <textarea style="width:500px;height:50px;" name="nachricht4"></textarea>            <br /><br />
Was gef&auml;llt mir gar nicht:<br />            <textarea style="width:500px;height:50px;" name="nachricht5"></textarea>            <br /><br />
Was ich noch sagen m&ouml;chte:<br />            <textarea style="width:500px;height:50px;" name="nachricht6"></textarea>            <br /><br />
<input type="submit" value="Senden" />
</form>
</body>
</html>

PHP:
<!DOCTYPE html><html>
<head>
<title>Kontakt</title>
</head>
<body>
<?php
 if($_POST['vor']!="" and $_POST['mail']!="" and $_POST['urteil']!="" ) {
$empf = "meine email";
$betreff ="Neuer Umfrage";
$from = "From: "; 
$from .= $_POST['vor'];
$from .= " <"; 
 $from .= $_POST['mail'];
$from .= ">\n";
$from .= "Reply-To: "; 
$from .= $_POST['mail']; 
$from .= "\n";
 $from .= "Content-Type: text/html\n";
 $text = $_POST['verein'];
$text = $_POST['urteil'];
$text = $_POST['besuche'];
 $text = $_POST['aufmerksam'];
$text = $_POST['nachricht1']; 
$text = $_POST['nachricht2']; 
 $text = $_POST['nachricht3'];  
   $text = $_POST['nachricht4'];  
  $text = $_POST['nachricht5'];  
  $text = $_POST['nachricht6'];  
   mail($empf, $text, $from); 
  echo "Vielen Dank";            } 
else {  
 echo "Bitte alle Felder mit * ausf&uuml;llen....";            }  
      ?>   
 </body>
</html>

Hoffe ihr könnt mir helfen und einen schönen Restabend noch.
Seppeli
 
Werbung:
Hi,

ich glaube, es liegt am PHP-Script:

PHP:
$text = $_POST['verein'];
$text = $_POST['urteil'];
$text = $_POST['besuche'];
$text = $_POST['aufmerksam'];
$text = $_POST['nachricht1']; 
$text = $_POST['nachricht2']; 
$text = $_POST['nachricht3'];  
$text = $_POST['nachricht4'];  
$text = $_POST['nachricht5'];  
$text = $_POST['nachricht6'];

Da fehlt doch immer der verbindende Punkt, z.B.:
PHP:
$text = $_POST['verein'];
$text .= $_POST['urteil'];
$text .= $_POST['besuche'];
  :
  :
 
Abgesehen davon fehlt jegliche Sicherung an dem Script. Ich würde raten das in der Form nicht zu verwenden.
 
Werbung:
Das hat schon mal einen großen Schritt geholfen. Jetzt ist aber das Problem, dass alle Antworten ab "Verein" eingetragen werden als Betreff der Nachricht, also es ein je nach Antworten endlos langer Betreff wird. Wie bekomme ich den Teil dann in die Hauptnachricht verschoben?
 
Du möchtest bestimmt mal in der Doku nachlesen: PHP: mail - Manual

Und noch ein Hinweis: verzichte auf die mail-Funktion von PHP und nutze statt dessen eine fertige Klasse w.z.B. den phpMailer
 
Ich hab das jetzt mehrmals durchgelesen, aber ich weiß ehrlich gesagt nicht, was falsch ist.
Sieht jetzt wie folgt aus:
PHP:
<?php
 if($_POST['vor']!="" and $_POST['mail']!="" and $_POST['urteil']!="" ) {
$empf = "meine email";
$betreff ="Neue Umfrage";
$from = "From: "; 
$from .= $_POST['vor'];
$from .= " <"; 
 $from .= $_POST['mail'];
$from .= ">\n";
$from .= "Reply-To: "; 
$from .= $_POST['mail']; 
$from .= "\n";
 $from .= "Content-Type: text/html\n";
 $text = $_POST['verein'];
$from .= "\n";
$text = $_POST['urteil'];
$from .= "\n";
$text = $_POST['besuche'];
$from .= "\n";
 $text = $_POST['aufmerksam'];
$from .= "\n";
$text = $_POST['nachricht1']; 
$from .= "\n";
$text = $_POST['nachricht2']; 
$from .= "\n";
 $text = $_POST['nachricht3'];  
$from .= "\n";
   $text = $_POST['nachricht4'];  
$from .= "\n";
  $text = $_POST['nachricht5'];  
$from .= "\n";
  $text = $_POST['nachricht6'];  

   mail($empf, $betreff, $text, $from );

  echo "Vielen Dank";            } 
else {  
 echo "Bitte alle Felder mit * ausf&uuml;llen....";            }  
      ?>   
 </body>
</html>

Da ich es eben überlesen habe. Was ist mit Sicherung gemeint? Was soll ich denn dort sichern? Wegen Spam oder aus welchem Grund?
 
Werbung:
Ja, wg. Spam und möglichem Missbrauch muss das Script abgesichert werden. So wie es jetzt aussieht, könnte es sehr leicht missbraucht werden. Schau dir dazu bitte entsprechende Tutorials oder Beispiele hier im Forum an.

Auf die mail()-Funktion sollte außerdem auch verzichtet werden, da hierüber geschickte E-Mails nicht wirklich sicher auch beim Empfänger ankommen. Alternativen wurden bereits genannt.

Und zu deinem Code:
Falsch:
PHP:
$text = $_POST['nachricht2'];

Richtig:
PHP:
$text .= $_POST['nachricht2'];

Fällt dir was auf?
 
Das ist mir jetzt peinlich. Vielen Dank.
Und wegen der Mailmethode werd ich mir nachher mal die anderen Sachen anschauen, dankeschön!
Guten Rutsch euch allen.
 
Zurück
Oben