Kontakt formular sendet leer ab

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Bones van Helghast
Mitglied
Beiträge: 157
Registriert: 19.09.2008 08:31

Kontakt formular sendet leer ab

Beitrag 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 "";
    }
?>

P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Kontakt formular sendet leer ab

Beitrag 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 ;)
Benutzeravatar
Bones van Helghast
Mitglied
Beiträge: 157
Registriert: 19.09.2008 08:31

Re: Kontakt formular sendet leer ab

Beitrag 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 ?
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Kontakt formular sendet leer ab

Beitrag 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.
Benutzeravatar
Bones van Helghast
Mitglied
Beiträge: 157
Registriert: 19.09.2008 08:31

Re: Kontakt formular sendet leer ab

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Kontakt formular sendet leer ab

Beitrag von Pyramide »

Auf jeden Fall solltest du den Code noch gegen SQL Injection absichern.
KB:knigge
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Kontakt formular sendet leer ab

Beitrag 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 ;)
Antworten

Zurück zu „Coding & Technik“