Problem mit PHP-Kontaktformular

Alt 02.04.2006, 01:11   # 1
--Spatzenei--
Ehemaliger Mod
 
Benutzerbild von --Spatzenei--
 
Registriert seit: 21.06.2005
Ort: Berlin
Beiträge: 1.325
Ich habe auf meiner Homepage ein Kontaktformular eingebaut. Da ich von PHP nicht viel verstehe, habe ich ein vorgefertigtes genommen.

Eingeleitet wird es durch diesen Tag:
<form name="Kontakt" method="post" action="formmailer.php">

Die formmailer.php sieht so aus:

<?

$recipient = "Meine Adresse";

$success = "erfolg.html";
$fail = "fehler.html";

$subject = "Homepage".$SERVER_NAME;
$body = "Nachricht von ".$SERVER_NAME." am ".date("d.m.Y - H:i:s")."\n";
$body .= "Sender IP: ".$REMOTE_ADDR."\n\n";
while(list($var, $val) = each($HTTP_POST_VARS)) {
$body .= "$var:\n";
for($i=0;$i<strlen($var)+1;$i++) {
$body .= "-";
}
$body .= "\n$val\n\n";
}
if(@mail($recipient, $subject, $body, $header)) {
header("Location: $success");
} else {
header("Location: $fail");
}
?>


Nun das Problem: In den Mails steht keine IP-Adresse des Absenders der Nachricht.
In den Mails, die ich bekomme steht einfach nur "Sender IP: "
Was ist da falsch??
  Mit Zitat antworten
Alt 02.04.2006, 15:59   # 2
dmdk
Quiz-Master
 
Registriert seit: 18.10.2002
Beiträge: 240
Ersetze

PHP-Code:
$body .= "Sender IP: ".$REMOTE_ADDR."\n\n"
durch:

PHP-Code:
$body .= "Sender IP: ".$_SERVER['REMOTE_ADDR']."\n\n"
  Mit Zitat antworten
Alt 02.04.2006, 17:02   # 3
--Spatzenei--
Ehemaliger Mod
Threadstarter
 
Benutzerbild von --Spatzenei--
 
Registriert seit: 21.06.2005
Ort: Berlin
Beiträge: 1.325
Funktioniert nun bestens, !
  Mit Zitat antworten
Alt 02.04.2008, 14:41   # 4
Anny_W
Gastposter
 
Hallo,
ich habe auch ein Problem mit ähnlichem Script.
Wenn die Mails ankommen, steht der Formulareintrag immer unter dem Formularnamen. Was kann ich eintragen, dass es nicht so:
Name:
------
Anette

sondern so:
Name: Anette

aussieht? Hier mein Scriptinhalt:
<?

$recipient = "mail@domain.de";

$success = "http://...erfolg.htm";
$fail = "http://...fehler.htm";

$subject = "Kontaktformular";

while(list($var, $val) = each($HTTP_POST_VARS)) {
$body .= "$var:\n";
for($i=0;$i<strlen($var)+1;$i++) {
$body .= "-";
}
$body .= "\n$val\n";
}
if(@mail($recipient, $subject, $body, $header)) {
header("Location: $success");
} else {
header("Location: $fail");
}
?>
Vielen Dank schonmal für die Hilfe.
Liebe Grüße
Anette
  Mit Zitat antworten
Alt 02.04.2008, 14:53   # 5
dmdk
Quiz-Master
 
Registriert seit: 18.10.2002
Beiträge: 240
Ich habs nicht getestet (teste es!), doch sollte funktionieren:

PHP-Code:
<?

$recipient 
"mail@domain.de";

$success "http://...erfolg.htm";
$fail "http://...fehler.htm";

$subject "Kontaktformular";

while(list(
$var$val) = each($HTTP_POST_VARS)) {
$body .= "$var: ";
$body .= "$val\n\n";
}
if(@
mail($recipient$subject$body$header)) {
header("Location: $success");
} else {
header("Location: $fail");
}
?>
  Mit Zitat antworten
Alt 02.04.2008, 15:57   # 6
Anny_W
Gastposter
 
Das hat funktioniert, vielen vielen Dank erstmal dafür.
Geht es auch irgendwie, dass die Auswertungen untereinander stehen?
Zur Erklärung:
So kommt es jetzt an:
Name: Anette
Strasse: Teststraße 1
PLZ_Ort: 54321 Testhausen

So würde es natürlich schöner aussehen:
Name: Anette
Strasse: Teststraße 1
PLZ_Ort: 54321 Testhausen

Na ja, so ganz untereinander sieht das nicht aus, aber ich denke du weißt was ich meine

Danke schonmal für die Mühe.
Liebe Grüße
Anette
  Mit Zitat antworten
Alt 02.04.2008, 16:00   # 7
Anny_W
Gastposter
 
Ich nochmal,
eigentlich hatte ich bei dem zweiten Block Leerzeichen eingefügt, sodass die Formulareintragungen untereinander stehen. Das hat aber wohl nicht ganz geklappt

Also zwischen den Formularfeldnamen soll ein Zwischenraum sein, sodass die Werte, die der Nutzer eingetragen hat auch untereinander stehen. Dann sieht das nicht so durcheinander aus.

Verständlich? *g*

Anette
  Mit Zitat antworten
Alt 02.04.2008, 16:29   # 8
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Moin,

jetzt habe ich es auch verstanden, das Anwendungsbeispiel ist da doch viel besser erläuternd. Auch wenn die Forensoftware bzw. eigentlich HTML itself das "So würde es natürlich schöner aussehen" gleich wieder kaputt gemacht hat.

Ist schon etwas mehr Aufwand, was du möchtest. Die Mails sind reiner Text, da gibt es keine Tabellen oder Tabulatoren bzw. TABs sind nur bedingt hilfreich. Was Du im Prinzip machen musst ist die "each($HTTP_POST_VARS)"-Schleife zweimal zu durchlaufen. Beim erstenmal musst Du Dir die Länge des längsten $var suchen und im zweiten Durchlauf wie bisher ausgeben, nur mit Leerzeichen aufgefüllt zwischen $var und $val, Anzahl der Leerzeichen ist die längste Länge minus aktuelle Länge plus eins - oder so ähnlich...

Ausprogrammiert kriege ich es spontan nicht, vielleicht reiche ich das noch nach...

Grüße,
Thorsten
__________________
Wieder da: FreewareGuide.de
...bin letztens durch die Aufnahmeprüfung zur Hellseherschule gekracht! smiley crystal ball
  Mit Zitat antworten
Alt 02.04.2008, 18:07   # 9
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
PHP-Code:
<?
$recipient 
"mail@domain.de";

$success "http://...erfolg.htm";
$fail "http://...fehler.htm";

$subject "Kontaktformular";

$maxLength 0;
while(list(
$var$val) = each($HTTP_POST_VARS)) {
  
$maxLength max(strlen($var), $maxLength);
}
reset($HTTP_POST_VARS);
while(list(
$var$val) = each($HTTP_POST_VARS)) {
  
$body .= $var.": ".str_repeat(" ",$maxLength strlen($var)).$val."\n\n";


if(@
mail($recipient$subject$body$header)) {
  
header("Location: $success");
} else {
  
header("Location: $fail");
}
?>
Elegant ist was anderes, aber ich bin grade nicht so daheim in PHP
  Mit Zitat antworten
Alt 19.04.2008, 14:20   # 10
Unregistriert83
Gastposter
 
Hallo zusammen

Ich benutze folgendes Kontaktformular:
PHP / Kontaktformular (1) - Homepage-Total.de

Nun meine frage:
Gibt es eine Möglichkeit das ganze noch ein wenig auszubauen?
Ich meine damit, das es mir die IP-Adresse und den Host des Absenders anzeigt wenn ich das Mail erhalte.

Wenn ja, hat mir hierzu jemand den Script-Code??
Besten Dank für eure mithilfe.
  Mit Zitat antworten
Alt 19.04.2008, 16:02   # 11
FreewareGuide
Moderator
 
Benutzerbild von FreewareGuide
 
Registriert seit: 31.10.2002
Ort: Oldenburg
Beiträge: 5.432
Moin,

es könnte nicht schaden, selbst etwas PHP zu lernen. Das Skript ist wirklich einfach lesbar. Nach der Zeile, die mit "$text = " anfängt, kannst Du da noch weitere Zeilen dranhängen mit den von Dir gewünschten Infos. Z.B. so (völlig ungetestet):
PHP-Code:
$text .= "\n\nAbsender-IP: ".$_SERVER['REMOTE_ADDR']."\n"
Mehr zu verfügbaren Infos: PHP: Vordefinierte Variablen.

Grüße,
Thorsten
__________________
Wieder da: FreewareGuide.de
...bin letztens durch die Aufnahmeprüfung zur Hellseherschule gekracht! smiley crystal ball
  Mit Zitat antworten

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



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