PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Verstecktes Formularfeld (http://www.selfphp.de/forum/showthread.php?t=21061)

ro.bo. 01.03.2009 11:52:53

Verstecktes Formularfeld
 
Hallo zusammen

Ich habe in mein Kontaktformular, welches über eine send.php verschickt wird, zur Spamsicherheit ein verstecktes Formularfeld mit dem Namen Betreff erstellt. In der send.php habe ich den Befehl if ($_Post["Betreff"] != "") exit; eingebaut. Leider wird die Nachricht trotzdem gesandt, auch wenn das Feld "Betreff" ausgefüllt wird. Was ist in meinem Code falsch?

Code send.php:
PHP-Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kontaktformular</title>
</head>

<?php
/* Feste Variablen bestimmen */
$empfaenger "meine@emailadresse.ch";
 
/* Daten aus Formular abholen */
$name $_POST['Name'];
$vorname $_POST['Vorname'];
$firma $_POST['Firma'];
$email $_POST['Email'];
$telefon $_POST['Telefon'];
$adresse $_POST['Adresse'];
$ort $_POST['Ort'];
$betreff $_POST['Betreff'];
$nachricht $_POST['Nachricht']; 

if (
$_Post["Betreff"] != "") exit;

/* Formatierung der E-Mail */
$kopf "KONTAKTFORMULAR E-Mail von ".$vorname." ".$name." (".$email.")";
$nachricht $vorname." ".$name." schrieb:\n\nVorname: ".$vorname."\nName: ".$name."\nFirma: ".$firma."\ne-Mail: ".$email."\nTelefon: ".$telefon."\nAdresse: ".$adresse."\nOrt: ".$ort."\n\nNachricht: ".$nachricht;

/* Versenden der E-Mail */
    
if(mail($empfaenger$kopf$nachricht"From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nX-Mailer: PHP/" phpversion()))
{
    echo 
"<font face='Arial, Helvetica, sans-serif'><font size='2'>Ihre Nachricht wurde erfolgreich abgeschickt. Vielen Dank.</font>";    
}
else
{
    echo 
"<font face='Arial, Helvetica, sans-serif'><font size='2'>Fehler beim Versenden der E-Mail. Bitte versuchen Sie es noch einmal.</font>";
}
?>

Würde mich freuen, wenn Ihr mir weiterhelfen könntet. Vielen Dank.

ro.bo.

wastl1337 01.03.2009 12:28:46

AW: Verstecktes Formularfeld
 
huhu,

Zitata: "Leider wird die Nachricht trotzdem gesandt, auch wenn das Feld "Betreff" ausgefüllt wird. "

PHP-Code:
PHP-Code:

if ($_Post["Betreff"] != "") exit; 

Dieser Code heisst zu deutsch: "Wenn Betreff nicht leer ist mache einen Skriptabbruch.
Und jetzt siehe das Zitat. :D

Soll heissen vergleiche Besser mit
PHP-Code:

if($_POST["Betreff"] == "") exit(); 

oder
PHP-Code:

if(empty($_POST["betreff"])) exit(); 

Ach ja und noch eins warum speicherst du erst die Superglobalen Variablen in lokale um sie dann nicht zu verwenden.
Merke niemals mit Benutzereingaben direkt arbeiten, besser erst validieren.

lg basti

ro.bo. 01.03.2009 13:54:07

AW: Verstecktes Formularfeld
 
Hallo Basti

Vielen Dank für die rasche Antwort. Es ist schon richtig, dass das Script bei leerem Formularfeld abbrechen soll. Gehe davon aus, dass Spam-Robots auch die per css versteckten Felder ausfüllen. Habe dein erstes Script mit einem ! abgeändert (if($_POST["Betreff"] != "") exit();) und funktioniert so bestens. Bin leider absoluter php-Laie, werde aber deinen Ratschlag mit den Superglobalen Variablen und so mal nachschlagen - sagt mir so leider nix. Nochmals Merci.

ro.bo.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00:57 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.