2016-03-30 18 views
0

私はSET/Get関数とcookieをチェックしています。クッキーに(;)を含めてコンテンツを保存する方法は?

getCookie関数は、( ';')を使用してクッキーを分割します。クッキーによって内部に( ';')あるテキストを保存しない限り正常に動作します。

split関数は、( ';')に基づいてコンテンツを誤って分割します。

これを( '&')のようなものに変更すると、まったく保存されません。

誰でもアイデアを教えてもらえますか?

function setCookie(content, player) { 
 
      var d = new Date(); 
 
      d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000)); 
 
      var expires = "expires=" + d.toUTCString(); 
 
      document.cookie = player + "=" + content + "; " + expires; 
 

 
     } 
 

 
     //check if the coockie with current player name exists 
 
     function checkCookie(player_name) { 
 
      var pnote = getCookie(player_name); 
 
\t \t \t alert(pnote); 
 

 
      var delete_cookie = function (player_name) { 
 
       document.cookie = player_name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
 
      }; 
 

 
      if (pnote != "") { 
 
       
 
       $('#tab' + player_name + ' .nicEdit-main').html(pnote); 
 
      } else { 
 
       if (player_name != "" && player_name != null) { 
 

 
        $('#tab' + player_name + ' .nicEdit-main').prepend("no note"); 
 

 
       } 
 
      } 
 
     } 
 

 
     //Gets the cookie content 
 
     function getCookie(player_name) { 
 
      var name = player_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); 
 
       if (c.indexOf(name) == 0) 
 
        return c.substring(name.length, c.length); 
 
      } 
 
      return ""; 
 
     }

+0

は 'base64_encode'または類似の機能を使用してテキストをエンコード「安全な」文字のみを使用します。 – Mjh

+0

@MjhこれはJSではなくPHPです。 JSの実装のためにこれを読んでください:http://stackoverflow.com/questions/246801/how-can-you-encode-a-string-to-base64-in-javascript –

+0

また、ここでJSONを使用することを検討するかもしれません独自のシリアライゼーションスキームを使用します。 'JSON.stringify'に続いてbase64エンコーディングが動作するはずです。 –

答えて

0

ますsetcookie使用escape関数で:

document.cookie = player + "=" + escape(content) + "; " + expires; 

とgetCookieでunescape関数を使用

return unescape(c.substring(name.length, c.length)); 
関連する問題