Kontaktformular-problem!

felixb

Mitglied
hallo,
ich hab versucht, mir ein PHP kontaktformular zu machen. hab wohl einen fehler drin. find den aber net!

das formular ist ja eigentlich nur HTML:

Code:
<form action=senden.php' method='post' nctype='multipart/form-data'>
	<table border='0' width='400'>
		<tr>
			<td>Name: *</td>
			<td><input type=text name='name' value='$name'></td>
		</tr>
		<tr>
			<td>Mail: *</td>
			<td><input type=text name='mail' value='$mail'></td>
		</tr>
		<tr>
			<td>ICQ:</td>
			<td><input type=text name='icq' value='$icq'></td>
		</tr>
		<tr>
			<td>URL:</td>
			<td><input type=text name='homepage' value='$homepage'></td>
		</tr>
		<tr>
			<td>Betreff: *</td>
			<td><input type=text name='betreff' value='$betreff'></td>
		</tr>
		<tr>
			<td>Text: *</td>
			<td><textarea rows='5' cols='30' name='text' value='$text'></textarea></td>
		</tr>
		<tr>
			<td colspan='2'>
				<center>
				<input type='submit' value='Mail senden' border='0' bgcolor='#F9BD56'>
				<input type='reset' value='Reset' border='0' bgcolor='#F9BD56'>
				</center>
			</td>
		</tr>
	</table>
</form>

So und in der senden.php datei steht:



Code:
<?PHP
$Body='$name, <$mail>, <$homepage>, Icq: $icq, Nachricht: \n'.$text
mail($an, $betreff, $Body)
?>
<?PHP
$fehlen = '';
if (empty($name)) {
$Fehlen = $Fehlen. '<li>Dein Name';
}
if (empty($mail)) {
$Fehlen = $Fehlen. '<li>Dein Mail-Adresse';
}
if (empty($betreff)) {
$Fehlen = $Fehlen. '<li>Der Betreff';
}
if (empty($text)) {
$Fehlen = $Fehlen. '<li>Der Text'
}
if (!empty($Fehlen)) {
echo 'Deine Nachricht wurde nicht versendet!<br>';
echo 'Du hast folgende Angaben nicht angegeben:<p>';
echo '$Fehlen<p>';
echo '<a href='formular.php'>Zurück zum Formular</a>';
}
?>

ich hoffe ihr könnt mir helfen!

gruß felixb
 
oha:

1. <form action=senden.php'

du hast den anfangs ' vergessen, wenn man das überhaupt braucht

2. warum ? nctype='multipart/form-data' richtig wäre erstens enctype='multipart/form-data' aber du willst ja nichts hochladen oder ?

3. warum soll das ausgangsformular schon daten enthalten ? <input type=text name='name' value='$name'></td> und woher kommt in senden.php die var $an ?
 
Hallo,

Du musst wenn du variablen nutz zwischen Gros und Kleinschreibung achten.

PHP:
$fehlen = "";



$Fehlen .=  "Dein Name";

Im PHP Teil.

Im HTML TEIL muss das raus :

nctype='multipart/form-data'

Noch ein TIP !

Schreibe im HTML Teil die sachen in " " sonst ist es schlechter code.

Viel Spass

euer SaTaN
 
Zuletzt bearbeitet:
soll ich alles groß schreiben?
ich hab festgestellt, das ich noch gar keine mail adresse angegeben habe, woin das geschickt werden soll! wohin mach ich das denn?

mfg
 
http://de.php.net/manual/de/function.mail.php

zu 3:
woher kommt im Formular die Variable $name ? wenn du jetzt am anfang des formulars $name = "Franz"; setzt steht da schon franz bevor ein user was eingegeben hat ... du solltest es so machen:

<td><input type="text" name="name"></td>

value kann bei der eingabe doch rauß... du editierst ja nichts...
 
ähm...

Sach mal... bekommst Du eigentlich garkeine Fehlermeldungen wenn Du das Script ausführst? :eek:

Naja... folgende Anmerkungen meinerseits:

1. Überleg mal warum die "values" in Deinem HTML-Formular garantiert keine Werte enthalten werden (kleiner Tip: es wird da immer $name, $mail, $ICQ, usw. drin stehen)

2. Denk immer an diese hier --> ; !

3.
PHP:
$Body='$name, <$mail>, <$homepage>, Icq: $icq, Nachricht: \n'.$text
geht das (abgesehn vom fehlenden ; am Ende) überhaupt?
Also ich würde das so schreiben:
PHP:
$Body='$_POST[name], <$_POST[mail]>, <$_POST[homepage]>, Icq: $_POST[icq], Nachricht: \n'.$_POST[text];

4. Warum wird dieser Link:
PHP:
echo '<a href='formular.php'>Zurück zum Formular</a>';
nicht funktionieren?
Tip: schau Dir mal die ' genau an...

5.
PHP:
if (!empty($Fehlen)) {
echo 'Deine Nachricht wurde nicht versendet!<br>';
echo 'Du hast folgende Angaben nicht angegeben:<p>';
echo '$Fehlen<p>';
echo '<a href='formular.php'>Zurück zum Formular</a>';
}
das stimmt doch nicht... Die eMail wird immer versendet (gleich am Anfang des PHP-Teils), egal ob die Paramter was enthalten oder nicht...

Wenn dann musst Du das versenden der eMail oben weglassen und hier einfügen:
PHP:
if (!empty($Fehlen)) {
echo 'Deine Nachricht wurde nicht versendet!<br>';
echo 'Du hast folgende Angaben nicht angegeben:<p>';
echo '$Fehlen<p>';
echo '<a href='formular.php'>Zurück zum Formular</a>';
}
else {
mail($an, $betreff, $Body);
}

soviel erstmal von mir...

MfG
cyber
 
Zurück