New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Serverseitige Möglichkeit auf Cookie-Zustimmung zu prüfen #124
Comments
Du kannst über das PS: Die |
Gute Idee, dann versuche ich das mal mit dem CookieLogModel. PS: Oh, dann habe ich da vielleicht gerade einfach etwas verwechselt :D |
@doishub Wenn ich das richtig verstehe, dann müsste ich in diesem Fall über folgende Methode gehen: Nun meine Frage bezüglich der Anonymisierung: Bei der Cookiebar wird ja das letzte Oktett der IPv4 Adresse maskiert. Edit, ich ziehe die Frage, wie an die IP gekommen wird zurück. $strIp = $ip ?? Environment::get('ip');
if(System::getContainer()->getParameter('contao_cookiebar.anonymize_ip'))
{
$strIp = IpUtils::anonymize($strIp);
} |
Ich bin mir unsicher, ob das ein so guter Weg ist. Ich denke, damit könntest du schon zum Ziel kommen, je nachdem, was genau deine Anforderungen sind und wann du die Informationen serverseitig abfragst. Solltest du den Besucher direkt nach dem Akzeptieren identifizieren wollen, wird es womöglich gehen. Wenn du deinen use-case beschreibst, findet man ggf. eine bessere Lösung, wenn es allerdings so für deine Zwecke ausreicht - umso besser 😉 |
@doishub Ja, da mache ich mir gerade auch meine Gedanken. Also kurz zum Use-Case: Dies wäre eigentlich über Javascript super einfach und hatte ich bereits so implementiert. Beim dynamischen Nachladen via Javascript passiert dann folgendes:
Daraus folgt, dass dann nur noch das externe Javascript Tool auf der Seite ausgegeben wird. Hätte ich eine Möglichkeit das ganze serverseitige zu prüfen, könnte ich es so implementieren, dass die Funktionalität noch während des Streamaufbaus aufgerufen wird und diesen Stream dann nicht überschreibt. Ich hoffe das war einigermaßen verständlich. |
Ich denke du solltest lieber das client seitige Problem lösen. |
Also ein anderes Tool verwenden oder gibt es noch andere Möglichkeiten? |
Ich hatte auch bereits mit Widgets zu kämpfen (von Verkehrsnetzen o.ä.) und hatte ein ähnliches Problem. Das Widget wollte sich einfach nicht nachladen lassen, weswegen ich einen kleinen Umweg gegangen bin. Ich habe mir einfach einen neuen iFrame-Typen erzeugt und eine leere Seite angelegt, wo ausschließlich das Skript des Drittanbieters lag. Diese habe ich dann wie YouTube und andere iFrames behandelt und über die Cookiebar geblockt. Vielleicht kannst du es auch so machen. |
Ist ja lustig, genau das gleiche hatte ich quasi auch als "Notlösung" gemacht :D |
Nein, analysieren was genau das Problem mit dem Script ist. |
Naja das Problem ist, dass die Cookies abgefragt werden und dann, wenn die Zustimmung vorliegt, das Script geladen wird. Einzige Lösung an dieser Stelle wäre dann, dass man es irgendwie schafft, dass das Script vor dem fertigstellen des Dokument-Streams geladen wird. Oder übersehe ich etwas? Aber das wirkt z.B recht schwierig, wenn man es dynamisch auf der Seite nachladen will. |
Wie bindest du das Script ein? |
Generell gibt es für JavaScripts, die (leider) |
@fritzmg Das ist ja mal stark, wusste ich gar nicht. Vielen lieben Dank für den Input :) |
Sorry, den vorherigen Kommentar übersehen. <script>
document.addEventListener("DOMContentLoaded", function() {
cookiebar.addModule(18, function(){
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://widget.simplybook.it/v2/widget/widget.js';
script.onload = initialize;
document.getElementById('simplybooktool').append(script);
document.getElementById('simplybooktool').classList.remove('blockedScreen');
}, {
selector: '#simplybooktool',
message: 'Durch einen Klick können Sie das Laden von SimplyBook ermöglichen.',
button: {
show: true,
text: 'Laden',
type: 'button',
classes: 'button'
}
});
});
</script> <div style="width: 500px; height: 500px;" id="simplybooktool" class="block blockedScreen">
</div>
<script>
function initialize() {
var widget = new SimplybookWidget('Hier sind dann die Daten für das Widget drin');
}
</script> |
Ja, das ist wirklich nicht die beste Lösung. 😀 |
@doishub Hey, ich wollte mich nochmal melden, da dir die Erkenntnisse ja auch wichtig waren. <script>
document.addEventListener("DOMContentLoaded", function() {
cookiebar.addModule(18, function() {
const simplybooktool = document.querySelector('#simplybooktool');
simplybooktool.classList.remove('blockedScreen');
postscribe('#simplybooktool', '<script src=//widget.simplybook.it/v2/widget/widget.js><\/script>');
postscribe('#simplybooktool', '<script>var widget = new SimplybookWidget('Hier sind dann die Daten für das Widget drin');<\/script>');
}, {
selector: '#simplybooktool',
message: 'Durch einen Klick können Sie das Laden von SimplyBook ermöglichen.',
button: {
show: true,
text: 'Laden',
type: 'button',
classes: 'my-btn'
}
});
});
</script> Nun wird es nur nachgeladen, wenn der Cookie akzeptiert wurde und überschreibt mir nicht mehr meinen Dokument-Stream. |
Danke fürs Teilen :) |
Hallo,
gibt es eine Möglichkeit die Cookie-Zustimmung über PHP zu erfragen?
Die Seite lasse ich nach jeder Änderung an den Cookies reloaden, da ich bereits die addModule - Methode verwende.
Nun benötige ich aber noch eine Möglichkeit, irgendwie via PHP auf die Cookie-Zustimmung zu prüfen.
Besteht eine solche Möglichkeit?
Vielen Dank bereits für die Mühe!
The text was updated successfully, but these errors were encountered: