PHP Session per JS setzen?

  • Sailor
    Wir hatten das ja schonmal in einem anderen Thema angekratzt, hier schildere ich mal genauer wo mein Problem liegt...


    Da es ja scheinbar unpassend ist, wenn Sessions ohne Einwilligung gesetzt werden, muss dies ja mit dem Click auf den "Cookies akzeptieren"-Button passieren.
    Leider habe ich von JS überhaupt keine Ahnung, und der Cookie-Hinweis, welchen ich mir mal irgendwo wegkopiert habe, funktioniert mit JS.


    Beim Aufruf der Seite werden 2 Sessions gesetzt, eine für den Besucherzähler und die andere für die Ausgabesprache:


    Der Code für den Cookie-Hinweis:


    Ich habe wirklich NULL Ahnung wie es gemacht wird, ich hoffe mir kann dabei geholfen werden :)

  • Muss eine Session nicht als allererstes gestartet werden, bevor überhaupt eine Ausgabe im Browser erfolgt? Das würde dann aber eine Abfrage per JS unmöglich machen, da dann ja schon damit eine Ausgabe erfolgte.


    Liege ich da richtig?

    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

  • Nicht ganz.
    Mit session_start() startet man den ganzen Spaß noch bevor andere Skripte ausgeführt werden, dann ist die Session aber ohne irgendwelche Informationen, quasi jungfräulich.
    Die Informationen können dann an jeder beliebigen Stelle wie bspw. nach Login angelegt, geändert oder gelöscht werden

  • Ja, da hast du tatsächlich ein Problem(chen). Du nutzt SESSION Variablen gleich auf der Startseite - musst also die SESSION starten, damit keine Fehler auftreten. Und der Fehler würde sich fortsetzen, weil du wahrscheinlich auf jeder Unterseite diese SESSION Variablen nutzt, um zB die gewählte Sprache anzuzeigen.
    Welche SESSION Variablen - außer den beiden (language und visitor_count), die im Code zu sehen sind, werden denn noch an anderen Stellen benötigt.
    Was soll passieren, wenn ein 'Besucher' nicht auf den OK Button klickt?... oder der Browser des Besuchers keine Cookies akzeptiert?
    Man kann sicher im Einzelfall (wie zB bei der Sprache) über eine if Abfrage if(!isset($_SESSION['language'])) jeweils eine Default-Sprache setzen - aber bei zu vielen Defaults wird das mühsam.
    Aber im Prinzip ist das machbar.
    Vor dem Starten der Session wird im PHP abgefragt, ob der Akzeptier-Cookie gesetzt ist, wenn ja - alles ist gut, der Code kann so laufen, wie er ist.
    Wenn nein, wird die SESSION nicht gestartet und es muss die Alternative mit den Default-Werten greifen - die Seitennutzung wäre dann aber eingeschränkt.
    Etwas nutzerunfreundlicher... aber einfacher... wäre es, auf der Startseite dem Nutzer keine andere Wahl zu lassen, als den Akzeptier-Button zu klicken.

  • Zählt die clientseitig gespeicherte SESSION ID nicht als Cookie?
    Wenn ja, fällt die unter diese zustimmungspflichtige Nutzung von Cookies? ... bin da unsicher und kein Jurist.


    Doch, das ist vollkommen richtig. Deshalb schrieb ich ja noch, ob ich es falsch verstanden habe.


    Ich habe es so verstanden, dass per JS auf die SESSION-Daten zugegriffen werden soll und das ist nicht möglich, denn Client seitig wird nur ein Cookie mit der SID gesetzt, wie Du schon sagtest.
    Diese dient auch nur zur Erkennung, um welche Session es sich handelt. Die Daten innerhalb der Session werden auf dem Server gespeichert, weshalb JS im klassischen Sinne dort nicht ran kommt.


    Man kann PHP auch veranlassen/zwingen, die SID in der URL zu übertragen, dann wird kein SID-Cookie am Client gesetzt.
    Finde ich zwar keine schöne Lösung, aber möglich wäre es.

  • Hmm naja, die genannten Optionen kommen da nicht wirklich in Frage.


    Mir kam ein anderer Gedanke:
    würde es genügen, im Cookie-Hinweis einen Link/Button anzubieten mit welchem die Session gelöscht werden kann?
    Müsste dann nur auf eine "Exit-Page" weiterleiten...

  • Warum willst Du die Session löschen?
    In der Session befinden sich idealer Weise nur Ablauf relevante Daten und keine Personen bezogenen.


    Deine Webapplikation dürfte mit gelöschter Session vermutlich gar nicht lauffähig sein.


    Wenn es aber unbedingt sein muss, kannst Du das Click-Event abfangen und einen XmlHttpRequest auf ein Server-Script setzen, wo die Session gelöscht wird.

  • Es kann und darf dir hier im Forum niemand einen rechtssicheren und verbindlichen Rat geben - das kann und darf nur ein Anwalt, der sich mit Internetrecht auskennt. Der ist dann auch im Zweifelsfall dein Ansprechpartner.
    Zu klären wäre u.a., ob die Session ID (PHPSESSID) ohne vorherige Zustimmung gespeichert werden darf?
    Und - stellt die Einbindung von 'Fremdscripten / externen Fonts' einen Verstoß gegen die DSGVO dar.
    In deinem Code wäre das...

    Code
    1. <script async src="https://www.googletagmanager.com/gtag/js?id=UA-126919990-1"></script>
    2. ...
    3. <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    4. ...
    5. <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet">


    Erst wenn dann die Grundlagen klar sind, käme das Forum ins Spiel beim Unterstützen, wie und ob man die juristischen Vorgaben umsetzen kann?

  • Du verwechselst da etwas.
    Die Nutzung von Cookies wird nicht in der DSGVO, sondern in der ePrivacy geregelt, diese ist aber mit letzem Fälligkeitstermin der DSGVO noch nicht abgeschlossen und kommt 2019 ( Monat weiß ich grad nicht ).
    Die Frage, ob ein OptIn dann zwingend ist oder ein klarer OptOut ausreicht, wird also auch erst dann beantwortet sein.


    Der aktuelle Stand ist, dass OptOut ausreichen würde, aber mit OptIn der sicherere Weg ist.
    Das muss dann jeder für sich entscheiden, im Zweifel durch eine Rechtsberatung, die hier nicht stattfinden kann, wie Du schon sagst.


    Aber mit der DSGVO hat das Thema hier nur soviel zu tun, dass ich den Benutzer darauf hinweisen und eine Möglichkeit zum Widersprechen einräumen muss!
    OptIn oder OptOut entscheidet nicht die DSGVO.