HTTP_Post liefert falsche Werte

NoUse4aNick

Mitglied
Mein Problem:
Ich habe ein einfaches Kontakt Formular gebastelt welches mir per Email die Daten sendet.
Nu leider werden manche Eingaben als 1 anstadt eines Textes geliefert. Der Code Sieht richtig in meinen Augen aus.
Hier der php Code:
Code:
<?php
$nachname=$HTTP_POST_VARS['nachname'];
$mail=$HTTP_POST_VARS['mail'];
$kommentar=$HTTP_POST_VARS['kommentar'];
if($mail=!"") {
	$mailtext="Name: ";
	$mailtext.=$nachname;
	$mailtext.="\n";
	$mailtext.="E-mail Adresse";
	$mailtext.=$mail;
	$mailtext.="\n";
	$mailtext.="Anfrage: ";
	$mailtext.="\n";
	$mailtext.=$kommentar;
	$absender="From:";
	$absender.=$mail;
	mail("mailadresse","anfrage über das Kontaktformular",$mailtext,$absender);
	echo("ihr nachricht wurde erfolgreich versendet");

}
else {
	print("Sie haben keine E-Mail -Adresse angegeben...<br>");
	print("<a href='kontaktformular.html'>Zur&uuml;ck...</a>");
}
?>

meine Email habe ich bewusst in dem Code herauseditiert. Im Original ist sie Vorhanden...
Code des Kontakt Formulars:
Code:
<form action="mailen.php" method="post">
<table border="0">
<tr>
<td>Name</td>
<td><input type="text" name="nachname"></td></tr>
<tr>
<td>E-Mail</td>
<td>
<input type="text" name="mail"></td></tr>
<tr>
<td>Ihre Frage</td>
<td>
<textarea name="kommentar" cols="40" rows="5"></textarea></td></tr>
</table>
<input type="submit" value="Abschicken">
<input type="reset" value="L&ouml;schen">
</form>

Kann mir jemand helfen?

Vielen Dank :)
 
Zuletzt bearbeitet:
Vermutlich liegt es an den fehlenden Gleichheitszeichen bei der Auszeichnung der name-Attribute.
 
Leider nein! diese habe ich ausversehen Beim Erstellen des Posts vergessen.
Im Original Script sind diese Vorhanden. Werde es sofort Ausbessern.

Habe soeben noch einmal auf dem Server nachgesehen, Und auch in diesem Script sind die name Attribute Fehlerfrei
 
Post wird groß geschrieben im form-Tag: method="POST". Und noch ein Hinweis: $HTTP_POST_VARS['name'] ist veraltet und sollte nicht mehr benutzt werden. Jetzt sollte man $_POST['name'] verwenden.
Ob es nun an dem post liegt, kann ich nicht genau sagen, aber aus eigener Erfahrung klappt die Übertragung damit nicht unbedingt.
 
Post wird groß geschrieben im form-Tag: method="POST".
Das ist quatsch.

Und noch ein Hinweis: $HTTP_POST_VARS['name'] ist veraltet und sollte nicht mehr benutzt werden. Jetzt sollte man $_POST['name'] verwenden.
Das ist allerdings richtig. Aber PHP6 ist der Krempel sogar komplett weg, wenn ich mich recht entsinne.

@TS: Lass dir mal print_r($_POST); ausgeben. Steht dort nichts drin?

Darüberhinaus informiere dich bitte darüber, wie du Header-Injections verhindern kannst. Andernfalls wird dein Formular das gefundene Fressen für Spammer!
 
Ich weiß das da veraltet ist aber es funktioniert ja trotzdem. Auserdem ist das seltsame ja das bei manchen es funktioniert und beib manchen nicht... Z.B. wird der Email adresse wert als 1 ausgegeben... Der Rest richtig... Wenn ich noch eine Telefon Nummer hinzufüge wird diese Ebenfalls als 1 ausgegeben.
 
Was die anderen Werte betrifft, kann ich keine Aussage treffen, aber in Bezug auf $mail liegt es daran:
PHP:
if($mail=!"")
..das ist keine Vergleich, sondern eine Zuweisung des booleschen Wertes von !"" an $mail(aus $mail wird dann 1, weil dieser Ausdruck wahr ist)
Aussehen sollte es besser so:
PHP:
if($mail!="")
oder so:
PHP:
if(!empty($mail))

Was das "Veraltete" betrifft: Das mag sein, dass es noch funktioniert, dies hängt jedoch von der PHP-Konfiguration ab.
Falls das Ganze nicht nur auf deinem eigenen Server laufen soll, wärst du daher gut beraten, das auf dem aktuellen Stand zu Halten, ansonsten hast du bei der nächsten Änderung der Konfiguration u.U. einen Haufen nicht mehr funktionierender Skripte herumliegen..
 
Code:
if(mail!="")
Fukntionierte aus unerklärlichen Gründen nicht er ging immer sofort zum else Block obwohl jetzt sogar alles auf dem neusen Stand gebracht worden ist! Naja egal die zweite Variante funktionierte dann doch zum Glück! Vielen Dank :)
 
Zurück