Versteht hier jemand das iPhone? (update2: fixed!)
Montag, 22.4.2019, 10:29 > daMaxKann mir mal jemand sagen, warum diese Cookie-Meldung
auf dem iPhone immer wieder kommt? Also auch, nachdem man "Cool, her damit!" geklickt hat und sich dann z.B. einen anderen Artikel anzeigen lässt? Das Javascript dazu sieht so aus:
Update: des Rätsels Lösung war mal wieder... JavaScript!
function checkCookieBar() {
var cp = document.getElementById("cookiepolicy");
if (getCookie("todamax_cookie_consent") === "true") {
cp.style.display = "none";
}
}
function hideCookieBar() {
var cp = document.getElementById("cookiepolicy");
cp.style.display = "none";
setCookie("todamax_cookie_consent", true, 356);
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays2460601000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
Aufgerufen wird checkCookieBar(), das wiederum getCookie("todamax_cookie_consent") aufruft und überprüft, ob dieser Cookie schon gesetzt wurde. Der wird gesetzt, wenn man "Cool, her damit" anklickt.
Das funktioniert auf sämtlichen Betriebssystemen und Browsern auch ohne Probleme, nur das iPhone zickt rum. Warum?
Update: hm.... ein Klick auf den Link da oben zeigt auf "normalen" Geräten alle Cookies, die hier so gesetzt werden, aufm iPhone aber nur den PHPSESSIONID Cookie. Offenbar wird der todamax_cookie_consent-Cookie nicht gesetzt. Warum?
Update 2: okay, ich habe das Problem gefunden. Es gab die Funktion setCookie zweimal! Zum einen in der jsfunctions.js von meinem Theme und dann noch mal in dem Pro-Adblock-Plugin. Beide hatten einen falschen expires-String erzeugt, weil ein Leerzeichen gefehlt hatte, deshalb wurde expires nie korrekt gesetzt. Ich habe jetzt sämliche Funktionen korrigiert und umbenannt und schon klappt es auch mit dem iPhone.
Hallo und schön das du wieder da bist
mir scheint alles o.k., es liegt vielleicht daran, dass der iPhone Browser das script nicht interpretieren kann oder es gibt einen scriptblocker ?
Test mit Operabrowser, uBlock origin (default) und ScriptSafe:
Die cookie-Meldung verschwindet nicht und so sollte es sein.
Ich schalte ScriptSafe frei und alles ist gut.
Test mit Firefox, uBlock origin (default) und NoScript:
Trotz NoScript an wird das script interpretiert, so sollte es natürlich nicht sein, das ist mir ein Ungeheuer und für das mampfmampf gilt das gleiche.
Nein ich mag kein javascript aber ich hätte noch eins, das den I.E. crashen läßt und in allen anderen Browsern eine schöne runde Uhr mit Sekundenzeiger anzeigt.
@operatester:
sorry, vergiss den Müll mit Firefox, da war NoScript versehentlich global augeschaltet. Das funzt jetzt wieder wie bestellt. Bleibt wohl nur mal einen Alternativbrowser aufs iPhone zu hauen und zu schauen, ob der das script interpretieren kann.
@operatester: ich habe aufm eiPhone Safari und Brave, beide zeigen die Meldung leider ständig. Leider kann ich das weder debuggen, noch kann ich sehen, welche Cookies gesetzt sind
Und es liegt ja nicht generell an Scripten, denn Wurli (mampfmampf) läuft ja. Nur scheint es irgendwie Probleme mit dem Auswerten des Cookies zu geben. Oder so.
Apple ist manchmal recht eigenwillig darin, Datenschutz-Maßnahmen in ihrem Browser zu implementieren. Vielleicht ist das eine davon: Dass der Browser Cookies nur per Whitelisting akzeptiert, die meisten Cookies jedoch sofort wegwirft oder gar nicht annimmt.
Was mir auffällt ist, dass du document.cookie komplett dekodierst. Ich mach das in meinen Funktionen nur mit den Werten. um einen benamten Wert zu bekommen sieht meine Funktion so aus (der reguläre Ausdruck ist nicht von mir) vieleicht hilfts.
var decoder = window.decodeURIComponent || window.unescape;
function getCookie(cname) {
var match = document.cookie.match(
new RegExp("(?:^|;\\s*)" + cname + "=([^;]*?)(?:\\s*(?:$|;))")
);
return match && decoder(match[1]);
}
@Struppi: hm... das kann ich gerne mal ausprobieren, aber es bleibt doch dabei, dass ein Klick auf "SHOW COOKIES" auf dem iPhone nur den PHPSESSIONCOOKIE ausgibt, selbst wenn man auf "Her damit" geklickt hat. Für mich sieht das immer noch so aus, als würde der Cookie nie gesetzt werden
Nicht, dass es einfach nur damit zusammenhängt, dass Safari eh findet, dass die Seite unsicher wäre?
@Eike: nee, das wiederum hat mit fehlendem SSL-Zertifikat zu tun