Rene: Sessionmanagement

Hallo,

ich habe folgendes Problem.

Ich habe meine Internetseiten mit php gestaltet. Alle Links werden über eine Abfrage geschaltet. Diese Linkweiterschaltung funktioniert wie folgt.

Mein ganzer Auftritt besteht aus einer einzelnen Seite (start.php) die je nach dem wo man gerade drauf drückt die entsprechende Seite in einen Iframe auf der Start.php reinlädt. Kurz gesagt ich drücke auf Home und die start.php wird neu geladen mit dem Iframe indem sich nun home.php befindet. Das ist für alle links so gestaltet. Damit start.php weiß welche seite in das IFrame geladen werden soll verwende ich eine temporäre Datai namens content_tmp die bei Klick auf home z.b. mit dem wert Home gefüllt wird und dann durch start.php ausgelesen wird. Nach dem auslesen der temporären datei wird start.php neu geladen und home.php ins frame geladen. Soweit so gut. Alles funktioniert bis dahin.

Doch nun kommt der Punkt. Es funktioniert nur für einen Benutzer prima. Da ich nur eine temporäre Datei habe greift jeder Besucher auf die selbe temp datei zu. Diese wird dann immer verändert. Somit ist ein Konflikt vorprogrammiert. (Angenommen Nutzer1 besucht Link Home d.h temp wird mit home gefüllt. Alle anderen Nutzer greifen nun auf die selbe temp datei zu und erhalten somit die selbe Seite wie Nutzer1).

Ich müsste jetzt wissen wie ich es realisieren kann das meine seite für viele Benutzer optimiert ist. So das jeder Benutzer seine eigenen Daten in einer temp Datei nur für sich alleine hat.

Alle Anregungen helfen mir weiter!

Vielen Dank

  1. Hello,

    kann ich gut nachvollziehen diese Überlegungen. Soweit war ich vor fünf Jahren auch mal. Und glaub nicht, dass es dann nur noch sechs Wochen gedauert hätte, das Konzept zu durchschauen.

    Dabei sind damals auch die "selbstlöschenden Dateien" entstanden. Die kann man gerade einmal aufrufen, dann sind sie futsch. Eine besondere Form des Datenschutzes sozusagen.

    Mit dem Sessionmanagement von PHP kann man aber eigentlich ganz gut leben. Es gibt zwar auch da noch was zu verbessern, aber man muss ja nicht an allem rumnörgeln.

    Du wirst wahrscheinlich nicht drum herum kommen, entweder die angeforderten Seiten mittels URi zu referenzieren und ggf. on the fly zu erzeugen, oder aber auf Frames zu verzichten und darauf hoffen, dass bald alle Browser wenigstens CSS und DIV {overflow:auto} oder noch besser {overflow:vertical_only} [gibts nicht, hab ich mir ausgedacht] unterstützen. Das wäre dann eine Art "intelligentes iFrame".

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Tom,

      also schaffe ich es mit dem Sessionmanagement meine Seite dahin gehend zu optimieren, wenn ich dich richtg verstanden habe!?
      Das heisst ich verpasse jedem Benuzer eine eigene ID und seine zugehörigen Daten!? Diese ID lösche ich dann wenn der Browser sich schliesst oder was ist die sauberste Lösung?
      Die Seite soll keinen Login Bereich enthalten! sie soll für alle Nutzer gleich zu sehen sein!

      Rene

      1. Hello,

        also schaffe ich es mit dem Sessionmanagement meine Seite dahin gehend zu optimieren, wenn ich dich richtg verstanden habe!?
        Das heisst ich verpasse jedem Benuzer eine eigene ID und seine zugehörigen Daten!? Diese ID lösche ich dann wenn der Browser sich schliesst oder was ist die sauberste Lösung?
        Die Seite soll keinen Login Bereich enthalten! sie soll für alle Nutzer gleich zu sehen sein!

        Session und Login sind auch nicht zwangsläufig voneinander abhängig. Man kann eine Session starten, ohne dass man ein Login daran knüpft. Umgekehrt wird es allerdings philosophisch.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Moin!

    Ich habe ein paar Fragen:

    Frage 1: Warum gibt es den Iframe? Hat der irgendeinen layouttechnischen Sinn, oder würdest du auf ihn auch einfach verzichten können?

    Frage 2: Hast du schon davon gehört, dass PHP auch direkt an den Browser Seiten ausliefern kann, ohne temporäre Dateien erstellen zu müssen?

    Ich skizziere mal, wie "man" es "normalerweise" macht, wenn man alle seine Inhalte über ein zentrales Skript laufen läßt:

    1. Alle Links enthalten einen Parameter, der den gewünschten Inhalt angibt. Du verlinkst also immer auf "start.php?page=seitenschlüsselwort" - vermutlich tust du das jetzt auch schon.
    2. Wenn kein Seitenschlüsselwort angegeben ist, wird die Startseite ausgegeben.
    3. Wenn ein Schlüsselwort angegeben ist, schaut start.php in einer Tabelle nach, welcher Seiteninhalt dazugehört, und gibt eine neue Seite inklusive aller Navigationen und natürlich mit dem neuen Seiteninhalt an den Browser aus.

    3a. Wenn du auf dein IFrame nicht verzichten willst, gibt start.php alternativ ein dynamisch generiertes <iframe>-Tag aus, in dem sich der src-Wert entsprechend der angeforderten Seite verändert.

    Beispiel dazu: angenommen, deine HTML-Seiten, die im Iframe angezeigt werden sollen, liegen alle im Verzeichnis "pages" und heißen "index.html" und "seite1.html".

    In der start.php mußt du dann im Prinzip abfragen, welche gewünschte Seite ausgegeben werden soll:

    if (not isset($_GET['page'])) {
      echo "<iframe src='index.html'>";
    }
    else
    {
      switch $_GET['page'] {
        case "seite1": echo "<iframe src='seite1.html'>"; break;
        case "seite2": echo "<iframe src='seite2.html'>"; break;
        default:       echo "<iframe src='index.html'>"; break;
      }
    }

    Zuerst prüfst du, ob überhaupt ein Wert angegeben wurde. Wenn nein, wird die Standardseite eingebunden.

    Andernfalls wird geschaut, welches Schlüsselwort angefordert wurde, um daraufhin die zugehörige Seite einzubinden.

    Wenn du auf den IFrame verzichten kannst, solltest du anstelle des echo-Befehls einfach den Befehl readfile() benutzen, dem du den Dateinamen der auszugebenden Seite übergibst.

    - Sven Rautenberg