2011-09-13 9 views
5

Mam obecnie kilka problemów podczas próby odczytu plików cookie za pomocą PHP lub JavaScript. Próbowałem, używając:Nie można odczytać plików cookie za pośrednictwem PHP lub JavaScript, gdy na iPadzie

if(!$_COOKIE['popup_closed'] 
&& !isset($_COOKIE['username']) 
&& !isset($_COOKIE['password']) 
) 

i próbowałem:

if(
$.cookie('popup_closed') == null 
&& $.cookie('username') == null 
&& $.cookie('password') == null) { 
doStuff(); 
} 

(Używanie wtyczki jquery.cookie)

i żaden z nich nie działa na iPadzie. Działa dobrze na wszystkich przeglądarkach. Próbowałem go zagłębić, ale wydaje mi się, że nie ma wielu informacji na temat odczytywania plików cookie na iPadzie.

Dzięki za pomoc, jaką możesz dać!

+0

Czy Twój kod działa prawidłowo na urządzeniu Safary (na komputerze Mac lub PC)? Powinien działać identycznie na iPadzie. – haynar

+0

Rzeczywiście. Pliki cookie są również włączone na iPadzie. –

+0

Niestety nie mam pojęcia, dlaczego to nie działa, ale jakiś czas temu miałem problem związany z plikami cookie we wszystkich wersjach Safari (Mac, PC, iPad itp.). To było wbudowane ograniczenie Safari (Safari nie akceptuje plików cookie z witryn stron trzecich, chyba że użytkownik jawnie wchodził w interakcję ze stroną internetową). Może próbujesz używać plików cookie z elementu iframe? – haynar

Odpowiedz

7

To jest naprawdę obejście problemu, ale można użyć lokalnego magazynu, jeśli jest dostępny - przynajmniej użyłem go z powodzeniem na iPadzie/iPhonie.

Na przykład z tego rodzaju rozwiązaniem.

function saveData(name, value) { 
    if (typeof(localStorage) != 'undefined') { 
     localStorage.setItem(name, value); 
    } else { 
     createCookie(name, value, 7); 
    } 
} 

function loadData(name) { 
    var temp_value = ''; 

    if (typeof(localStorage) != 'undefined') { 
     temp_value = localStorage.getItem(name); 
    } else { 
     temp_value = readCookie(name); 
    } 

    return temp_value; 
} 

function eraseData(name) { 
    if (typeof(localStorage) != 'undefined') { 
     localStorage.removeItem(name); 
    } else { 
     eraseCookie(name); 
    } 

} 

function createCookie(name,value,days) { 
    var expires = ""; 

    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     expires = "; expires=" + date.toGMTString(); 
    } 
    else { 
     expires = ""; 
    } 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') { 
      c = c.substring(1,c.length); 
     } 
     if (c.indexOf(nameEQ) === 0) { 
      return c.substring(nameEQ.length, c.length); 
     } 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 
+1

W rzeczywistości jest to całkiem sprytne rozwiązanie, +1 – Aidiakapi

+0

Cześć Marcus, dziękuję za to! Zobaczę, czy zadziała w następny wtorek, ponieważ jest to dzień, w którym pracuję w danej witrynie. Przyjmę twoją odpowiedź we wtorek, jeśli zadziała :) Jeszcze raz dziękuję. –

+0

Witam, nie ma problemu, dobrze jest usłyszeć, że rozwiązanie było dla ciebie przydatne! – Marcus

0

Czy obejrzałeś manual odnośnie zestawu do gry? Powinieneś użyć wszystkich zmiennych, może to rozwiązuje fakt, że nie możesz uzyskać dostępu do plików cookie za pomocą JS? Ponadto, używając natywnego JS w celu uzyskania dostępu do plików cookie (zamiast jQuery), to nie działa?

Powiązane problemy