php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.01.2012, 13:09  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard Formular in php

Hallo Allerseits!

Seit kurzem hab ich angefangen mit PHP.
Mein Lern Material besteht aus 1 x Buch und 6 Gute DVD ( dort erklärt man sehr gut was MYSQL etc sind )

DVD inhalte:
  • 3 x PHP Lernern ( 23 STD lern material )
  • 1 x HTML5 & CSS Lernen (ü. 12 STD lern material )
  • 1 x Javascript Einführung ( 12.50 STD lern material
  • 1 x CSS 3 Lernen ( ü. 6 STD lern material

diese Informationen soll euch dienen, mit was ich Lerne.
bisher hab nur das PHP angeschaut ( HTML kenntnise sind vorhanden )

So nun komm ich zu meiner eigentliche Frage zum Formular.

Beispiel_formular_fuers_original.php ( von mir geschrieben. Gelernt durch / DVD)
PHP-Code:

<?php
require_once('functionen.php');

        
$email $_POST['mail'];



        if (isset ( 
$_POST['anrede']) == "" or $_POST['nachname'] == "" or $_POST['vorname'] == "" or $_POST['str'] == "" or $_POST['plz'] == "" or $_POST['plz02'] == "" or $_POST['mail'] == "" or  $_POST['nachricht'] == ""  )
    {



if  (isset  ( 
$_POST['gesendet']) == "ja" )


            {
                echo       
'<p><span>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</span></p>';
            }


if   ( 
$_POST['mail'] <> "")

        {
            if   ( 
is_mail ($email) == false )

            {
                echo 
"<p><span>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</span></p>";
                
$_POST['mail'] = "";
            }
        }



        echo            
'<br /><br /><br />';



                
//Formular Felder Beginn
                        // Formular Beginn

        
echo    '<form method="POST" action="Beispiel-formular-fuers-original.php">';

        echo      
'<h1>Kontakt:</h1><br />';
        echo      
'Felder mit * m&uuml;ssen angegeben werden.<br />';

        echo       
'<br />';


        echo 
'<label>Anrede: *</label>';
        echo 
'<select name="anrede" id="anrede">
              <option value="Herr">Herr     </option>
              <option value="Frau">Frau     </option></select><br />'
;

        echo 
'<br />';

        echo 
'<label>Nachname: *</label>';
        echo 
'<input type="text" name="nachname" value="" /><br />';

        echo 
'<label>Vorname: *</label>';
        echo 
'<input type="text" name="vorname" value=""/><br />';

        echo 
'<label>Firma:</label>';
        echo 
'<input type="text" name="firma" value=""/><br />';

        echo 
'<label>Stra&szlig;e / Nr: *</label>';
        echo 
'<input type="text" name="str" value=""/><br />';

        echo 
'<label>PLZ / Ort: *</label>';
        echo 
'<input class="small" type="text" name="plz" value=""/>
              <input  class="medium"type="text" name="plz02" value=""/><br />'
;

        echo 
'<label>Telefon:</label>';
        echo 
'<input class="small" type="text" name="tel" value="+41"/>
              <input  class="medium"type="text" name="tel02" value=""/><br />'
;

        echo 
'<label>E-Mail: *</label>';
        echo 
'<input type="text" name="mail" value=""/><br />';

        echo 
'<label>Nachricht: *</label>';
        echo 
'<textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea>';

        echo 
'<br />';
        echo 
'<br />';

        echo 
'<input type="hidden" name="gesendet" value="ja"/>';
        echo 
'<input class="submitbutton" type="submit" value="Absenden"/>';

echo 
'</form>';
    
//Formular Felder END

                // Formular END
        
}
            else
         {
                  echo  
'<h1>Vielen dank...</h1>';
                  echo  
'<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';


         }

                            
$emfaenger "@gmx.ch";
                            
$betreff "Kontakt Formular von beispiel_formular_fuers_original." ;
                            
$inhalvonmail "Anfrage von Website: " $_POST['nachricht'];
                            
$inhalvonmail .= "  |  Firma: " .$_POST['firma']. "  |  Anrede: " $_POST['anrede']. "  |  Nachname: " $_POST['nachname']. "  |  Vorname:"$_POST['vorname']."  |  PLZ: "$_POST['plz']."  |  PLZ: "$_POST['plz02']."  |  Strasse: ".$_POST['str']."  |  TEL: ".$_POST['tel']."  |  TEL: ".$_POST['tel02']."  |  E-Mail: " .$_POST['mail'];


                            
mail ($emfaenger$betreff$inhalvonmail,"from: email\r\n");





?>
REGEX Codierung ( für E-Mail prüfen )
PHP-Code:
  <?php
     
function is_mail ($email)
    {
        
$searchmuster "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/";
        
$ergebnis preg_match ($searchmuster$email);
        return (
$ergebnis 0);
    }
Nur hab ich ein problem und zwar:

was mir noch nicht so klar ist wegen meine Fehlermeldungen

PHP-Code:
    echo "<p><h2>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</h2></p>"

Wenn ich das Formular ausfülle mit einem Buchstabe z.b E ( Jedes feld )
dann kann ich bei Absenden klicken und es geht weiter. Mit dem text ( Vielen dank..... )

mir wäre lieber wenn:

Nachname (ausgefüllt)
Vorname ( ausgefüllt)
E-Mail (nicht korrekt = hallo@----welt.mobi ) ( Dass dann der Regex aktiviert wird ) & dann die Meldung erscheint Email ist ungültig


ich hoffe ihr versteht was ich damit sagen will.

Grüsse

Geändert von johalus (25.01.2012 um 13:27 Uhr).
johalus ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.01.2012, 13:22  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von johalus Beitrag anzeigen
ich hoffe ihr versteht was ich damit sagen will.
Ehrlich gesagt: nicht wirklich.


Ich sehe nur, dass du noch so einige Fehler in deinem Script hast. Zum Beispiel die folgenden:

PHP-Code:
if (isset ( $_POST['anrede']) == "" ... 
Was nun? isset() oder == ""?

PHP-Code:
$searchmuster "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/"
Was genau soll den A-z machen? Ich kenne a-z, A-Z und a-zA-Z
[a-zA-Z]{2,4} ist nicht mehr aktuell. Eine Adresse mit .berlin würde dann zum Beispiel nicht mehr erlaubt sein.


Nebenbei: benutze doch für PHP das nächste Mal bitte die PHP-Tags ([ PHP ]...[ /PHP ] natürlich ohne Leerzeichen).


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 25.01.2012, 13:31  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

Oh das mit dem Isset und == ist mir nicht aufgefallen das ich dies nicht so machen darf.

ich wusste nur das Isset eine ( prüfungs funktion ) hat.

und beim Regex..
ja das wusste ich auch nicht das ich eine ältere version benutze
zwar hab ich im internet schon durchforstet ( gegooglet ) doch da kamen lauter Regex zeug raus, was ich kaum verstandt oder nicht wusste was die dort erklärten.

edit: vielleicht hilft es wenn ich es euch via Fotos erkläre? weil via text zu erklären ist sehr schwierig.

Foto

Geändert von johalus (25.01.2012 um 13:37 Uhr).
johalus ist offline   Mit Zitat antworten
Alt 25.01.2012, 13:45  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Ach, jetzt versteh ich, was du willst.

Du überprüfst einfach an der falschen Stelle, ob die E-Mail-Adresse valide ist. Entweder, du nimmst es direkt in deine erste (zugegeben recht lange) if()-Abfrage auf, oder du musst, nachdem du die E-Mail-Validierung durchgeführt hast, noch einmal überprüfen, ob alle Angaben richtig sind.
Eine Möglichkeit hierfür wäre es, eine Variable zu definieren, die nur angibt, ob alle benötigten Felder valide sind und die auf false zu setzen, falls dem nicht so ist. Kurzer Auszu dazu:

PHP-Code:
if(isset($_POST["gesendet"]))
{
    
$isValid true;
    
    if(!isset(
$_POST["anrede"]) || $_POST["anrede"] == "")
        
$isValid false;
    if(!isset(
$_POST["nachname"]) || $_POST["nachname"] == "")
        
$isValid false;
    
// ...
    
if(!isset($_POST["mail"]) || $_POST["mail"] == "" || !is_mail($_POST["mail"]))
        
$isValid false;
    
    if(
$isValid)
    {
        
// Alle Felder ausgefüllt -> Mail versenden
    
} else
    {
        
// Fehlendes Feld -> Formular erneut ausgeben
    
}


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 25.01.2012, 13:50  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

Du sagst ich hätte eine recht lange if abfrage. gäbe es den eine alternative für eine kürzere ?

EDIT: verzeih mir wenn ich ein wenig langsam bin und es noch nicht so recht versteh.
johalus ist offline   Mit Zitat antworten
Alt 25.01.2012, 13:51  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Siehe meinen letzten Post. Du könntest sie eben in die einzelnen Bestandteile zerlegen, um auf die einzelnen Felder zu prüfen statt auf alle gleichzeitig.


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 25.01.2012, 14:32  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

So nun gut ich ahb es jetzt nachgebaut.

(wurde ersetzt durch)
PHP-Code:
        if (isset ( $_POST['anrede']) == "" or $_POST['nachname'] == "" or $_POST['vorname'] == "" or $_POST['str'] == "" or $_POST['plz'] == "" or $_POST['plz02'] == "" or $_POST['mail'] == "" or  $_POST['nachricht'] == ""  
(das hier)
PHP-Code:
if  (isset  ( $_POST['gesendet']) == "ja" )


    {

    
$isValid true;

    if(!isset(
$_POST['anrede']) || $_POST['anrede'] == "")
        
$isValid false;
    if(!isset(
$_POST['nachname']) || $_POST['nachname'] == "")
        
$isValid false;
    if(!isset(
$_POST['vorname']) || $_POST['vorname'] == "")
        
$isValid false;
    if(!isset(
$_POST['str']) || $_POST['str'] == "")
        
$isValid false;
    if(!isset(
$_POST['plz']) || $_POST['plz'] == "")
        
$isValid false;
    if(!isset(
$_POST['plz02']) || $_POST['plz02'] == "")
        
$isValid false;
    if(!isset(
$_POST['nachricht']) || $_POST['nachricht'] == "")
        
$isValid false;

    if(!isset(
$_POST['mail']) || $_POST['mail'] == "" || !is_mail($_POST['mail']))
        
$isValid false;


    if(
$isValid
ist das korrekt was ich da mache?
johalus ist offline   Mit Zitat antworten
Alt 25.01.2012, 14:36  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Ja, das überprüft dir nun eben, ob die ganzen Felder einen Wert enthalten und bei der E-Mail-Adresse zusätzlich, ob diese valide ist.
Musst du also nur noch die Ausgabe hinzufügen und dann sollte es funktionieren.


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 25.01.2012, 14:54  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Die Abfrage auf vorhanden und leer würde ich über eine "WhiteList" kapseln
PHP-Code:
$expectedKeys = array( 'anrede''nachname''vorname''str''plz''plz02''nachricht''email' );

$isValide false;

foreach( 
$expectedKeys as $keyName ) {
    if( !isset(
$_POST[$keyName]) || empty(trim($_POST[$keyName])) ) {
        
$isValide false;
        break;
    }

Ob die E-Mail-Adresse gültig ist kannst Du besser über filter_var() mit dem optionalen Parameter FILTER_VALIDATE_EMAIL prüfen.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 25.01.2012, 15:02  
Benutzer
 
Registriert seit: 25.01.2012
Beiträge: 32
PHP-Kenntnisse:
Anfänger
johalus befindet sich auf einem aufstrebenden Ast
Standard

jä... hm.. da hab ich aber was anders gelernt und zwar das filter_var() nicht das beste sei, denn laut meinen unterlagen wäre es immer noch am besten wenn man mit Regex arbeiten würde. (ist sicherer als mit filter_var)

obs wirklich so ist, kann ich nicht bestätigen ( zu wenig erfahrung ) um zu wissen was jetzt besser ist
johalus ist offline   Mit Zitat antworten
Antwort


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
Formular liest daten aus leitet aber nicht auf nächste Seite gini0_8 PHP Einsteiger 22 21.01.2012 00:20
[Erledigt] &quot;Form action&quot; soll zweites Formular abschicken Farlif PHP Tipps 2010 7 19.08.2010 11:27
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Formular im Formular mistermint JavaScript, Ajax und mehr 11 21.06.2010 22:29
Formular 1 wurde verändert, Formular 2 Submit muss dies erkennen smilla JavaScript, Ajax und mehr 2 28.03.2010 21:26
Mehrseitiges verzweigtes Formular RobbyNaish PHP Tipps 2009 1 19.12.2009 01:51
[Erledigt] Aus Formular verschiedene andere Formulare aufrufen melz PHP Tipps 2009 11 11.09.2009 12:27
PDF Formular ausfüllen mit PHP Formular oomworld PHP Tipps 2009 1 26.03.2009 19:09
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
[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
Im Formular user abfragen? Datenbanken 3 06.01.2005 10:51
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php5 formularfeld $_post 2012

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 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