Seite 1 von 1

Kontakt formular sendet leer ab

Verfasst: 05.02.2010 16:33
von Bones van Helghast
Hallo, ich hab mal ein kleines Kontaktformular erstellt dass daten statt an einer E-Mail adresse an einer SQL DB geschickt wird und über ein Adminmenü ausgelesen wird.
Blöderweiße ist es so wenn ich nun auf "Kontakt" drücke dass das Formular so abgeschickt wird wie es angeklickt wurde d.H öffnet man "Kontakt" und hat nichts eingegeben wird von alleine eine leere Message abgeschickt.
Genau das soll aber nicht sein d.H ich hätte gerne dass 3 Felder Pflichtfelder werden und dass es beim öffnen des Kontaktformulars nicht mehr leer absendet.

Code: Alles auswählen

<form action="kontakt.php"  method="post">
	<table style="width: 100%">
		<tr>
			<td style="width: 157px">Dein Name:</td>
			<td>
			<input type="text" id=name name="name" style="width: 200px"></td>
		</tr>
		<tr>
			<td style="width: 157px">Deine E-Mail Adresse:</td>
			<td><input type="text" id=email name="email" style="width: 200px"></td>
		</tr>
		<tr>
			<td style="width: 157px">Dein Betreff:</td>
			<td>
			<select id=betreff name="betreff" style="width: 200px">
			<option value="Lob/Kritik">Lob/Kritik</option>
			<option value="Wunsch">Änderungs Wunsch</option>
			<option value="Defekten Link">Defekter Link</option>
			<option value="Sonstiges">Sonstiges</option>
			</select>
			</td>
		</tr>
		<tr>
			<td style="width: 157px">Deine Nachricht:</td>
		</tr>
	</table>
	<table style="width:100%">
	<tr>
	<td><textarea id=nachricht name="nachricht" style="width: 365px; height: 150px"></textarea></td>
	</tr>
	</table><br><br>
	<input type="submit" value="Absenden">
</form>
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$betreff = $_POST["betreff"];
$nachricht = $_POST["nachricht"];
$ip = $_SERVER['REMOTE_ADDR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$datum = date("d.m.Y",time());

if($name == "" AND $email == "" AND $nachricht == "" )
    {
    echo "";
    }

$result = mysql_query("SELECT id FROM kontakt WHERE email LIKE '$email'");
$menge = mysql_num_rows($result);


if($menge == 0)
    {
    $eintrag = "INSERT INTO kontakt (name, email, betreff, nachricht, ip, browser, datum) VALUES ('$name', '$email', '$betreff', '$nachricht', '$ip', '$browser', '$datum')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "Nachricht erfolgreich versendet.";
        }
    else
        {
        echo "Problem beim versenden der Nachricht.";
        }


    }

else
    {
    echo "";
    }
?>


Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 16:40
von P7BB
Bones van Helghast hat geschrieben:Hallo, ich hab mal ein kleines Kontaktformular erstellt dass daten statt an einer E-Mail adresse an einer SQL DB geschickt wird und über ein Adminmenü ausgelesen wird.
Blöderweiße ist es so wenn ich nun auf "Kontakt" drücke dass das Formular so abgeschickt wird wie es angeklickt wurde d.H öffnet man "Kontakt" und hat nichts eingegeben wird von alleine eine leere Message abgeschickt.
Genau das soll aber nicht sein d.H ich hätte gerne dass 3 Felder Pflichtfelder werden und dass es beim öffnen des Kontaktformulars nicht mehr leer absendet.

Code: Alles auswählen

<form action="kontakt.php"  method="post">
	<table style="width: 100%">
		<tr>
			<td style="width: 157px">Dein Name:</td>
			<td>
			<input type="text" id=name name="name" style="width: 200px"></td>
		</tr>
		<tr>
			<td style="width: 157px">Deine E-Mail Adresse:</td>
			<td><input type="text" id=email name="email" style="width: 200px"></td>
		</tr>
		<tr>
			<td style="width: 157px">Dein Betreff:</td>
			<td>
			<select id=betreff name="betreff" style="width: 200px">
			<option value="Lob/Kritik">Lob/Kritik</option>
			<option value="Wunsch">Änderungs Wunsch</option>
			<option value="Defekten Link">Defekter Link</option>
			<option value="Sonstiges">Sonstiges</option>
			</select>
			</td>
		</tr>
		<tr>
			<td style="width: 157px">Deine Nachricht:</td>
		</tr>
	</table>
	<table style="width:100%">
	<tr>
	<td><textarea id=nachricht name="nachricht" style="width: 365px; height: 150px"></textarea></td>
	</tr>
	</table><br><br>
	<input type="submit" value="Absenden">
</form>
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$betreff = $_POST["betreff"];
$nachricht = $_POST["nachricht"];
$ip = $_SERVER['REMOTE_ADDR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$datum = date("d.m.Y",time());

if($name == "" AND $email == "" AND $nachricht == "" )
    {
    echo "";
    }

$result = mysql_query("SELECT id FROM kontakt WHERE email LIKE '$email'");
$menge = mysql_num_rows($result);


if($menge == 0)
    {
    $eintrag = "INSERT INTO kontakt (name, email, betreff, nachricht, ip, browser, datum) VALUES ('$name', '$email', '$betreff', '$nachricht', '$ip', '$browser', '$datum')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "Nachricht erfolgreich versendet.";
        }
    else
        {
        echo "Problem beim versenden der Nachricht.";
        }


    }

else
    {
    echo "";
    }
?>

Denkfehler!

Code: Alles auswählen

if($name == "" AND $email == "" AND $nachricht == "" )
Du fragst, ob $name leer ist UND $email UND $nachricht...
statt "AND" musst du "OR" nehmen...
Außerdem muss indieselbe Klammer dann der Code, der den Eintrag absendet. Wenn ich deinen Code richtig deute, wird dein Eintrag nämlich IMMER geschrieben, weil er nicht in einer If-Abfrage drin steht ;)

Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 17:02
von Bones van Helghast
Hm das hatte ich vorher das mit der OR das hat aber auch nichts gebracht...

wo genau müsste ich dann nun die if abfrage hinsetzten die du meinst dass fehlt ?

Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 18:11
von P7BB
Du musst den kompletten Sende-Vorgang in die if-Abfrage (mit OR statt AND ;). Es stimmt schon so, wie ich es geschrieben hab :D ) packen.

Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 20:56
von Bones van Helghast
Okay, klasse nun funktioniert das mit den Pflichtfeldern allerdings wird nun permanent der Text angezeigt der eig. nur kommen soll, wenn die Pflichtfelder fehlen
d.H füll ich nun die pflichtfelder aus wird der Text immernoch angezeigt

Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 21:12
von Pyramide
Auf jeden Fall solltest du den Code noch gegen SQL Injection absichern.

Re: Kontakt formular sendet leer ab

Verfasst: 05.02.2010 21:33
von P7BB
Gib dem Submit-Button noch einen Namen, beispielsweise "button". bevor du die fehlermeldung ausgibst, prüfs du dann noch, ob $_POST['button']; existiert:

Code: Alles auswählen

if(!empty($_POST['button'])) {
// Fehlermeldung
}
Dieses Stück muss aber trotzdem noch im else-Bereich der Abfrage, ob alle Felder asugefüllt wurden, sein ;)