2011-09-13 13 views
5

現在、PHPまたはJavaScriptを使用してクッキーを読み取ろうとする際に、いくつかの問題が発生しています。私が使って試してみました:iPad上でPHPまたはJavascriptでクッキーを読み取ることができません

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

そして、私が試してみました:

(jquery.cookieプラグインを使用して)
if(
$.cookie('popup_closed') == null 
&& $.cookie('username') == null 
&& $.cookie('password') == null) { 
doStuff(); 
} 

そして、それらのどちらもiPadで動作します。それはすべてのブラウザ上でうまく動作します、私は問題をグーグルで試してみましたが、そこではdosen'tはiPad上のクッキーを読むことに関する多くの情報であるようです。

お手数をおかけしていただきありがとうございます。

+0

Safari(MacまたはPC)でコードが正常に機能していますか?それはiPad上で同じように動作するはずです。 – haynar

+0

それは確かにあります。また、iPad上でCookieも有効になっています。 –

+0

残念ながら私はそれがうまくいかない理由は知らないが、しばらく前に私はすべてのSafariバージョン(Mac、PC、iPadなど)のクッキーに関する問題を抱えていた。これはSafariの組み込みの制限です(Safariは、ユーザーが明示的にWebページとやりとりしない限り、サードパーティのサイトからのCookieを受け入れません)。たぶんあなたはiframeからのクッキーを使用しようとしていますか? – haynar

答えて

7

これは実際には回避策ですが、使用可能な場合はローカルストレージを使用することができます - 少なくともiPad/iPhoneで使用しました。

たとえば、この種のソリューションを使用します。

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

実際これはかなり気の利いた回避策です。+1 – Aidiakapi

+0

こんにちはマーカス、ありがとう!私は次の火曜日にそれが私が問題のサイトで働いている日であるかどうかを確認します。火曜日にあなたの答えを受け入れるでしょう:)再びありがとう。 –

+0

こんにちは、いいえ、問題は、ソリューションを聞いて良いあなたに便利だった! – Marcus

0

setcookieについてはmanualをご覧ください。すべての変数を使用する必要があります。これは、JSを使用してCookieにアクセスできないという事実を解決するかもしれませんか?また、ネイティブJSを使用して(jQueryの代わりに)クッキーにアクセスすると、それは機能しませんか?

関連する問題