Formular Pflichtfelder funktionieren nicht!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anforderung
bestimmte zeichen
betreff
code
eingabe
fehler
klammern
layout
lokalen server
nachricht
richtig gesetz
sagen
sauberste methode
sicherheit
text
url
weben
zugreifen
zuweisung
-
Hallo,
ich möchte in mein Kontaktformular Pflichtfelder einbauen, aber irgendetwas funktionier nicht!
kontakt.php:
<form name="kontakt" action="kontakt2.php" method="GET" enctype="text/html"> Name: <input type="text" name="name" value="" size="20" maxlength="50" /><br> Betreff: <input type="text" name="grnd" value="" size="20" maxlength="30" /><br> E-Mail: <input type="text" name="mail" value="" size="20" maxlength="50" /><br> Nachricht: <br><textarea name="text" rows="8" cols="40"></textarea><br><br> <input type="submit" name="" value="Absenden" />
kontakt2.php:
<?php $Name = $_GET['name']; $Grnd = $_GET['grnd']; $Mail = $_GET['mail']; $Text = $_GET['text']; if (empty($Name) { echo "Name eingeben!"; exit; } if (empty($Grnd) { echo "Betreff eingeben!"; exit; } if (empty($Mail) { echo "E-Mail Adresse eingeben!"; exit; } if (empty($Text) { echo "Nachricht eingeben!"; exit; } else() { <html> <h2>Nachrich erfolgreich versandt!</h2> </html> mail ("xy@web.de", $Grnd, $Text); } ?>
Kann mir irgend jemand sagen, wo mein Fehler liegt?
Beitrag zuletzt geändert: 16.10.2011 18:13:33 von muggel24 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<?php $Name = $_GET['name']; $Grnd = $_GET['grnd']; $Mail = $_GET['mail']; $Text = $_GET['text']; if (empty($Name)) { echo "Name eingeben!"; exit; } if (empty($Grnd)) { echo "Betreff eingeben!"; exit; } if (empty($Mail)) { echo "E-Mail Adresse eingeben!"; exit; } if (empty($Text)) { echo "Nachricht eingeben!"; exit; } else() { <html> <h2>Nachrich erfolgreich versandt!</h2> </html> mail ("xy@web.de", $Grnd, $Text); } ?>
Wäre Schön mit ner Fehlermeldung oder so. Ich glaub die klammern sind nicht richtig gesetz (oben jetzt schon berichtigt). Aber ich würde es sowieso anders machen so z.B:
<?php $Name = $_GET['name']; $Grnd = $_GET['grnd']; $Mail = $_GET['mail']; $Text = $_GET['text']; if ($Name == "") { echo "Name eingeben!"; exit; } if ($Grnd == "") { echo "Betreff eingeben!"; exit; } if ($Mail == "") { echo "E-Mail Adresse eingeben!"; exit; } if ($Text == "") { echo "Nachricht eingeben!"; exit; } else() { <html> <h2>Nachrich erfolgreich versandt!</h2> </html> mail ("xy@web.de", $Grnd, $Text); } ?>
-
nilsmargotti schrieb:
<?php $Name = $_GET['name']; $Grnd = $_GET['grnd']; $Mail = $_GET['mail']; $Text = $_GET['text']; if ($Name == "") { echo "Name eingeben!"; exit; } ... ?>
Ich würde es nicht so machen, da PHP bei mir auf dem lokalen Server undefined Variable schreibt.
eher so:
<?php $Name = $_GET['name']; ... if (!(isset($_GET['name'])) { echo "Name eingeben!"; exit; }
Kann sein, dass es bei Lima anders ist, aber bei mir zerschießt es das sonst das Layout.
mfg Askarian -
bei lima-city sind alle fehler ausgaben zur sicherheit deaktiviert.(kann man aber auch wieder aktivieren)
-
askarian schrieb:
Ich würde es nicht so machen, da PHP bei mir auf dem lokalen Server undefined Variable schreibt.
eher so:
<?php $Name = $_GET['name']; ... if (!(isset($_GET['name'])) { echo "Name eingeben!"; exit; }
Kann sein, dass es bei Lima anders ist, aber bei mir zerschießt es das sonst das Layout.
mfg Askarian
Das ist die sauberste methode, allerdings kann man auch statt die GET Variablen gleich auf die zugewiesenen Variablen ($Name) zugreifen.
Oder man lässt die Zuweisung einfach wech, lohnt sich meist eh nur wenn man die Variablen öfter braucht oder sie verändern will.
Beitrag zuletzt geändert: 18.10.2011 5:34:30 von pooldreams -
Hallo
ich würde Eingabe-Variablen immer neu zuweisen und dabei gleich escapen (Sicherheit)
$name = stripslashes(trim(chop($_GET['name'])));
... und evtl. auch nur bestimmte Zeichen zulassen...
$name = preg_replace('/[^0-9_a-z]/i', $name);
usw, je nach Anforderung (eMail Syntax prüfen, min../max. Zeichen, etc.)
-
Da sind ein paar Syntaxfehler in kontakt2.php. ;)
bei jedem if fehlt am ende eine schließende Klammer
beim else ist das Klammerpaar überflüssig
und html-code innerhalb von php geht auch nicht.
So sollte es funktionieren:
<?php $Name = $_GET['name']; $Grnd = $_GET['grnd']; $Mail = $_GET['mail']; $Text = $_GET['text']; if (empty($Name)) { echo "Name eingeben!"; exit; } if (empty($Grnd)) { echo "Betreff eingeben!"; exit; } if (empty($Mail)) { echo "E-Mail Adresse eingeben!"; exit; } if (empty($Text)) { echo "Nachricht eingeben!"; exit; } else { echo '<h2>Nachrich erfolgreich versandt!</h2>'; mail ("xy@web.de", $Grnd, $Text); } ?>
Natürlich müßte das Formular jetzt noch gegen Mißbrauch geschützt werden, aber das ist ein anderes Thema. ;)
Beitrag zuletzt geändert: 18.10.2011 13:29:42 von fatfreddy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage