php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.04.2008, 08:30  
Neuer Benutzer
 
Registriert seit: 22.04.2008
Beiträge: 18
hansstalder befindet sich auf einem aufstrebenden Ast
Standard Formular soll nicht leer verschickt werden

Hallo, ein Formular wird immer wieder leer verschickt und kommt dann so an die angegebene Mailadresse. Wie kann ich das Skript verändern, damit keine leeren Formulare mehr verschickt werden ? Danke für die Hilfe! Hans


<?php

$vorname=$HTTP_POST_VARS['vorname'];
$name=$HTTP_POST_VARS['name'];
$adresse=$HTTP_POST_VARS['adresse'];
$plz=$HTTP_POST_VARS['plz'];
$ort=$HTTP_POST_VARS['ort'];
$tel=$HTTP_POST_VARS['tel'];
$email=$HTTP_POST_VARS['email'];
$papier=$HTTP_POST_VARS['papier'];


$mailtext="Besten Dank für Ihre Bestellung!";
$mailtext.="\n";
$mailtext.="Gerne senden wir Ihnen die gewünschten Unterlagen";
$mailtext.="\n";
$mailtext.="Sekretariat DOMUS ANTIQUA HELVETICA";

$daten.="Vorname: ";
$daten.=$vorname;
$daten.="\n";
$daten.="Name: ";
$daten.=$name;
$daten.="\n";
$daten.="Adresse: ";
$daten.=$adresse;
$daten.="\n";
$daten.="PLZ: ";
$daten.=$plz;
$daten.="\n";
$daten.="Ort: ";
$daten.=$ort;
$daten.="\n";
$daten.="E-Mail: ";
$daten.=$email;
$daten.="\n";
$daten.="Bestellung: ";
$daten.=$papier;
$daten.="\n";


// Mail versenden

mail($email,"Re: Bestellung DOMUS",
$mailtext,"From@y.ch");

mail("sekretariat@domusantiqua.ch","Re: Bestellung",
$daten,"From: x@y.ch");

mail("webmaster@domusantiqua.ch","Re: Bestellung",
$daten,"From: x@y.ch");

print("Danke für die Bestellung. Sie wird automatisch per Mail bestätigt!");
print ("<a href='bestellen.html'> Zurück zur Bestellung</a>");
?>

Geändert von hansstalder (22.04.2008 um 09:08 Uhr).
hansstalder ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.04.2008, 08:50  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

Also erstmal eines vorne weg: mach mal aus allen $HTTP_POST_VARS $_POST

Dann zur Vorgehensweise:
Du solltest
1. Formulardaten nur verarbeiten, wenn $_SERVER['REQUEST_METHOD'] == 'POST'
2. checke, ob bestimmte Formulareingaben vorhanden sind, evt. mit Formatprüfung. nur wenn kein Fehler vorliegt verarbeiten, ansonsten einfach wieder das Formular auf den screen werfen.
Du kannst den check auch schon im client mit JavaScript machen, das sollte aber eine serverseitige Prüfung nicht ersetzen.
4. nach der erfolgreichen VErarbeitung dann die Erfolgsmeldung ausgeben
HPR1974 ist offline  
Alt 22.04.2008, 08:55  
Neuer Benutzer
 
Registriert seit: 22.04.2008
Beiträge: 18
hansstalder befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Tipp. Weil ich ein blutiger Anfänger bin, muss ich Dich noch fragen, wie ich eine Formatprüfung mache...

Besten Dank!
hansstalder ist offline  
Alt 22.04.2008, 08:59  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

Na wenn Du zum Beispiel als name eine kette aus Buchstaben erwartest in $_POST['name'] dann checkst Du eben, ob der name nur Buchstaben enthält, zB per regular expression...
HPR1974 ist offline  
Alt 22.04.2008, 09:02  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Benutze bitte für den Code PHP-Tags und rücke ihn entsprechend ein. Beschränke dich auf die wesentlichen Teile, das ganze CSS-Zeugs und der (falsche) <head>-Teil interessieren in diesem Fall niemanden. Und Operatoren brauchen Luft, sprich Leerstellen drum herum, dann sieht man sie besser.
Das Vorgehen von HPR1974 ist zwar richtig, kann aber nicht die Ursache des leeren Formulars sein. Entweder wurde das Formular nicht ausgefüllt, oder deine Felder heissen anders. Lass dir am Anfang deine Daten mal mit
PHP-Code:
var_dump($_POST); 
ausgeben.
__________________
Gruss
L
lazydog ist offline  
Alt 22.04.2008, 09:03  
Neuer Benutzer
 
Registriert seit: 22.04.2008
Beiträge: 18
hansstalder befindet sich auf einem aufstrebenden Ast
Standard

OK, hast Du mir bitte ein Beispiel.... Danke!
hansstalder ist offline  
Alt 22.04.2008, 09:06  
Neuer Benutzer
 
Registriert seit: 22.04.2008
Beiträge: 18
hansstalder befindet sich auf einem aufstrebenden Ast
Standard

Danke lazydog, die Felder sind schon richtig. Ich erhalte ja auch ausgefüllte Formulare. Wo muss ich den von Dir angegebenen Code einbauen ?
Danke und Gruss h
hansstalder ist offline  
Alt 22.04.2008, 09:15  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

@lazydog Also mal am Rande, wenn ich die folgenden Zeilen sehe, dann wird das Formular bei Aufruf der Seite immer leer verschickt, da keine Prüfung erscheint ob POST request oder GET oder sonstwas.

// Mail versenden
mail($email,"Re: Bestellung DOMUS",
$mailtext,"From@y.ch");
mail("sekretariat@domusantiqua.ch","Re: Bestellung",
$daten,"From: x@y.ch");
mail("webmaster@domusantiqua.ch","Re: Bestellung",
$daten,"From: x@y.ch");


Und wenn ich die übergebenen Daten nicht prüfe, ob gesetzt oder korrekt wird auch immer ein Formular verschickt, mit oder ohne Daten.

Von das Formular wird auch leer verschickt, darauf zu schliessen dass die Variablennamen nicht mit den Formularfeldbezeichnungen übereinstimmt ist natürlich schon viel weiter gedacht als den gegebenen Code zu analysieren...
HPR1974 ist offline  
Alt 22.04.2008, 09:33  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von hansstalder Beitrag anzeigen
Wo muss ich den von Dir angegebenen Code einbauen ?
Einfach am Anfang deines Scripts. Was ich eben gesehen habe, falls es sich um dieses Formular handelt, [i]$_POST['papier'] wird immer leer sein, da die Optionen keine value-Attribute haben.
Besser wäre es vielleicht auch, die Verarbeitung des Formulars im gleichen Script zu machen, dann kann im Fehlerfall das Formular direkt wieder mit den vorhandenen Eingaben angezeigt werden.

@HPR1974
Das Formular befindet sich ja nicht in diesem Script, sondern dieses wird (per post) aus dem Formular aufgerufen. Ich habe eben nicht nur den hier gegebenen Code amgeschaut, sondern bin - vermutlich - auch auf das auslösende Formular gestossen.
__________________
Gruss
L
lazydog ist offline  
Alt 22.04.2008, 14:58  
Neuer Benutzer
 
Registriert seit: 22.04.2008
Beiträge: 18
hansstalder befindet sich auf einem aufstrebenden Ast
Standard

Ja, es ist dieses Formular. Kann ich den php-Code einfach an den Schluss der html-Seite stellen ?

Danke und Gruss Hans
hansstalder ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Formular Pflichtfelder für Frontpage Formular erstellen Caruso JavaScript, Ajax und mehr 5 21.06.2008 09:17
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
formular includen samspa5 PHP Tipps 2006 13 18.03.2006 11:37
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
Formular --> Ergebnis auf anderer Seite anzeigen Jojo1 PHP Tipps 2005 58 01.02.2005 17:13
Im Formular user abfragen? Datenbanken 3 06.01.2005 10:51
[Erledigt] PHP Formular - Daten an nächsten Schritt weiter geben - Wie? PHP Tipps 2005 14 02.01.2005 20:05
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Formulareingabe prüfen auf Zahl, bzw. Feld leer ist PHP Tipps 2004-2 2 02.12.2004 09:39
Daten aus Formular in Datenbank - Zeilen bleiben leer PHP Tipps 2004 2 06.09.2004 16:06
Meine DB enthält immer 2 Zeilen statt nur einer?? 1 is leer. PHP Tipps 2004 22 30.08.2004 18:16
Brauche PHP Formular Beitragsarchiv 9 16.08.2004 16:23
[Erledigt] Daten in neuem Formular anzeigen PHP Tipps 2004 6 21.07.2004 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html formular nicht leer, html form nicht leer, html formular leer, php formular nicht leer, php formular leer nicht abschicken, formular leer nicht absenden php, leere formularfelder nicht senden, formular nicht leer html, formular nicht leer php, php formular nicht leer senden, html form felder nicht leer, formularfeld nicht leer php, html formularfeld nicht leer, daten nicht verschicken wenn felder leer html, wenn formular nicht ausgefüllt soll php nichts machen, php formulare leer, formulardaten nicht leer, php leere formularfelder nicht, php formular: nicht leer lassen, php formular nur absenden wenn der inhalt nicht lehr ist

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum