Werte prüfen...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Werte prüfen...

    Hallo,

    über eine Suchmaske werden folgende Werte per GET übergeben:

    s_************ darf nur "m" oder "w" sein

    s_year darf nur aus zahlen zwischen 18 und 99 enthalten

    s_plz darf entweder nur aus Zahlen zwischen 0 und 9 oder "Alle" (falls ihr n besseren Wert habt ist n Tipp gerne willkommen) enthalten

    s_sort darf entweder "p_plz" oder "p_age" enthalten

    Nun meine Frage:
    Wie kann ich das GET-Array nach den obigen regeln performancegünstig kontrollieren? Die Variablen gehen direkt in eine MySQLquery.

  • #2
    überprüf einfach mit
    PHP-Code:
    if(ereg('wie solls sein',$die_variable)
    {
    ...

    z.B für die PLZ

    und zu dem ereg schau mal ereg
    PHP-Code:
    if(ereg('(0-9){5}',$s_plz
    Zuletzt geändert von Dummi; 17.07.2003, 22:10.

    Kommentar


    • #3
      PHP-Code:
      if (!in_array(strtolower($************),array('m','w')))
        die(
      'was bist du denn?'); 
      $s_sort analog zu $_************

      für die beiden anderen dinge: entweder regex oder du prüfst mit

      $_year>17 and $_year<100

      $plz=-1 or ($_plz>9999 and $plz<100000)

      -1 wäre "Alle"
      oder alles mit regulären ausdrücken
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Das wäre doch auch so richtig, oder?

        PHP-Code:
        if (!in_array($_GET['s_************']),array('m','w'))
          die(
        'was bist du denn?'); 
        Wenn da keiner dran rumfummelt ist der Wert ja eh kleinbuchstaben, desweiteren arbeite ich gerne mit dem $_GET Array selbst, is doch aber ok so, oder?


        Kann ich hiermit definitiv prüfen, ob $_GET['s_plz'] nur aus Zahlen zwischen -1, 0-9 besteht??

        PHP-Code:
        if ($_GET['s_plz'] == -OR ($_GET['s_plz'] >= AND   $_GET['s_plz'] <= 9)){
              echo 
        "Werte ok";
              } 

        Kommentar


        • #5
          PHP-Code:
          if ($_GET['s_plz'] == -OR ($_GET['s_plz'] >= AND   $_GET['s_plz'] <= 9)){
                echo 
          "Werte ok";
                } 
          das würde heisen, das deine zahl entweder -1 oder zwischen 0 und 9 liegt:
          das heist es währen nur als eingaben:
          -1;0;1;2;3;4;5;6;7;8;9 gültig! du hast ja aber 5 stellige zahlen nimm einfach das was dummi gepostet hat:

          PHP-Code:
          if(ereg('(0-9){5}',$s_plz
          das is true wenn es nur aus zahlen besteht und genau 5 stellen hat (was plz so ansich haben )
          Man lernt nie aus...

          ...und wenn man's doch tut braucht man sich auch nicht schämen!

          Kommentar


          • #6
            $_GET['sp_plz']='1verarscht';

            wenn du das so machen willst, musst du noch is_int($_GET['s_plz']) abfragen

            zu deinem "wenn keiner dran rumfummelt": wenn keiner dran rumfumelt, warum musst du dann extra prüfen?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              warum musst du dann extra prüfen?
              OffTopic:
              damit das script länger wird ...



              @westberlin
              gehe niemals davon aus, dass der user brav ist....
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Meine plz übergabe besteht nur aus einer Zahl, das reicht für meine Zwecke...

                zu deinem "wenn keiner dran rumfummelt": wenn keiner dran rumfumelt, warum musst du dann extra prüfen?
                Die Variablen sind ja in der Adresszeile sichtbar, von daher kann es doch angehen, dass da jmd rumprobiert, oder?

                das würde heisen, das deine zahl entweder -1 oder zwischen 0 und 9 liegt:
                das heist es währen nur als eingaben:
                -1;0;1;2;3;4;5;6;7;8;9 gültig! du hast ja aber 5 stellige zahlen nimm einfach das was dummi gepostet hat:
                Muss ich dann trotzdem noch mit is_int($_GET['s_plz']) prüfen, obs Zahlen sind? Ich dachte das hat sich dann mit dieser Prüfung erledigt:

                PHP-Code:
                if ($_GET['s_plz'] == -OR ($_GET['s_plz'] >= AND   $_GET['s_plz'] <= 9)){
                      echo 
                "Werte ok";
                      } 
                Habs jetzt nicht ganz verstanden...

                Kommentar


                • #9
                  Original geschrieben von mrhappiness
                  $_GET['sp_plz']='1verarscht';
                  [ ] du hast verstanden, was ich dir damit sagen will

                  btw: formular sollte man (auch rein optisch und wegen dem "etwas mehr" an sicherheit) per POST übertragen

                  PHP-Code:
                  if (!preg_match('%^-1$|^[0-9]$%',$_GET['plz']))
                      die(
                  'nanana'); 
                  macht das in einer anweisung
                  Zuletzt geändert von mrhappiness; 17.07.2003, 23:19.
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    benötige nachmals hilfe bei Werte überprüfung...

                    Hallo,

                    ich habe ein Textfeld für private Nachrichten und möchte das auf Richtigkeit überprüfen. Also Ob nur Zahlen, Buchstaben, Umlaute, "." OR "," OR "!" OR "?" drin vorkommen....

                    Bzw. wie kann ich es machen, das alle Zeichen drin vorkommen können, jedoch nicht meine Datenbank "angegriffen" werden kann?

                    Kommentar


                    • #11
                      wenn du nochmals hilfe dazu brauchst... warum machst du einen neuen thread auf?

                      *ZUSAMMENFÜHR*
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Re: benötige nachmals hilfe bei Werte überprüfung...

                        Original geschrieben von westberlin
                        Bzw. wie kann ich es machen, das alle Zeichen drin vorkommen können, jedoch nicht meine Datenbank "angegriffen" werden kann?
                        in dem du "böse" zeichen (anführungszeichen) maskierst; entweder per addslashes() oder per mysql_escape_string().
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Danke @wahsaga...

                          Kann mir nochmal jmd bei der Prüfung übergebener ip's und zonen helfen?
                          Ich komm mit eregi und ereg_replace übernicht klar...

                          einmal muss ich eine ip überpüfen - xxx.xxx.xxx.xxx

                          und einmal eine zone - name.tld
                          Das müsste ja irgendwie sowas wie *.{2-3} sein, der Ausdruck??

                          Zuletzt geändert von westberlin; 18.07.2003, 16:53.

                          Kommentar


                          • #14
                            Original geschrieben von westberlin
                            und einmal eine zone - name.tld
                            Das müsste ja irgendwie sowas wie *.{2-3} sein, der Ausdruck??
                            eher {2,6} - .museum ist afaik die längste derzeit verwendete TLD.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar

                            Lädt...
                            X