Kontaktformular mit mehreren Feldern

Tyral Parker

Mitglied
Ich habe folgendes Kontaktformular geschrieben, umgeschrieben:

PHP:
<?php
#
# Variablen
#
$To = "webmaster@seven-secrets.com";				# Empfaenger der E-Mail
$Autoresponder = "karten@promo-select.seven-secrets.com";	# Absender der Autorespondernachricht
$Autoresponder = $To;						# 
$response = "response.php";					# Antwortseite
$errorpage = "errorpage.php";					# Fehlerseite

#
# Diese Funktion Ueberprueft die Eingaben
#
function CheckInput ($input)
{
	$missing = 0;

	if (! $input[From]) { $missing ++; }
	if (! $input[Subject]) { $missing ++; }
	if (! $input[Message]) { $missing ++; }

	return $missing;
}


#
# Diese Funktion versendet eine Mail
#
function SendMail ($To, $Subject, $Message, $From)
{
	$valid = $To && $Subject && $Message && $From;
	if (! $valid)
	{
		return 1;
	}
	$ret = mail ("$To", "$Subject", "$Message", "From: $From");
	if (! $ret)
	{
		return 2;
	}
	return 0;
}

if ($Send)
{
	# Der Button "Senden" wurde angeklickt.
	$errors = CheckInput ($HTTP_POST_VARS);
	if (! $errors)
	{
		# Alle Eingaben vorhanden
		$ret = SendMail ($To, $Subject, $Message, $From);
		if ($ret != 0)
		{
			# Vielleicht haben Sie vergesssen, den Empfaenger einzutragen
			# sehe Variable $To am Anfang
			require ("$errorpage");
		}
		else
		{
			if ($Autoresponder)
			{
				$Response = "Ihre Mail wurde an $To weitergeleitet.\n";
				SendMail ($From, $Subject, $Response, $Autoresponder);
			}
			require ("$response");
		}
		exit ();
	}
	else
	{
		$Hinweis = "<b>F&uuml;llen Sie alle mit * gekennzeichneten Felder aus!</b><br>\n";
	}
}
?>

Wie kann ich mehreren Felder als Inhalt einer Mail schicken. Bis jetzt schicke ich immer nur den Inhalt der Textarea. Ich möchta aber auch den Inhalt der Inputfelder (Mail, Strasse, Plz, Ort, Karten) gesendet haben. des weitern soll der Check der Textarea nicht mehr vollzogen werden.

Bissheriges kann mann sich ansehen unter:
http://www.seven-secrets.com/promo-select/kartenbestellung/formular.php

Danke sehr!
Edit Caminus: Könntest du dich bitte an die Regeln halten, insbesondere was das Posten von Quelltext angeht.
http://www.tutorials.de/tutorials20021.html
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

PHP:
mail ("$To", "$Subject", "$Message\n$WeitereInfos\n$WeitereInfos2", "From: $From");

Einfach die weiteren Daten anhängen...

ciao
 
Danke für die Hilfe. Muss ich das jetzt bei allen Variablenaufzählungen machen? Und wie bekomme ich die Überprüfung für die Massege raus? Jetzt kommt aber leider kein Text an!
 
Zuletzt bearbeitet:
Original geschrieben von Tyral Parker
Danke für die Hilfe. Muss ich das jetzt bei allen Variablenaufzählungen machen? Und wie bekomme ich die Überprüfung für die Massege raus?

Sorry mir is nicht ganz klar was du jetzt meinst :)

"wie bekomme ich die Überprüfung für die Massege raus"
welche Überprüfung? im Zweifelsfall einfach mal auskommentieren ;)
PHP:
//if (! $input[Message]) { $missing ++; }

"Muss ich das jetzt bei allen Variablenaufzählungen machen"
Du musst halt alle Variablen Übergeben die du versenden willst. Alternativ kannst du aber auch im Script einen Message erstellen und nur diese Übergeben...
PHP:
...
$message = "blablabla $Variable1 blablabla $Variable2...";
...

bye

// Jubiläumspost :)
 
Ich habe mein Scrip jetzt soweit editiert, jedoch schreibt er mir immernoch ne Fehlermeldung, obwohl er die Daten so sendet, wie ich es mir vorstelle.

PHP:
<?php
#
# Variablen
#
$To = "webmaster@seven-secrets.com";						# Empfaenger der E-Mail
$Autoresponder = "karten@promo-select.seven-secrets.com";	# Absender der Autorespondernachricht
$Autoresponder = $To;										# 
$response = "response.php";									# Antwortseite
$errorpage = "errorpage.php";								# Fehlerseite

#
# Diese Funktion Ueberprueft die Eingaben
#
function CheckInput ($input)
{
	$missing = 0;

	if (! $input[From]) { $missing ++; }
	if (! $input[Subject]) { $missing ++; }
	
	return $missing;
}


#
# Diese Funktion versendet eine Mail
#
function SendMail ($To, $Subject, $Name, $Strasse, $Plz, $Ort, $Karten, $Massege, $From)
{
	$valid = $To && $Subject && $From ;
	if (! $valid)
	{
		return 1;
	}
	$ret = mail ("$To", "$Subject", "$Name\n$Strasse\n$Plz\n$Ort\n$Karten\n$Massege", "From: $From");
	if (! $ret)
	{
		return 2;
	}
	return 0;
}

if ($Send)
{
	# Der Button "Senden" wurde angeklickt.
	$errors = CheckInput ($HTTP_POST_VARS);
	if (! $errors)
	{
		# Alle Eingaben vorhanden
		$ret = SendMail ($To, $Subject, $Name, $Strasse, $Plz, $Ort, $Karten, $Massege, $From);
		if ($ret != 0)
		{
			# Vielleicht haben Sie vergesssen, den Empfaenger einzutragen
			# sehe Variable $To am Anfang
			require ("$errorpage");
		}
		else
		{
			if ($Autoresponder)
			{
				$Response = "Ihre Mail wurde an $To weitergeleitet.\n";
				SendMail ($From, $Subject, $Response, $Autoresponder);
			}
			require ("$response");
		}
		exit ();
	}
	else
	{
		$Hinweis = "<b>F&uuml;llen Sie alle mit * gekennzeichneten Felder aus!</b><br>\n";
	}
}
?>

Wie die Fehler aussehen kann man sich nach ausfüllen des Formulars hier ansehen:
http://www.seven-secrets.com/promo-...ng/formular.php
 
Zuletzt bearbeitet von einem Moderator:
Der Link geht nicht :(

//edit: bin doch draufgekommen (halt mit dem alten link...)

er bringt dir follgendes:

Warning: Missing argument 5 for sendmail() in /home/www/web22/html/promo-select/kartenbestellung/formular.php on line 28

Warning: Missing argument 6 for sendmail() in /home/www/web22/html/promo-select/kartenbestellung/formular.php on line 28

Warning: Missing argument 7 for sendmail() in /home/www/web22/html/promo-select/kartenbestellung/formular.php on line 28

Warning: Missing argument 8 for sendmail() in /home/www/web22/html/promo-select/kartenbestellung/formular.php on line 28

Warning: Missing argument 9 for sendmail() in /home/www/web22/html/promo-select/kartenbestellung/formular.php on line 28

das sind keine Fehlermeldungen sondern "nur" warnings... Die kannst du in der PHP.ini (Error handling and logging) deaktivieren.

Eventuell gehts auch zur Laufzeit mit http://www.php.net/manual/en/function.ini-set.php

Alternativ kannst du vor den Funktionsaufruf ein "@" setzen um die Fehlerausgabe zu deaktiviern (bin mir nicht 100%ig sicher das es auch bei warnings klappt)...

ciao
 
Zuletzt bearbeitet:
wie soll ich die PHP.ini ändern? Die sehe ich bei meinem Provider doch gar nicht. Wie sieht der Tag aus den ich einfügen muß in das Script um die Warnings zu unterdrücken.
 
Ruf die Funktion mal so auf:

PHP:
@SendMail ($To, $Subject, $Name, $Strasse, $Plz, $Ort, $Karten, $Massege, $From);

wenns nicht hinhaut müssen wir uns morgen was anderes Überlegen ;)


ciao
 
Zurück