Session Fragen

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

  • Session Fragen

    Hallo,

    habe gerade jede Menge Threads zum Thema hier gelesen, aber glücklich bin ich trotzdem nicht.

    Bisher habe ich es immer so gemacht das ich die Session im Cookie speicher und eine an die URL angehängte SID ganz weggelassen habe, das heisst also bei usern die cookies deaktiviert haben gibt es keine SESSION.

    Jetzt habe ich die Seite aber von Grund auf neu gemacht und für einige Dinge brauche ich die Session, ansonsten müsste ich diverse sachen anders lösen.

    Allerdings möchte ich keine Session ID an die URL anhängen, aber ich denke das geht nicht anders oder? Das Problem ist wenn jemand eingeloggt ist und seinen LINK mitsamt SID kopiert und jemand anders diesen aufruft, wie soll ich das prüfen ?

    - Anhand der IP geht nicht, weil viele ISPs die wechseln/ macnhe User Proxies benutzen etc
    - checken ob der user schon eingeloggt ist geht auch nicht weil ein User ja auch mehrere Seiten gleichzeitig aufhaben kann

    Wie geht das am besten ?

    Außerdem frage ich mich wie andere Große seiten das machen, bei ign.com, gamespot.com, teamxbox.com oder was auch immer sehe ich auch keine SID wenn ich Cookies deaktiviert habe ?!

    mymtw.de zb hat durchweg 5000 USer online und erzwingt auch Cookies für den Login, von daher finde ich das nicht so abwegig ausser man macht zb einen Onlineshop.

    am liebsten würde ich wieder auf Cookies only umsteigen aber dann müsste ich ein paar Sachen ändern.

    Wenn nen googlebot zb auf die Seite kommt, erzeugt und benutzt der auch ganz normal eine Session ? Problem ist das ohne Sessions meine Gallery nicht richtig funktioniert, und die Bilder sollten schon bei google indexiert werden.

    was passiert in folgendem Fall:
    User ist eingeloggt und schreibt einen Artikel, schreibt insgesamt über eine Stunde weil der Artikel sehr lang ist und speichert nur am Ende ab, was wenn die Session inzwischen wenn er auf speichern klickt abgelaufen ist ? Wäre dann alles verloren ?

    BTW:
    ich merke gerade in diesem Forum das posten ohne Cookies auch nicht sorecht klappt, jedenfalls postet er nicht und fragt mich immer wieder nach dem Login

    danke schonmal für anregungen

  • #2
    Interesantes Thema...
    Ich habe irgendwo eine Statistik gelesen, wo stand, das es eine geringe Anzahl ist, die Cookis deaktiviert haben, aber das hilft dir ja auch nicht weiter....

    Aber ist gut fürs Gewissen....
    Gut geraten ist halb gewußt.

    Kommentar


    • #3
      sicher ist es eine geringe zahl, aber es gibt sie trotzdem und diese könnten dann zb meine gallerie nicht richtig benutzen da mache ich nämlich folgendes:

      wenn man ein bild einer galerie ansiehst werden alle bildids der aktuellen galerie in ein array geladen um die nächste bild id zu bestimmen, die id einfach erhöhen geht nicht weil alle bilder aller galerien in einer tabelle sind und per galerie id ausgelesen werden und weil ja auch zwischendurch bilder gelöscht werden können.
      Um jetzt zu verhindern das bei jedem Bildaufruf wieder alle Bilderids aus der DB gelesen werden müssen speicher ich diesen bilderid array in die session, so muss das nur einmal passieren, was angenommen der user guckt sich nacheinander 150 bilder an, immerhin 150 queries spart. Wie machen das andere Galerie Scripte ?

      ich habe eine Tabelle Galerien und eine Galeriebilder wo zu jedem Bild die Galerieid gespeichert ist.

      Ich könnte die IDs auch in eine Dateischreiben, spart immerhin nen query aber dafür hat man dann einen zugriff mehr aufs dateisystem.

      Kommentar


      • #4
        Hab die langen Texte nicht ganz gelesen, weil die Problematik beim besten willen nichts neues ist.

        Normale vorgehensweise:
        SessionID wird nach möglichkeit im Sessioncookie gespeichert. NUR wenn das nicht möglich ist, wirds halt an die URL gehängt. Wenn der User über die URL seine ID weitergibt, diese aber noch aktiv ist, ist er selber schuld.

        In Foren, internen Nachrichtensystemen, etc. sorgt eine RegEx dafür, dass ids aus den geposteten URLs entfernt werden, sowie sie denn vorhanden sind.

        Da die SessionID die enzige identifikation ist, kann man "Entführte Sessions" nicht erkennen. Zusätzliche Sicherheiten sind evtl. Der Browser und weitere Systemeigenschaften, aber ist alles nicht 100%ig.

        Zu deiner Beobachtung, dass die von dir genannten großen Seiten keine Session-id nutzen, muss ich sagen, dass diese falsch sein muss. Du hast Cookies deaktiviert. Aber auch die Sessioncookies? Diese kann man idR. ohne gefahr aktiviert lassen. Und das haben auch die meisten User.

        Zu Google: Beim Besuch von Suchmaschinen solltest du keine Session starten! Mit Cookies wird der Bot ohnehin so seine Probleme haben.

        Betreffend dem Artikel der über eine Stunde geht: Ja, der Text wird zumindest erstmal nicht gespeichert werden können. In klugen Browsern geht der Besucher (nachdem er mitgeteilt bekommt, dass die Session abgelaufen ist) zurück zum eingabeformular, kopiert es in die Zwischenablage, loggt sich neu ein und postet dann.

        @BTW: Das glaube ich nicht. schleißlich besteht hier die Möglichkeit die ID über die URL zu transportieren.

        wenn man ein bild einer galerie ansiehst werden alle bildids der aktuellen galerie in ein array geladen um die nächste bild id zu bestimmen, die id einfach erhöhen geht nicht weil alle bilder aller galerien in einer tabelle sind und per galerie id ausgelesen werden und weil ja auch zwischendurch bilder gelöscht werden können.
        Nun, ich würde einfach sagen, deine Galerie ist schlecht programmiert. Guck dir mal die Photoalben auf www.hawabii.de an. Da siehst du, dass es durch das einfache "Erhöhen" der/einer(!) ID geht. Ich brauche übrigens für die komplette Bildanzeigeseite nur eine einzige Query, in der ich lediglich einen Datensatz auslese.

        ich habe eine Tabelle Galerien und eine Galeriebilder wo zu jedem Bild die Galerieid gespeichert ist.
        Das ist durchaus in ordnung und der einzig sinnvolle weg.

        Ich könnte die IDs auch in eine Dateischreiben, spart immerhin nen query aber dafür hat man dann einen zugriff mehr aufs dateisystem.
        eine unsinnige Überlegung

        Kommentar


        • #5
          Da siehst du, dass es durch das einfache "Erhöhen" der/einer(!) ID geht.
          und was machst du, wenn du ein bild löschst? dann ist auch die id futsch. :-P
          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


          • #6
            Original geschrieben von TobiaZ
            Zu deiner Beobachtung, dass die von dir genannten großen Seiten keine Session-id nutzen, muss ich sagen, dass diese falsch sein muss. Du hast Cookies deaktiviert. Aber auch die Sessioncookies? Diese kann man idR. ohne gefahr aktiviert lassen. Und das haben auch die meisten User.
            das scheint aber so zu sein, bei mymtw.de zb kann ich mich ohne cookies nichtmehr einloggen, bei anderen genannten seiten finde ich keine SID in der url wenn cookies deaktiviert sind.

            Nun, ich würde einfach sagen, deine Galerie ist schlecht programmiert. Guck dir mal die Photoalben auf www.hawabii.de an. Da siehst du, dass es durch das einfache "Erhöhen" der/einer(!) ID geht. Ich brauche übrigens für die komplette Bildanzeigeseite nur eine einzige Query, in der ich lediglich einen Datensatz auslese.
            Schlecht programmiert ? Nunja dann stell dir folgendes Szenario vor:
            2 User uploaden durch Zufall eine Galerie gleichzeitig (kann ja bei einer großen Seite durchaus mal vorkommen), was dazu führt das die nächste BildID unter Umständen immer zu einer anderen Galerie gehört, oder der User löscht zwischendrin Bilder so das IDs fehlen.

            Wie soll ich dann, ohne alle Ids der Galerie einzulesen, die nächste ermitteln können ?

            ID um 1 erhöhren und prüfen ob Sie existiert & in der richtigen Galerie ist und ggf das ganze wiederholen? nicht wirklich schön, unter umständen X Queries ohne Result.

            Wie du das sagst scheint deine Galerie ja "toll programmiert" zu sein, also wie hast du das Problem gelöst ? Ich bin gespannt

            So "unsinning" finde ich das im Dateisystem speichern auch nicht, die Datei müsste nur einmal geschrieben werden und bei großen Webanwendungen ist der Flaschenhals oft die SQL Datenbank, daher denke ich das eine Datei einzulesen wo alle ids der Galerie drinstehen schneller geht / Ressourcen schonender ist als die IDs per Query aus einer Datenbanktabelle mit etlichen Tausend Bilderids einzulesen
            Zuletzt geändert von kaguya; 02.10.2005, 00:55.

            Kommentar


            • #7
              und was machst du, wenn du ein bild löschst? dann ist auch die id futsch. :-P
              Nein! Meine IDs sind keineswegs fortlaufend. Denn genau wie jeder andere habe ich alle bilder in einer Tabelle, Alben werden unterschiedlich häufig aktualisiert und zensiert. Eine Fortlaufende BildID gibt es somit auch bei mir nicht. Deswegen sprach ich von EINER ID:
              Einfach die Nummer des Datensatzes um 1 erhöhen oder verringern. Machst du sicherlich genauso.

              das scheint aber so zu sein, bei mymtw.de zb kann ich mich ohne cookies nichtmehr einloggen, bei anderen genannten seiten finde ich keine SID in der url wenn cookies deaktiviert sind.
              Bist du dir denn sicher, dass auf den entsprechenden Seiten Sessions eigesetzt werden?

              Schlecht programmiert ? Nunja dann stell dir folgendes Szenario vor:
              2 User uploaden durch Zufall eine Galerie gleichzeitig (kann ja bei einer großen Seite durchaus mal vorkommen), was dazu führt das die nächste BildID unter Umständen immer zu einer anderen Galerie gehört, oder der User löscht zwischendrin Bilder so das IDs fehlen.
              Ja, schlecht programmiert. Denn beides kann eigentlich nicht eintreten.

              Wie soll ich dann, ohne alle Ids der Galerie einzulesen, die nächste ermitteln können ?
              S.o. (Erklärung an Abraxax)

              ID um 1 erhöhren und prüfen ob Sie existiert & in der richtigen Galerie ist und ggf das ganze wiederholen? nicht wirklich schön, unter umständen X Queries ohne Result.
              *graus*

              Wie du das sagst scheint deine Galerie ja "toll programmiert" zu sein, also wie hast du das Problem gelöst ? Ich bin gespannt
              s.o.

              So "unsinning" finde ich das im Dateisystem speichern auch nicht, die Datei müsste nur einmal geschrieben werden und bei großen Webanwendungen ist der Flaschenhals oft die SQL Datenbank, daher denke ich das eine Datei einzulesen wo alle ids der Galerie drinstehen schneller geht / Ressourcen schonender ist als die IDs per Query aus einer Datenbanktabelle mit etlichen Tausend Bilderids einzulesen
              Und ich verspreche dir, dass es deutlich schonender ist, eine (!) ID aus 10.000 herauszuholen, als sagen wir 200 aus einer Textdatei und dort wiederum eine herauszunehmen.

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                [B]Nein! Meine IDs sind keineswegs fortlaufend. Denn genau wie jeder andere habe ich alle bilder in einer Tabelle, Alben werden unterschiedlich häufig aktualisiert und zensiert. Eine Fortlaufende BildID gibt es somit auch bei mir nicht. Deswegen sprach ich von EINER ID:
                Einfach die Nummer des Datensatzes um 1 erhöhen oder verringern. Machst du sicherlich genauso.
                Was ist denn die Nummer des Datensatzes ? Jedes Bild wird bei dir doch eine ID haben.

                Ja, schlecht programmiert. Denn beides kann eigentlich nicht eintreten.
                Wieso nicht ? Ich biete meinen Usern an Galerien zu erstellen, User X und Y haben am Wochende viele Bilder gemacht und kommen beide am Montag abend gegen 18 uhr auf die Idee eine Galerie zu erstellen und uploaden ihre Bilder beide gleichzeitig.
                So kann es doch vorkommen das das bild id 55 zur galerie von user X gehört und bild id 56 und 57 gehören zu der galerie von user Y.

                Und durch löschen von Bildern kann es doch passieren das du wenn du zb Bild 55 anzeigst 56 und 57 nicht mehr da sind.

                Also wie die Nummer des Datensatzes um 1 erhöhen ? das geht doch nur wenn ich vorher alle IDs eingelesen habe

                übrigens finde ich deine Antworten reichlich arrogant, mir "schlechte programmierung" zu unterstellen und dann so eine dürftige Antwort geben die die Frage nicht beantwortet ist recht arm.

                Aber vielleicht geht das ganze ja mit MySQL das man da den Datensatz irgendwie um 1 erhöhen kann, wenn ja hilf mir bitte auf die sprünge.
                Zuletzt geändert von kaguya; 02.10.2005, 11:13.

                Kommentar


                • #9
                  Was ist denn die Nummer des Datensatzes ?
                  Na, die stelle an der der Datensatz stehen würde, wenn ich alle (select * where album = x) ausgeben würde.
                  Jedes Bild wird bei dir doch eine ID haben.
                  Sicher, ja und?

                  Wieso nicht ? Ich biete meinen Usern an Galerien zu erstellen, User X und Y haben am Wochende viele Bilder gemacht und kommen beide am Montag abend gegen 18 uhr auf die Idee eine Galerie zu erstellen und uploaden ihre Bilder beide gleichzeitig.
                  Ja und? Ist das denn nicht so gedacht?

                  Und durch löschen von Bildern kann es doch passieren das du wenn du zb Bild 55 anzeigst 56 und 57 nicht mehr da sind.
                  Dazu hatte ich bereits was geschrieben.

                  Also wie die Nummer des Datensatzes um 1 erhöhen ? das geht doch nur wenn ich vorher alle IDs eingelesen habe
                  Falsch.

                  übrigens finde ich deine Antworten reichlich arrogant, mir "schlechte programmierung" zu unterstellen und dann so eine dürftige Antwort geben die die Frage nicht beantwortet ist recht arm.
                  Das wiederum finde ich arm, und bestätigt mich geradezu in meinem Verhalten. BTW: Kann ich nicht gerade sagen, dass ich sparsam war mit meinen antworten.

                  Aber vielleicht geht das ganze ja mit MySQL das man da den Datensatz irgendwie um 1 erhöhen kann, wenn ja hilf mir bitte auf die sprünge.
                  Klar geht das! Von nichts anderem rede ich die ganze Zeit. Habe der Haxe eben gesagt, wie ich es mache.

                  Kommentar


                  • #10
                    gut dann geb mir doch bitte ein stichwort, damit ich weiss wonach ich schauen muss, so finde ich nämlich nichts

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      Einfach die Nummer des Datensatzes um 1 erhöhen oder verringern. Machst du sicherlich genauso.
                      sicher. nur war deine ausdrucksweise bzgl 'id' ein wenig verwirrend. und für anfänger sicherlich noch viel viel mehr. ;-)
                      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
                        hm ich bin kein anfänger, arbeite beruflich aber eigentlich nur mit csv datenbanken / flat files, daher bin ich in mysql nicht soo fit..
                        Also wonach muss ich schauen ?

                        Sowas wie SQL_FOUND_ROWS ?

                        Kommentar

                        Lädt...
                        X