2011-09-13 8 views
5

Attualmente sto riscontrando alcuni problemi durante il tentativo di leggere i cookie utilizzando PHP o Javascript. Ho provato con:Non riesco a leggere i cookie tramite PHP o Javascript quando su un iPad

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

E ho provato:

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

(Usando il plugin jquery.cookie)

E nessuno di loro lavorano su iPad. Funziona bene su tutti i browser, ho provato a cercare su Google il problema ma non sembra che ci siano molte informazioni sulla lettura dei cookie su un iPad.

Grazie per l'aiuto che puoi dare!

+0

Il tuo codice funziona correttamente su Safary (su Mac o PC)? Dovrebbe funzionare in modo identico su iPad. – haynar

+0

Lo fa davvero. E i cookie sono attivati ​​anche sull'iPad. –

+0

sfortunatamente non ho idea del perché non funzioni, ma qualche tempo fa avevo problemi relativi ai cookie su tutte le versioni di Safari (Mac, PC, iPad ecc.). Era la restrizione integrata di Safari (Safari non accetta i cookie da siti di terze parti a meno che l'utente non abbia esplicitamente interagito con la pagina web). Forse stai cercando di usare i cookie di iframe? – haynar

risposta

7

Questa soluzione è davvero una soluzione, ma è possibile utilizzare la memoria locale se disponibile, almeno così l'ho utilizzata in iPad/iPhone.

Ad esempio con questo tipo di soluzione.

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

In realtà si tratta di una soluzione abbastanza ingegnosa, +1 – Aidiakapi

+0

Ciao Marcus, grazie per questo! Vedrò se funzionerà martedì prossimo dato che è il giorno in cui lavoro sul sito in questione. Accetterò la tua risposta martedì se funziona :) Grazie ancora. –

+0

Ciao, nessun problema, bello sapere che la soluzione è stata utile per te! – Marcus

0

Avere si dà un'occhiata al manual quanto riguarda setcookie? Dovresti usare tutte le variabili, forse questo risolve il fatto che non puoi accedere ai tuoi cookie con JS? Inoltre, l'utilizzo di JS nativo per accedere ai cookie (invece di jQuery), non funziona?

Problemi correlati