Samuel Vogel: Back- und Forward-Buttom

Hallo an diesem schönen Morgen,

Ich entwickle gerade eine Filemanager welcher schon fast fertig ist nur der Backbutton und der Forwardbutton geht noch nicht.
Der funktioniert ja im Explorer/Konqueror so:

/Dir_a/Dir_b/Dir_c

Man befindet sich z.B. in dir Dir_b. Also Forward -> Dir_C
                                          Back    -> Dir_a
Beides natürlich nur wenn man in den beiden Verzeichnissen schon war.

Jetzt will ich dies in den Filemanager per PHP-Sessions einbauen.
Aber ich hab keine Ahnung wie ich das machen soll.

Ich wäre dankbar für eine kleine Denckanstoß.

samy,

  1. Hallo,

    Ich wäre dankbar für eine kleine Denckanstoß.

    Also ins übergeordnete Verzeichnis kommst du immer mittels dir/../:

    cd /home/me/

    Du bist in /home/me

    cd /home/me/../

    Du bist in /home/

    Nach unter gehen ist insofern nicht möglich, als es nicht möglich ist den Konflikt zu lösen, der entsteht wenn es in einem Verzeichnis zwei oder mehere Unterverzeichnisse gibt.

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
    1. Hallo,

      Das ist mir klar aber hast du dir schon mal den Explorer/Konqueror genau angeschaut:

      Man geht von Dir_a in Dir_b und dann in Dir_c. Und nun wieder per backbutton in das Verzeichnis aus dem man kommt also in Dir_b jetzt gilt das was ich in meinem ersten Post gesagt habe.

      Dir_a    /    Dir_b    /    Dir_c
        ^^            ^^            ^^
      Back  <-   Hier ist man   -> Forward

      samy,

      1. Hallo,

        Das ist mir klar aber hast du dir schon mal den Explorer/Konqueror genau angeschaut:

        ah das meinst du; Das liegt aber eher daran, dass beide einfach den Inhalt eines Verzeichnisses als HTML (oder was auch immer) Seite sehen und ihre Browser History dafür verwenden.
        Ich habe sowas noch nie gemacht, aber du könntest auch einfach die Browserhistory verwenden:
        Nach dem Motto: dir enthält <a href="subdir">subdir</a> könnte der User auch die Browser Vor/Zurück Knöpfe verwenden.
        Wenn du diese Knöpfe lieber selbst machst, reicht es eventuell einfach in der Session die letzte besuchte Seite zu speichern:
        <?php
        //irgendwo in der example_dir.php
        $_SESSION['last_dir'] = 'path/to/example_dir.php';
        ?>
        <?php
        //'über' der example_dir.php (metaexample_dir.php)
        echo '<a href="/dir/of/metaexample_dir.php/../"'>Zurück</a>';
        echo '<a href="'.$_SESSION['last_dir']." > Vorwärts</a>';
        $_SESSION['last_dir'] = 'path/to/metaexample_dir.php';
        ?>

        Ich hoffe das ist in irgeneiner Weise hifreich, und wenigstens richtig, es ist doch noch arg früh ;-)

        gruß,
        Severin

        --
        Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
        --Philip K. Dick
  2. Sup!

    Du musst für jeden Benutzer in Deiner Datenbank einen Array anlegen mit den Verzeichnissen, in die er gewechselt hat, am besten speicherst Du die absoluten Pfade. Damit legst Du eine Art "Verzeichnis-History" an.

    Klickt der Benutzer "Back", gehst Du ein Verzeichnis zurück, und damit quasi eine Position im Array zurück.
    Klickt der Benutzer "Forward", und Du bist im Array noch nicht am Ende, kannst Du einfach ein Stück vorgehen und findest im Array das Verzeichnis.
    Wenn der Benutzer "Back" geklickt hat, und in ein anderes Verzeichnis wechselt als das, was im Array an nächster Stelle steht, dann musst Du den Rest des Arrays als ungültig kennzeichnen.
    Wenn der Benutzer weiter vorgeht durch Klick oder Eingabe, musst Du im Array eine Stelle weiter gehen; bist Du am Ende, musst Du das Array erweitern und ggf. aus Platzgründen die erste Stelle abschneiden.

    So oder so ähnlich würde ich mir das vorstellen.

    Gruesse,

    Bio

    --
    Besucht den Adventskalender!
    http://selfcommunity.teamone.de/advent/2003/
    1. Hallo,

      Ich habe noch ein kleines Problem bei der umsetzung meiner Lösung:

      Wie kann ich rausfinden wieviel Plätze in einem Array einen Wert haben?

      samy,

      1. Sup!

        Das kommt darauf an, ob es ein assoziativer oder ein "normaler" Array ist; ein "normaler" wäre hier wohl angebrachter. Normalerweise (in den meisten Programmiersprachen) haben aber Arrays eine "Length"-Eigenschaft bzw. es gibt einen Operator, der diese Länge ermittelt.
        Oft kann man die Länge auch setzen, und damit den Array "kürzen".
        Mit der Zuweisung zusätzlicher Elemente wird der Array meist länger.
        Wird wohl in der PHP-Doku irgendwo stehen...

        Gruesse,

        Bio

        --
        Besucht den Adventskalender!
        http://selfcommunity.teamone.de/advent/2003/
        1. Hallo,

          Ich habs jetzt mal so versucht aber irgendwie $_SESSION['position'] nicht um eins erhöht wie es von "++" eigentlich zu erwarten ist:

          if($_SESSION['position'] == "") $_SESSION['position'] = 0;

          $_SESSION['history'][0] = $high_dir;

          if($action == "change") {

          $_SESSION['position']++;

          echo $_SESSION['position'];

          $_SESSION['history'][$_SESSION['position']] = $dir;

          }
          elseif($action == "back") {

          $_SESSION['position']--;

          }

          Wo liegt der Fehler?

          samy,