Viennamade: Dateifunktionen

Hallo Forumsteilnehmer!

Ich hab eine PHP-Klasse die listet rekursiv Dateien, eine HTML-Seite benutzt sie für eine Liste.
Neben jeder Datei schreibe ich einen Verweis "Löschen" der bei Mausklick die entsprechende Funktion aufrufen soll. Der Verweis braucht ein name-Attribut, jedoch bei Dateien in Unterverzeichnissen beschwert sich der Validator, daß ein Schrägstrich im name-Attribut nicht vorhanden sein soll. Also uploaddir/subdir/datei.jpg.

Was soll ich tun?

Danke
Viennamade

  1. Hallo Viennamade!

    Der Verweis braucht ein name-Attribut, jedoch bei Dateien in Unterverzeichnissen beschwert sich der Validator, daß ein Schrägstrich im name-Attribut nicht vorhanden sein soll.

    Das ist ohne weitere Information so nicht erfaßbar.
    Eine Variable in der "Get-Methode" oder nur als QUERY_STRING wäre sinvoll. Ausgabe an Clients:

    <a href="datei.php?[zu löschende Datei]">[Dateiname]</a>
    oder
    <a href="datei.php?datei=[zu löschende Datei]">[Dateiname]</a>

    Wofür bedarf es eines name-Attribut?

    Gruß aus Berlin!
    eddi

    1. Hallo Eddi!

      Eine Variable in der "Get-Methode" oder nur als QUERY_STRING wäre sinvoll. Ausgabe an Clients:

      <a href="datei.php?datei=[zu löschende Datei]">[Dateiname]</a>

      Ich habe die Seite jetzt entsprechend Deinem Tip gemacht, also QUERY_STRING. Ganz glücklich bin ich mit dieser Lösung nicht. Eine URL und einen Dateinamen dran und schon wird gelöscht ...
      Jedenfalls funktionierts. Danke!

      Beste Grüße
      Viennamade

      1. Hallo Viennamade,

        ...Eine URL und einen Dateinamen dran und schon wird gelöscht ...

        den Anhang mußt Du aber erstmal tippen. Wenn Du dein System nicht volltrunken bedienst, dürfte sowas ja wohl nicht versehentlich passieren.

        Wenn Dein System hingegen öffentlich ist, kann sowiso jeder löschen was er will, oder?

        Gruß, Andreas

        --
        <img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
        http://was-ist-das.andreas-lindig.de
  2. Hello,

    verstehe ich das richtig, dass dsa Name-Attribut selber den Pfad und den Namen der zu löschenden Datei angibt? Gib mir doch mal die URL zu dieser Seite, damit ich mal mittels eigenen POST-Formular alles löschen kann.

    Soll heißen:

    Solche Aktionen erfordern immer eine Session
    In der Session wird ein TransformationTable geführt.
    D.h. dass jede dem Beutzer angebotene Datei in der Session unter einem Code (also bitte keine fortlaufenden Nummern) abgelegt wird. Wenn nun die Delete-Anweisung mit dem Paramter (Code der Datei) im Script aufläuft, die Session noch gültig ist (also der Benutzer noch angemeldet ist) und der Code in der liste auch drinsteht, dann wird gelöscht, anderenfalls wird die Session sofort abgebrochen.

    Und dein Namensproblem löst sich dann auch in Luft auf, denn die Codes kann man ja Validator-konform gestalten.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hallo Tom!

      In der Session wird ein TransformationTable geführt.
      D.h. dass jede dem Beutzer angebotene Datei in der Session unter einem Code (also bitte keine fortlaufenden Nummern) abgelegt wird. Wenn nun die Delete-Anweisung mit dem Paramter (Code der Datei) im Script aufläuft, die Session noch gültig ist (also der Benutzer noch angemeldet ist) und der Code in der liste auch drinsteht, dann wird gelöscht, anderenfalls wird die Session sofort abgebrochen.

      Danke für Deine Antwort. Verstehe ich und so will ich es machen. Um einen Tip möchte ich Dich bitten: Wie codiere ich die Dateien beispielsweise? Habe so etwas noch nie gemacht und weiß nicht wo ich anfangen soll. Hex? In eine Maske pressen und umdrehen? Keine Ahnung!

      Beste Grüße
      Viennamade

      1. Hello,

        Danke für Deine Antwort. Verstehe ich und so will ich es machen. Um einen Tip möchte ich Dich bitten: Wie codiere ich die Dateien beispielsweise? Habe so etwas noch nie gemacht und weiß nicht wo ich anfangen soll. Hex? In eine Maske pressen und umdrehen? Keine Ahnung!

        Nein, du baust einfach ein Array auf in dem du unter dem Index, den du als Zufallszahl generierst dann den wirklichen Dateinmane ablegst. Wenn jetzt ein Request kommt, kannst Du innder Session in dem entsprechnden Array schauen, ob der Index überhaupt enthalten ist (isset()), wenn ja, kannst Du mit dem Dateinamen arbeiten, wenn nein, wird der User unlogged.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Hallo!

          ... Wie codiere ich die Dateien beispielsweise? ...

          ... du baust einfach ein Array auf in dem du unter dem Index, den du als Zufallszahl generierst dann den wirklichen Dateinmane ablegst. Wenn jetzt ein Request kommt, kannst Du innder Session in dem entsprechnden Array schauen, ob der Index überhaupt enthalten ist (isset()), wenn ja, kannst Du mit dem Dateinamen arbeiten, wenn nein, wird der User unlogged.

          Yep, alles klar!
          Danke!
          Viennamade

  3. Hi,

    Der Verweis braucht ein name-Attribut, jedoch bei Dateien in Unterverzeichnissen beschwert sich der Validator, daß ein Schrägstrich im name-Attribut nicht vorhanden sein soll.

    Welcher Validator? Der vom w3c beschwert sich selbstverständlich nicht bei / im name-Attribut des a-Elements, da dieses Zeichen ja zulässig ist.

    Was dieses name-Attribut allerdings nützen soll, ist mir nicht so ganz klar - es wird ja beim Anklicken des Links nicht übertragen an den Server.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas!

      Der Verweis braucht ein name-Attribut, jedoch bei Dateien in Unterverzeichnissen beschwert sich der Validator, daß ein Schrägstrich im name-Attribut nicht vorhanden sein soll.
      Welcher Validator? Der vom w3c beschwert sich selbstverständlich nicht bei / im name-Attribut des a-Elements, da dieses Zeichen ja zulässig ist.

      Ich bin mir sicher, daß Du recht hast, irgenwie muß ich auf der Leitung stehen, denn
         <li>upload/2004_04_18.txt [<a name="bla/bla" href="rsuploadadmin.php?filetodel=uploads/2004_04_18.txt">löschen</a>]</li>
      bringt mir mit dem W3C-Validator (die HTML-Datei ist xhtml-strict 1.0):
      Line 33, column 47: character "/" is not allowed in the value of attribute "name"

      Was dieses name-Attribut allerdings nützen soll, ist mir nicht so ganz klar - es wird ja beim Anklicken des Links nicht übertragen an den Server.

      Ich beginne jetzt das das besser zu machen.

      Beste Grüße
      Viennamade

      1. Hi,

        <li>upload/2004_04_18.txt [<a name="bla/bla" href="rsuploadadmin.php?filetodel=uploads/2004_04_18.txt">löschen</a>]</li>
        bringt mir mit dem W3C-Validator (die HTML-Datei ist xhtml-strict 1.0):
        Line 33, column 47: character "/" is not allowed in the value of attribute "name"

        Ah so, XHTML. Bei XHTML ist das name-Attribut nicht mehr CDATA, sondern NMTOKEN. Da ist das natürlich nicht erlaubt.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.