"Cookie-Richtlinie" -- Serverseitig (PHP)

  • So langsam wird es wohl Zeit sich darum zu kümmern. Hab daher mal nachgelesen worum es eigtl. geht.
    Dem Benutzer soll also klar gemacht werden, dass "wir" Cookies nutzen und auf seinem Speichermedium ablegen.
    obwohl wir das ja nicht direkt können, sondern der Benutzer durch die von ihm genutzte Software das ablegen zulässt


    Ich hatte einige "fertige" Scripte dazu gesehen.
    Das Problem das ich damit hab ist, dass alle JS nutzen. Warum? So ein Quark. Hat der Nutzer kein JS laufen, dann wird er nicht informiert.
    Ausserdem ist es via PHP (mMn) viel einfacher diese Zustimmung einzuholen / einzubauen.


    Hier mal das PHP Script (erstmal ohne Text):
    FILE: cookie_consent.php


    Dieses File wird einfach in die vorhandene Seite eingebaut per:

    PHP
    1. // am anfang der index.php
    2. require('cookie_consent.php');
    3. // und hier dann der anfang deiner page ...


    Der Ablauf ist simpel:
    - wurde noch nie akzeptiert, dann zeige Formular an und verhindere den weitren Ablauf der Seite (exit())
    - wurde Form abgesandt, dann erstelle Cookie und leite weiter zur URL (die, die eigtl aufgerufen wurde -- GET-Parameter bleiben also erhalten)
    - wurde cookie gefunden (akzeptiert), dann sind wir sofort wieder aus der cookie_consent.php raus


    Jetzt überlege ich nur noch, was alles an Text rein kann, soll, muss.
    Evtl hab ich auch ein paar Fehler?
    Jemand Lust mit zu machen?
    Hier die cookie_consent.php mit dem momentanen Text:


    Live test: http://www.cottton.net/index.php?para1=1&para2=2&para3=3
    Files: cottton.net.zip

  • Hey,


    Erstmal fettes Danke für den Code, könnte durchaus noch nützlich werden ^^


    Aber was hast du gegen die JS-Lösungen? :D
    Ich muss gestehen, auf abgeschaltet JS, nehme ich (meisten) nur insofern Rücksicht, das ich nen Hinweis anzeige, man möge doch bitte sein JS Aktivieren xD


    Deine Lösung ist ein cooles Äquivalent, aber mit JS habe ich halt die Möglichkeit das ganze ohne Seiten-Reload zu machen, was ich immer gerne Versuche ^^


    Nur meine Meinung, schicker Code ;)


    Lg Kanu

  • Meiner Meinung ist es inzwischen auch einfach durchaus 'Vorraussetzung' einer Website das man da mit JS ankommt (nehmen wir mal das Zielgebiet Rentnerwebsite oder Behördenwebsite davon aus).. zumindest was solche Dinge angeht. Website sollte schon ohne funktionieren aber wenn es darum geht über Cookies zu informieren..? Sorry aber klares nein dazu meinerseits :D

  • Hallo cottton mein erstes Posting hier im Forum. Ich wollte kein neues Thema aufmachen, gleichwohl es schon länger zurückliegt. Hoffe es macht nichts. Ich habe deinen großen Beitrag gefunden als ich nach Cookie Disclamer suchte. Wie von dir erwähnt fand ich nur javascript Lösungen. Ich werkle gerade lokal mit xampp an meiner privaten joomla homepage. Leider bin ich zugegebenermaßen kein php-profi aber für joomla reichts, da ja ein fertiges CMS.


    Okay vorab genug geschrieben. Kurzum ich wollte deinen Code abändern, so dass der Cookie Disclaimer gleich beim ersten Aufruf der Seite angezeigt wird. Die cookie_consent.php hab ich ganz oben in die index.php eingebunden mit require.


    Die cookie_consent.php ohne den header Teil ist im gleichen Verzeichnis wie die index.php des Templates:

    <?php

    // cookie settings

    $c_name = 'cookie_consent';

    if(isset($_COOKIE[$c_name ])and $_COOKIE[$c_name ] === 'y'){ unset($c_name ); return; }

    $c_value = 'y';

    $c_expire = time() + 3600 * 24 * 365; // now + sec * hours * days

    $c_path = '/';

    $c_domain = $_SERVER['SERVER_NAME'] === 'localhost' ? null : "." . $_SERVER['SERVER_NAME'];

    $c_secure = (isset($_SERVER['HTTPS'])and !empty($_SERVER['HTTPS']));

    $c_httponly = true;

    // form settings

    $f_button_name = 'consent';

    $f_button_value = 'OK';

    if(isset($_POST[$f_button_name])and $_POST[$f_button_name] === $f_button_value){

    setcookie($c_name, $c_value, $c_expire, $c_path, $c_domain, $c_secure, $c_httponly);

    );

    exit(0);

    }

    ?>


    Und in die index.php den provisorischen Text für den Disclaimer so eingebunden:


    <div id="cookie_message">

    <div class="cookie_leftcontent">

    <?php if($this->language=="de-de")

    echo '<p>Die Website legt bei ihrem Browser Cookies ab. Mit der Nutzung unserer Website erklären Sie sich damitverwenden.</p>';

    elseif($this->language=="en-gb")

    echo '<p>The website places cookies on its browser. By using our website, you agree to use it.</p>'; ?>

    </div>


    <div class="cookie_rightcontent"><a href="/joomla/Datenschutzerklärung">Datenschutzerklärung</a>

    <form action="" method="POST" enctype="application/x-www-form-urlencoded">

    <input type="submit" name="<?php echo htmlspecialchars($f_button_name); ?>" value="<?php echo htmlspecialchars($f_button_value); ?>" />

    </form>

    </div>

    </div>


    Leider erhalte ich die Fehlermeldung schon beim ersten Aufruf. Beim Klick auf den Button OK geht der Disclaimer gar nicht weg und das Cookie wird gar nicht erst abgelegt.

    Code
    1. Notice: Undefined variable: f_button_value in C:\xampp\htdocs\joomla\templates\temps\index.php on line 518

    Kannst du mir bitte weiterhelfen. Geht es technisch so gar nicht und nur mit Weiterleitung wie deine ursprüngliche Lösung? Bitte hab Nachsicht mit mir. Über eine Antwort würde ich mich deshalb sehr freuen. Herzlichen Dank im voraus für deine Mühe.

    Viele Grüße goschby