HappyNils: *HELP* Formular überprüfen

Hallo,
ich habe ein Formular, dass auf Sonderzeichen / Leere der Felder geprüft werden soll. Ich habe das Problem, dass ich das mit den Sonderzeichen hinkriege. Ich bin "Noob(Anfänger)" in PHP und freue mich auf verbesserungen in mein PHP formular ...

  
$formular = $_POST["form"];  
$name   = $_POST["name"];  
$vorname = $_POST["vorname"];  
$email  = $_POST["email"];  
$domain = $_POST["domain"];  
$firma  = $_POST["firma"];  
$strasse = $_POST["strasse"];  
$hausn  = $_POST["hausn"];  
$plz    = $_POST["plz"];  
$fax    = $_POST["fax"];  
$land   = $_POST["land"];  
$intervall = $_POST["intervall"];  
$regeln = $_POST["regeln"];  
$tel    = $_POST["tel"];  
$ort    = $_POST["ort"];  
$endung = $_POST["endung"];  
  
if ($name == "" || $vorname == "" || $email = "" || $domain = "" || $firma = "" || $strasse = "" || $hausn = "" || $plz = "" ||  
$fax = "" || $land = "" || $intervall = "" || $regeln = "" || $tel = "" || $ort = "" )  
{  
echo "<font color='#FF0000'><h3>Es ist ein Fehler aufgetreten!</h3></font>";  
if ( $name== "") { $name = "Name"; echo "<strong>Name fehlt!<br></strong>"; }  
if ( $vorname== "") { $vorname = "Vorname"; echo "<strong>Vorname fehlt!<br></strong>"; }  
if ( $email == "") { $email = "E-Mail"; echo "<strong>E-Mail fehlt!<br></strong>"; }  
if ( $domain == "") { $domain = "Domain"; echo "<strong>Domain fehlt!<br></strong>"; }  
if ( $firma == "") { $firma = "Firma"; echo "<strong>Firma fehlt!<br></strong>"; }  
if ( $strasse == "") { $strasse = "Strasse"; echo "<strong>Straße fehlt!<br></strong>"; }  
if ( $hausn == "") { $hausn = "Hausnummer";  echo "<strong> Hausnummer fehlt!<br></strong>";}  
if ( $plz == "") { $plz = "PLZ."; echo "<strong> PLZ. fehlt!<br></strong>"; }  
if ( $fax == "") { $fax = "Fax"; echo "<strong>Fax fehlt!<br></strong>"; }  
if ( $land == "") { $land = "Land";  echo "<strong>Land fehlt!<br></strong>";}  
if ( $intervall == "") { $intervall = "Intervall";  echo "<strong> Intervall fehlt!<br></strong>";}  
if ( !$regeln ) { $regeln = "AGB"; echo "<strong>Die AGBs müssen akzeptiert werden!<br></strong>"; }  
if ( $tel == "") { $tel = "Telefonnummer"; echo "<strong>Telefonnummer fehlt!<br></strong>"; }  
if ( $ort == "") { $ort = "Ort"; echo "<strong>Ort fehlt!<br></strong>"; }  
  
if(preg_match('([-A-z0-9]@.üöä)', $formular)) {  
echo "<font color='#FF0000'><strong>Es sind nur Zahlen, Bustaben sowie die Sonderzeichen @ und . erlaubt!</strong></font> ";  
}  
}  
  
  
?>
  1. Ich habe das Problem, dass ich das mit den Sonderzeichen hinkriege.

    Kein Problem, baue einen Syntaxfehler ein - und schon funktionierts nicht mehr.

    Ich bin "Noob(Anfänger)" in PHP und freue mich auf verbesserungen in mein PHP formular ...

    Erspar dir das unsinnige umkopieren von $_POST in andere Variablen.

    Nutze zur Prüfung auf leere werte empty() oder isset().

    AGBs ist Unsinn, es heisst AGB, die Mehrzahl von Bedingung wird nicht mit Plural-S gebildet.

    DRY: schreibe für die immerwiederkehrende Fehlerprüfung und Ausgabe der Fehlermeldung eine Funktion.

    Speichere die Fehlermeldungen in einem array um sie gezielt ausgeben zu können - einzeln an geeigneter Stelle (beim Formularfeld) oder gesammelt per Schleife z.B. über dem Forumlar.

    if(preg_match('([-A-z0-9]@.üöä)', $formular)) {
    echo "<font color='#FF0000'><strong>Es sind nur Zahlen, Bustaben sowie die Sonderzeichen @ und . erlaubt!</strong></font> ";

    Mit anderen Worten: Ç ist kein Buchstabe?

    1. Auch wenn ich dir danke das du immer wieder antwortest. Deine arroganten Antworten kannst du bei dir behalten. Danke.

      Ich bruache Hilfe und jemand der mir das zeigen kann und nicht wie ich das machen soll, dann kapier ich es sowieso nicht. Und mit dem komischen C, wie meinst du das? Wo steht dieses komische C? Hast du noch sonstige Probleme die du mir sagen willst?

      1. Auch wenn ich dir danke das du immer wieder antwortest.

        Die harte Wahrheit: Ich ignoriere die Namen von Gelegenheitspostern für gewöhnlich und antworte einfach - ob das du bist oder jemand anderer spielt keine Rolle.

        Deine arroganten Antworten kannst du bei dir behalten. Danke.

        WTF? Meine Antwort war keinesfalls hochmütig - sollte ich hier falsch liegen, bitte ich hierbei um eine dritte Meinung.

        Ich bruache Hilfe und jemand der mir das zeigen kann und nicht wie ich das machen soll, dann kapier ich es sowieso nicht.

        Dann bist du hier im falschen Forum - ganz einfach.

        Und mit dem komischen C, wie meinst du das? Wo steht dieses komische C?

        Es steht nicht da - du schreibst aber in deiner Fehlermeldung, dass nur Buchstaben erlaubt seien. Diese "komische C" ist ein ganz gewöhnlicher Buchstabe den du mit deiner Prüfung aber ausschließt (zumindest versuchst du das) - faktisch lässt du aber jedes beliebige Zeichen durch, da der . in einem PCRE eine Sonderbedeutung hat.

        Hast du noch sonstige Probleme die du mir sagen willst?

        Ich habe keine Probleme - du hast Probleme für die du Lösungen suchst, sonst würdest du hier keine Frage stellen. Deine Fragen sind allerdings so schlecht gestellt, dass man eigentlich nicht mal weiß was du willst.

        1. 'ǝɯɐu$ ıɥ

          Deine arroganten Antworten kannst du bei dir behalten. Danke.

          WTF? Meine Antwort war keinesfalls hochmütig - sollte ich hier falsch liegen, bitte ich hierbei um eine dritte Meinung.

          Deine Antwort war OK, du hast nur den Zucker vergessen *pust* ;-)

          ssnɹƃ
          ʍopɐɥs

          --
          Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
          1. Suit ?

            Was interessiert dich, welche Zeichen er erlaubt und welche nicht? Er übt vielleicht damit und will keine antworten von dir, wenn du ihm nicht weiterhelfen kannst. Wer ein Problem nicht mit veranschaulich Lösen kann, der braucht nicht antworten.

            Deine antworten waren jedenfalls nicht gut, bzw. werden nie gut sein, solange du deine Antworten nicht änderst.

            1. 'ǝɯɐu$ ıɥ

              Suit ?

              Ne, Shadow :-)

              Was interessiert dich, welche Zeichen er erlaubt und welche nicht? Er übt vielleicht damit und will keine antworten von dir, wenn du ihm nicht weiterhelfen kannst. Wer ein Problem nicht mit veranschaulich Lösen kann, der braucht nicht antworten.

              Deine antworten waren jedenfalls nicht gut, bzw. werden nie gut sein, solange du deine Antworten nicht änderst.

              Du hast sein Posting gelesen? Er fragte dezidiert nach jmd. der das Formular auf Fehler/Probleme überprüft, genau das hat Suit gemacht: Probleme aufgezeigt, dumm nur das der OP gleich die fertige Lösung haben will weil er die Hinweise -seiner Aussage nach- nicht versteht.

              ssnɹƃ
              ʍopɐɥs

              --
              Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
            2. Was interessiert dich, welche Zeichen er erlaubt und welche nicht?

              Mich interessiert es nicht, mir ist gelinde gesagt scheissegal wenn jemand anderer Mist produziert - ich habe darauf hingewiesen, wenn der Rat angenommen wird ist das gut, wenn nicht habe ich selbst keinen Nachteil dadurch.

              Er übt vielleicht damit und will keine antworten von dir, wenn du ihm nicht weiterhelfen kannst.

              Der OP hat nichtmal genau spezifiziert wo das Problem ist.

              Zitat:

              Ich habe das Problem, dass ich das mit den Sonderzeichen hinkriege.

              Ich interpretiere, obwohl die Satzstellung fürchterlich ist und das Verständnis nicht grade fördert: Der Reguläre Ausdruck funktioniert nicht richtig und lässt auch Eingaben durch, die ich eigentlich verbieten will.

              Wer ein Problem nicht mit veranschaulich Lösen kann, der braucht nicht antworten.

              Ich habe in erster Linie versucht, eine Spezifikation für die Anforderung zu finden - das ist in dieser Branche essentiell - einfach darauf losprogrammieren oder eine Lösung liefern ist nicht, wenn es keine Anforderungen gibt.

              Ein ä ist für mich kein Sonderzeichen sondern ein gewöhnlicher Buchstabe mit einem diakritischen Zeichen darüber. Wikipedia sagt "Sonderzeichen sind Satzzeichen, die nicht zu den „in Schriftzeichen festgehaltenen Lauten des Alphabets“ gehören."

              Deine antworten waren jedenfalls nicht gut,

              Meine Antwort war im Rahmen der äußerst bescheidenen Fragestellung äußerst ausführlich.

              bzw. werden nie gut sein, solange du deine Antworten nicht änderst.

              Soll ich für jemanden der Hilfe sucht etwa die Arbeit erledigen und ihm aus der Nase ziehen, was er eigentlich will? Das denken sollen jeder Fragesteller gefälligst selbst übernehmen - wenn ich hier eine Frage stelle, tue ich das idR. auch - wenn nicht, möchte ich auch nicht anders behandelt werden. Ich habe auch weiterhin vor, selbst zu denken - ich bevorzuge es sogar, wenn ein Antwortender lieber Gegenfragen stellt oder in Rätseln spricht, als mir einen Codeschnipsel hinzurotzen.

              1. Hallo,

                [...]

                volle Zustimmung in der Sache: Der OP bittet -etwas unbeholfen- um Hilfe, und du hast ihm Schwächen und Verbesserungsmöglichkeiten aufgezeigt. Was er *wirklich* wissen wollte, konnte ich aus seinem Beitrag auch nicht genau herauslesen.

                Den Ton deiner Antwort fand ich okay. Ohne Samthandschuhe, aber völlig in Ordnung.

                Ein ä ist für mich kein Sonderzeichen sondern ein gewöhnlicher Buchstabe mit einem diakritischen Zeichen darüber.

                Der Begriff "Sonderzeichen" wird sehr unterschiedlich verstanden.

                Wikipedia sagt "Sonderzeichen sind Satzzeichen, die nicht zu den „in Schriftzeichen festgehaltenen Lauten des Alphabets“ gehören."

                Das ist eine für mich eigenartige Definition. Satzzeichen (ich verstehe das als Interpunktionszeichen) würde ich nämlich *nicht* als Sonderzeichen einstufen.
                Sonderzeichen sind für mich Zeichen, die in einem bestimmten Kontext üblicherweise nicht vorkommen. Damit sind ä oder ß im Französischen ganz bestimmt Sonderzeichen, im Deutschen nicht. Im Deutschen sind dagegen è oder ¿ Sonderzeichen, in gewöhnlicher Umgangssprache allgemein Zeichen wie ∞ oder ∫. In C sind dagegen so ziemlich alle Zeichen außerhalb des ASCII-Bereichs Sonderzeichen. Es kommt also IMHO immer auf den Kontext an.

                Deine antworten waren jedenfalls nicht gut,
                Meine Antwort war im Rahmen der äußerst bescheidenen Fragestellung äußerst ausführlich.

                Ausführlich hätte ich nicht gesagt, aber in alle vorstellbaren Richtungen gut angetastet.

                Ciao,
                 Martin

                --
                Die späteren Ehen sind oft glücklicher als die erste, weil das natürliche Ende bereits absehbar ist.
                  (George Bernhard Shaw)
        2. Mahlzeit suit,

          Deine arroganten Antworten kannst du bei dir behalten. Danke.

          WTF? Meine Antwort war keinesfalls hochmütig - sollte ich hier falsch liegen, bitte ich hierbei um eine dritte Meinung.

          Du liegst nicht falsch.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Mahlzeit Happynils,

        Deine arroganten Antworten kannst du bei dir behalten. Danke.

        Welche Laus ist Dir denn über die Leber gelaufen? suits Antworten waren vollkommen korrekt und entsprachen Deinem Anliegen.

        Es gilt Zitat 224.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      3. Hi,

        Ich bruache Hilfe und jemand der mir das zeigen kann und nicht wie ich das machen soll, dann kapier ich es sowieso nicht.

        Dann lass' es bleiben mit dem Programmieren.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hallo,

    ich habe ein Formular, dass auf Sonderzeichen / Leere der Felder geprüft werden soll.

      
    
    > <?php  
    > $domain = $_POST["domain"];  
      
    # muss man ein Domain haben?  
      
    
    > $fax    = $_POST["fax"];  
      
    # muss man ein Fax haben?  
    
    

    Wie suit bereits anmerkte, ist diese Umkopieren überflüssig, ja sogar gefährlich, weil Du die Herkunft der Daten verschleierst. Es ist eine gute Idee, sich dies abzugewöhnen.

    » if ($name == "" || $vorname == "" || $email = "" || $domain = "" || $firma = "" || $strasse = "" || $hausn = "" || $plz = "" ||  
    
    > $fax = "" || $land = "" || $intervall = "" || $regeln = "" || $tel = "" || $ort = "" )  
    > {  
    > echo "<font color='#FF0000'><h3>Es ist ein Fehler aufgetreten!</h3></font>";  
    > if ( $name== "") { $name = "Name"; echo "<strong>Name fehlt!<br></strong>"; }  
    > if ( $vorname== "") { $vorname = "Vorname"; echo "<strong>Vorname fehlt!<br></strong>"; }  
    > if ( $email == "") { $email = "E-Mail"; echo "<strong>E-Mail fehlt!<br></strong>"; }
    
    

    Verbesserungsvorschlag: Stecke die Schlüssel der $_POST-Arrayelemente, die Du prüfen willst, in ein assoziatives Array, d.h. ein Array von Schlüssel-Wert-Paaren. Verwende als Wert die Angaben, die in Deiner Fehlermeldung auftreten sollen. Hänge für jedes Arrayelement, das nicht den gewünschten Inhalt hat, eine entsprechenden Hinweis an eine Variable, die den Fehlertext enthält. Nutze dazu eine Schleife über das Array.

    Ich habe das Problem, dass ich das mit den Sonderzeichen hinkriege. Ich bin "Noob(Anfänger)"

    Das war jeder mal, selbst Rasmus Lerdorf.

    in PHP und freue mich auf verbesserungen in mein PHP formular ...

    Das sieht leider nicht so aus.

      
    
    > if(preg_match('([-A-z0-9]@.üöä)', $formular)) {  
    >     echo "<font color='#FF0000'><strong>Es sind nur Zahlen, Bustaben sowie die Sonderzeichen @ und . erlaubt!</strong></font> ";  
    > }
    
    

    Erstens rate ich Dir davon ab, etwas Verstorbenes wie das font-Element aus seiner wohlverdienten Grabesruhe herauszureißen. Zweitens hat der Punkt "." in regulären Ausdrücken eine Sonderbedeutung, wie Dir suit sagte. Du musst deswegen <http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung@title=den Punkt maskieren>.

    Drittens wäre es eine gute Idee, Dein Problem etwas genauer zu beschreiben:

    a) Ich verwende folgenden Code (aufs notwendige Minimum gekürzt),
       hier vermutlich die Zeilen mit dem regulären Ausdruck,
    b) habe folgende Eingabedaten {verwendete Eingabedaten},
    c) erhalte folgende Ausgabedaten: {erhaltene Ausgabedaten},
    d) erwarte jedoch diese Daten: {erwartete Ausgabedaten}

    Anmerkung: mit den geschweiften Klammern möchte ich Platzhalter kennzeichnen.

    Freundliche Grüße

    Vinzenz