stefan scheurer: filename mit regexp kontrollieren...kriegs nicht hin...

hallo allerseits

nachdem per "browse"-feld in einem HTML-formular zum upload ausgewählt wurde, möchte ich es noch rasch kontrollieren, bevor es wirklich raufgeladen wird.

eine dieser kontrollen ist die bezeichnung des files, welche a-zA-Z_0-9 plus - und _ und . behinhalten soll.

ich habe im SELFHTML einen ansatz gefunden, ihn aber umgeschrieben und sehe nun den fehler nicht ...

if({$file} !~ /[1]+?.([a-zA-Z]{3,4})$/)

dann sollte das script abbrechen (mit entsprechender meldung), wenn also das file sonderzeichen hat oder die extension 3 zeichen unterschreitet bzw. 4 überschreitet....

hat jemand eine idee was ich falsch mache...ist sicher ne bagatelle, ich sehs kommen...:)

ich danke 1000mal...

scheuri


  1. \w.- ↩︎

  1. Hi,

    eine dieser kontrollen ist die bezeichnung des files, welche a-zA-Z_0-9 plus - und _ und . behinhalten soll.

    ich habe im SELFHTML einen ansatz gefunden, ihn aber umgeschrieben und sehe nun den fehler nicht ...

    if({$file} !~ /[1]+?.([a-zA-Z]{3,4})$/)

    dann sollte das script abbrechen (mit entsprechender meldung), wenn also das file sonderzeichen hat oder die extension 3 zeichen unterschreitet bzw. 4 überschreitet....

    Warum abbrechen?

    ich wuerde es so machen, dass ich alle ungueltigen Chars loesche und das nehme, was uebrigbleibt als Dateiname.
    (Es sei denn, es gibt kein Zeichen mehr uebrig, oder es ist gleich "." oder "..", oder ".,").

    Also etwa so:

    $file =~ s/[^a-z0-9-_.]+//gi;

    if (($file eq ".") || ($file eq "..") || ($file eq ".,")) {
      $file = "";
    }

    if ($file) {
      # Tu irgendwas

    } else {
      # Fehlerfall

    }

    Ciao,
     Wolfgang


    1. \w.- ↩︎

    1. hi wolfgang

      danke für den input...
      das abbrechen muss sein...ich möchte auf jeden fall verhindern, dass der user was tun kann, was nicht optimal ist...(arbeite noch mit einer DB im hintergrund).

      an sich geht es nur darum, dass mein regexp alles als auf die expr "zutreffend" bezeichnet...

      das if({$file} !~ /[1]+?.([a-zA-Z]{3,4})$/)

      ist also irgendwie falsch...ich weiss nur nicht was...

      danke und gruss
      scheuri

      Hi,

      eine dieser kontrollen ist die bezeichnung des files, welche a-zA-Z_0-9 plus - und _ und . behinhalten soll.

      ich habe im SELFHTML einen ansatz gefunden, ihn aber umgeschrieben und sehe nun den fehler nicht ...

      if({$file} !~ /[2]+?.([a-zA-Z]{3,4})$/)

      dann sollte das script abbrechen (mit entsprechender meldung), wenn also das file sonderzeichen hat oder die extension 3 zeichen unterschreitet bzw. 4 überschreitet....

      Warum abbrechen?

      ich wuerde es so machen, dass ich alle ungueltigen Chars loesche und das nehme, was uebrigbleibt als Dateiname.
      (Es sei denn, es gibt kein Zeichen mehr uebrig, oder es ist gleich "." oder "..", oder ".,").

      Also etwa so:

      $file =~ s/[^a-z0-9-_.]+//gi;

      if (($file eq ".") || ($file eq "..") || ($file eq ".,")) {
        $file = "";
      }

      if ($file) {
        # Tu irgendwas

      } else {
        # Fehlerfall

      }

      Ciao,
      Wolfgang


      1. \w.- ↩︎

      2. \w.- ↩︎

      1. Hi,

        lese mein Post nochmal.

        da steht es so drin, wei es fuer die auch funktionieren sollte. Vergiss die regexp, die du hast.

        Ciao,
         Wolfgang

  2. Hallo Stefan,

    if({$file} !~ /[1]+?.([a-zA-Z]{3,4})$/)

    ^     ^
    was ist das und wozu braucht man das?

    Ich glaube das ist dein Fehler oder?

    Gruß
    Roland


    1. \w.- ↩︎

    1. moin roland

      ja, ich sollte an meiner fragestellung feilen....

      diese regexp gibt jeden filenamen, den ich als $file übergebe, als zutreffend an...
      das sollte nicht der fall sein....es ist ein !~
      zutreffen sollten nur filenamen, welche sonderzeichen haben und/oder die extensions sonderzeichen hat oder 3 zeichen unterschreitet bzw. 4 überschreitet...

      danke
      scheuri

      Hallo Stefan,

      if({$file} !~ /[1]+?.([a-zA-Z]{3,4})$/)
            ^     ^
      was ist das und wozu braucht man das?

      Ich glaube das ist dein Fehler oder?

      Gruß
      Roland


      1. \w.- ↩︎

      1. Hallo Stefan,
        versuch doch mal ohne {} also => "if($file !~ /[1]+?.([a-zA-Z]{3,4})$/)".
        Das ist doch nicht das gleiche oder?

        Gruß
        Roland

        moin roland

        ja, ich sollte an meiner fragestellung feilen....

        diese regexp gibt jeden filenamen, den ich als $file übergebe, als zutreffend an...
        das sollte nicht der fall sein....es ist ein !~
        zutreffen sollten nur filenamen, welche sonderzeichen haben und/oder die extensions sonderzeichen hat oder 3 zeichen unterschreitet bzw. 4 überschreitet...

        danke
        scheuri

        Hallo Stefan,

        if({$file} !~ /[2]+?.([a-zA-Z]{3,4})$/)
              ^     ^
        was ist das und wozu braucht man das?

        Ich glaube das ist dein Fehler oder?

        Gruß
        Roland


        1. \w.- ↩︎

        2. \w.- ↩︎

        1. hi roland

          yep...jetzt scheint es zu gehen.....super danke...

          grus
          scheuri

          Hallo Stefan,
          versuch doch mal ohne {} also => "if($file !~ /[1]+?.([a-zA-Z]{3,4})$/)".
          Das ist doch nicht das gleiche oder?

          Gruß
          Roland

          moin roland

          ja, ich sollte an meiner fragestellung feilen....

          diese regexp gibt jeden filenamen, den ich als $file übergebe, als zutreffend an...
          das sollte nicht der fall sein....es ist ein !~
          zutreffen sollten nur filenamen, welche sonderzeichen haben und/oder die extensions sonderzeichen hat oder 3 zeichen unterschreitet bzw. 4 überschreitet...

          danke
          scheuri

          Hallo Stefan,

          if({$file} !~ /[2]+?.([a-zA-Z]{3,4})$/)
                ^     ^
          was ist das und wozu braucht man das?

          Ich glaube das ist dein Fehler oder?

          Gruß
          Roland


          1. \w.- ↩︎

          2. \w.- ↩︎