Require-Abfrage?

Fey

Erfahrenes Mitglied
Hallo zusammen...

...ich hab mir für meine Website mit Hilfe von SelfPHP ein kleines Kontaktformular zusammengeschmiedet. Das funktioniert soweit auch ganz gut, einziges Übel, das Formular kann auch komplett leer abgesendet werden.

Ich hab zwar bei SelfPHP schon geguckt, aber ich weiß ja noch nicht mal, nach was ich in der Referenz suchen soll. Und eine richtige Suchfunktion gibbet da ja leider nicht. :(

Kann mir vielleicht einer von Euch Könnern helfen? Das Formular ist auf http://www.feyiama.de unter Kontakt.

Dieses Formular ist das simpelste vom simpelsten, nicht lachen. ;)

Vielen Dank jetzt schonmal.

Gruß,
Fey
 
Hm, ich kenne deinen Quelltext der contact.php3 halt nicht... Aber eigentlich solltest du folgendes Zeugs dort einfügen können:

PHP:
<?
if($name == "" OR $email == "" OR $nachricht == "") {
   echo "Du hast nicht alle Felder ausgefüllt! Das Formular konnte deshalb nicht gesendet werden";
} else {
   // Das jetzige Script hier anhängen...
}
?>

hth, mfg
poolpage
 
Also mein Script sieht folgendermaßen aus:

Der Teil kommt noch vor dem HTML-Tag
PHP:
<?PHP
	$email_to = "elfe@feyiama.de";
	$email_from_mail = "$email";
	$email_from_name = "$name";
	$email_betreff = "$betreff";
?>

Dann:

PHP:
<?php if(!isset($email)){ ?>

Dann kommt das Formular.

And last but not least:

PHP:
<?php } 
else{   
$header="From:$email_from_name<$email_from_mail>\n";
echo ("Vielen Dank f&uuml;r Eure eMail!");
mail($email_to,$email_betreff,$nachricht,$header);}
?>

MfG,
Fey

@poolpage: bzw. wenn Du mir jetzt laienhaft erklären könntest, wo Dein Part rein muss wäre mir schon geholfen. ;)
 
Ich erlaub mir mal, mich hier einzumischen ;)

Also nach dem Formular würde dann folgendes kommen:

PHP:
<?php } 
elseif (($email=="") || ($name=="") || ($betreff=="") || ($nachricht=="")){
echo "Sie haben nicht alle Felder ausgef&uuml;llt! Es wurde deshalb keine Mail geschickt.";}
// Kleiner nützlicher Bonus: Überprüfung auf korrekte Mail-Syntax:
elseif (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtg]|fo|me)?$",$email)){
echo "Sie haben eine ung&uuml;ltige E-Mail-Adresse angegeben! Es wurde deshalb keine Mail geschickt.";}
else{   
$header="From:$email_from_name<$email_from_mail>\n";
echo "Vielen Dank f&uuml;r Eure eMail!";
mail($email_to,$email_betreff,$nachricht,$header);}
?>
Noch zwei kleine Tipps am Rande:
1. Die "" bei $email_from_mail = "$email" und ähnlichen Zeilen kannst du getrost weglassen.
2. echo ist fester Bestandteil von PHP und benötigt deswegen keine Klammern.

PS: Schöne Site hast du ;)
 
Zuletzt bearbeitet:
Ich mache das immer so:

PHP:
		// variablen deklaration
		$db = new mysql_db;
		$muss = array ();
		$error = array ();

		// felder die nicht leer sein dürfen
		$muss[] = "firma";
		$muss[] = "str";
		$muss[] = "plz";
		$muss[] = "ort";
		$muss[] = "tel";
		$muss[] = "anzeige";
		$muss[] = "StartTerminTag";
		$muss[] = "StartTerminMonat";
		$muss[] = "StartTerminJahr";
		$muss[] = "EndTerminTag";
		$muss[] = "EndTerminMonat";
		$muss[] = "EndTerminJahr";

		// fehlermeldungen bei leeren formularfeldern
		$error[firma] = "Bitte geben Sie den Firmennamen an!";
		$error[str] = "Bitte geben Sie die Straße an!";
		$error[plz] = "Bitte geben Sie die Postleitzahl an!";
		$error[ort] = "Bitte geben Sie den Ort an!";
		$error[tel] = "Bitte geben Sie die Telefon Nummer an!";
		$error[anzeige] = "Bitte wählen Sie die Anzeige aus!";
		$error[StartTerminTag] = "Bitte wählen Sie den Start Tag aus!";
		$error[StartTerminMonat] = "Bitte wählen Sie den Start Monat aus!";
		$error[StartTerminJahr] = "Bitte wählen Sie den Start Jahr aus!";
		$error[EndTerminTag] = "Bitte wählen Sie den End Tag aus!";
		$error[EndTerminMonat] = "Bitte wählen Sie den End Monat aus!";
		$error[EndTerminJahr] = "Bitte wählen Sie den End Jahr aus!";

		reset ( $muss );

		foreach ( $muss as $val ) {
			if ( empty ( $HTTP_POST_VARS[$val] ) ) {
				echo $error[$val]."<br>";
				$stop = true;
			}
		}

		if ( $stop ) {
                    // Fehlermeldungen
		}

oder per JS:

<script language="JavaScript">
<!--
function validateForm(f) {

var good;

var goodName = f.Name.value.match(/\b(^.\S*)\b/gi);
if (goodName) {
good = true
}
else {
f.Name.focus()
alert("Bitte geben Sie Ihren Name ein!")
return false
}

var goodVorname = f.Vorname.value.match(/\b(^.\S*)\b/gi);
if (goodVorname) {
good = true
}
else {
f.Vorname.focus()
alert("Bitte geben Sie Ihren Vorname ein!")
return false
}

var goodStrasse = f.Strasse.value.match(/\b(^.\S*)\b/gi);
if (goodStrasse) {
good = true
}
else {
f.Strasse.focus()
alert("Bitte geben Sie Ihren Strasse ein!")
return false
}

var goodPLZ = f.PLZ.value.match(/\b(^.\S*)\b/gi);
if (goodPLZ) {
good = true
}
else {
f.PLZ.focus()
alert("Bitte geben Sie Ihren Postleitzahl ein!")
return false
}
}
//-->
</script>
 
Hi zusammen...

puuhhh, thx, die Lösung von reima hat sofort funktioniert.

Jetzt nochmal eine Frage am Rande. Ich habe meine Site mit CSS formatiert. Die Anzeige die kommt, wenn die Felder nicht richtig ausgefüllt sind, die eMail-Adresse nicht korrekt ist oder die eMail versand wurde nimmt zwar die Schriftfarbe aus der CSS-Formatierung, aber den Rest ignoriert er. Sieht schon seltsam aus.

Und wie kriege ich in die Ausgabe einen Zurück-Link. Geht sowas überhaupt?

Liebe Grüße,
Feyiama

P.S.: @reima: Danke für das Lob. ;)
 
Hm, tja, ich würde mal sagen, entweder im CSS-File ein globales Format definieren, so in der Art von
Code:
. {
	font-family: arial, Helvetica, sans-serif;
	font-size: 9pt;
	color: white;
}
Oder jede Ausgabe in ein Font-Tag mit class="text" packen. Ersteres wäre natürlich bequemer ;)

Einen Zurück-Link kriegst du, indem du auf "javascript:history.go(-1)" oder auf "javascript:history.back()" linkst. Alternativ kannst du natürlich auch auf deine contact.php3 linken, allerdings wären dann die Formularfelder gelöscht.

MfG
reima

[edit]Öhm... das Board hier reißt javascript wohl auseinander. Zwischen java und script sollte eigentlich kein Leerzeichen sein.[/edit]
 

Neue Beiträge

Zurück