• 締切済み

Cookieの保存と読み込み

まずはこちらのコードをご覧下さい。 例1   :   :  (以上のコードは省略) aData = 1; …適当に1を格納 bNo = 1;  …同上 if( setCookie( "a=",aData,"b=",bNo ) ) {   :   :  (処理省略)   : }   :   : //------------------------------------------------------ // cookieの保存 //------------------------------------------------------ function setCookie(theNameA,theValueA,theNameB,theValueB) { eDate = new Date(); eDate.setTime( eDate.getTime()+( eDate * 1000 * 60 * 60 * 24 ) ); eFile = eDate.toGMTString(); document.cookie = theNameA + escape( theValueA ) + ";" + theNameB + escape( theValueB ) + ";expires=" + eFile; return true; } 上記の内容では24時間後期限のCookieを生成しました。 Cookieの中身は a=1↑b=1↑…となっていると思いますが、実際確認したところa↑1b=1↑…になっています。 これを読み出す際(ここでは省略させて頂きます) 「名前=」から「;」の間の文字をロードするので、a=1の1が取り出せなくなっている状態です。 この様な事態に詳しい方、a=1の1が取り出せるよう、例1の書き込む際の問題を教えていただけないでしょうか。お願い致します。

みんなの回答

回答No.2

いけね、前回質問者様の状況が『再現しない』って書くの忘れた。 俺には【ポイントを付けずに】締め切ってくれ。 以後の回答者様へ: 以後の回答は http://oshiete1.goo.ne.jp/qa3075906.html でお願いします

回答No.1

<?xml version="1.0" encoding="Shift_JIS" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>以下のようなサンプルコードを実行してみた。</title> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS" /> <script type="text/javascript"> //------------------------------------------------------ // NG //------------------------------------------------------ function setCookie(theNameA,theValueA,theNameB,theValueB) { var eDate = new Date(); eDate.setTime( eDate.getTime()+( 1000 * 60 * 60 * 24 ) ) ;//乗算の中にeDateを入れるとinvalid Dateという値が入る eFile = eDate.toGMTString(); document.cookie = theNameA + escape( theValueA ) + ";" + theNameB + escape( theValueB ) + ";expires=" + eFile; //IE,Minefield,Opera共に // 一回目で赤に触れると『a = 1』 //緑に触れてから赤に触れると『b = 2;a = 1』(Opera)または『a = 1;b = 2』 alert(document.cookie); return true; } //------------------------------------------------------ // OK //------------------------------------------------------ function setCookie2(theNameA,theValueA,theNameB,theValueB) { var eDate = new Date(); eDate.setTime( eDate.getTime()+( 1000 * 60 * 60 * 24 ) ); //乗算の中にeDateを入れるとinvalid Dateという値が入る eFile = eDate.toGMTString(); document.cookie = theNameA + escape( theValueA ) +";expires=" + eFile; document.cookie = theNameB + escape( theValueB ) +";expires=" + eFile; alert(document.cookie); //IE 7,Minefield,Operaで 常に『a = 1; b = 2』と表示される return true; } </script> </head> <body> <p onclick="setCookie('a=',1,'b=',1);" style="background-color:red;">ほがふげ1</p> <p onclick="setCookie2('a=',1,'b=',2);" style="background-color:green;">ほがふげ2</p> </body> </html>

関連するQ&A

  • Cookieの読み込み

    以下の内容をご覧下さい 例1   :   :  (以上のコードは省略) aData = 1; …適当に1を格納 bNo = 1;  …同上 if( setCookie( \"a\",aData,\"b\",bNo ) ) {   :   :  (処理省略)   : }   :   :  (処理省略)   : data = getCookie( \"a\" );   :   : //------------------------------------------------------ // cookieの保存 //------------------------------------------------------ function setCookie(theNameA,theValueA,theNameB,theValueB) { eDate = new Date(); eDate.setTime( eDate.getTime()+( eDate * 1000 * 60 * 60 * 24 ) ); eFile = eDate.toGMTString(); document.cookie = theNameA + \"=\" + escape( theValueA ) + \";\" + theNameB + escape( theValueB ) + \"=\" + \";expires=\" + eFile; return true; } 上記の内容では24時間後期限のCookieを生成しました。 Cookieの中身は a=1↑b=1↑…となっていると思います。 そして今度はcookieからデータを抜き出すのですが、 //------------------------------------------------------ // cookieの呼び出し //------------------------------------------------------ function getCookie( theName ) { theName += \"=\"; cookie = document.cookie+\";\"; convSfile = cookie.indexOf( theName ); if( convSfile != -1 ) { convEfile = cookie.indexOf(\";\",convSfile); return unescape(cookie.substring(convSfile + theName.length,convEfile)); } return false; } これでデータを抜き出そうとすると、convSfileが-1で帰ってくる 為、falseでdataに帰ってしまいます。この場合、どこに問題があるのでしょうか。ご教授お願い致します。

  • クッキー情報の保存日数

    function setCookie(keyname, val){ var tmp = keyname + "=" + escape(val) + ";"; var gmt = new Date(); gmt.setTime(gmt.getTime() + 9*60*60*1000 + 24*60*60*1000*365); tmp += "expires=" + gmt.toGMTString(); document.cookie = tmp; 上記設定にてクッキーが保存されていますが、1週間もしない内に保存された情報が消えてしまいます。1年以上保存しておきたい場合はどのように設定すればいいのでしょうか?

  • クッキー情報の保存日数

    function setCookie(keyname, val){ var tmp = keyname + "=" + escape(val) + ";"; var gmt = new Date(); gmt.setTime(gmt.getTime() + 9*60*60*1000 + 24*60*60*1000*365); tmp += "expires=" + gmt.toGMTString(); document.cookie = tmp; 上記設定にてクッキーが保存されていますが、1週間もしない内に存された情報が消えてしまいます。1年以上保存しておきたい場合はどのように設定すればいいのでしょうか?

  • Cookieの設定

    JavaScriptでCookieを使ってみようと思い、 以下のようなサンプル関数をもらってきたのですが。 この中の 24 * 60 * 60 * 1000 * 31 * 1 ってそれぞれの数値は何を示しているのでしょうか?? 消去日の設定部分なのは良くわかるのですが。 初歩的な質問で、すいませんが、どなたか教えてください。 ------以下サンプルの関数------ function SetCookie (name,value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } // 消去日の設定は、この関数の中に指定します function set_data(name,put_data) { var expdate = new Date (); expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000 * 31 * 1)); SetCookie (name,put_data,expdate); }

  • Cookie データの消し方がわからない

    次のような関数で、クッキーは設定できます。 function setteiCookie(){ var history="AnythingVeryImportant"; var expiry= new Date(); expiry.setTime( expiry.getTime() + 60*60*1000); window.document.cookie= escape("history=" + history + ";expires=" + expiry.toGMTString() + ";"); } しかし次のような関数ではクッキーデータを消すことができません。 function kesuCookie(){ var history=""; var expiry= new Date(); expiry.setTime( expiry.getTime() - 1000); window.document.cookie= escape("history=" + history + ";expires=" + expiry.toGMTString() + ";"); } どうすれば消すことができるのでしょうか? また、クッキーデータを手で消す方法も教えていただけるとありがたいです。"cookie" を検索して次のようなフォルダーを見つけましたが、自分がクッキーに設定したデータを探すことができませんでした。 c:\Program Files\Netscape\Netscape\chrome\overlayinfo c:\WINDOWS\system32\config\systemprofile どうぞよろしくお願いいたします。 papashiro

  • javascriptでクッキーを書き出しているんですが、確実にクッキー

    javascriptでクッキーを書き出しているんですが、確実にクッキーの値を上書きするにはどうすればいいのでしょうか? 通常では同じkeyがあれば上書きされるはずですよね?それなのに、クッキーの内容を確認すると同じkeyで値が違うものができていて判定ができない状態です。 上書きされないという問題の原因が自分ではわかりません。何か原因があるとすれば解決方法などありますでしょうか? どなたか是非ご教示の程お願いします。 /*クッキー作成の関数*/ function SetCookie(Value){ Expires = new Date(); //日付オブジェクト作成 Expires.setTime(Expires.getTime()+(1000*60*60*24*365)); //デフォルト1年有効 Expires = "expires=" + Expires.toGMTString(); //クッキーの有効期限を作成 SetData = "Area=" + escape(Value) + ";"; //クッキー名=値 を作成 document.cookie = SetData + Expires + ";domain=123456789;path=/;"; //クッキー発行 }

  • Cookieの保存について

    Cookieの保存をするのに、 setcookie() を使っているのですが、setcookie()を実行したページ内で、var_dump($_COOKIE); で調べると保存されているのですが、違うページに移動すると、なぜか前のページで保存したCookieが消えてしまいます。 なぜでしょうか? 行程は、次のようにやっています。 ページA setcookie("A","1",time()+3600*24*30); var_dump($_COOKIE); 結果  array(3) { ["A"]=> string(1) "1" ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } ページBへ移動 var_dump($_COOKIE); 結果  array(2) { ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } よろしくお願いします。 環境:PHP4.4.1+Apache2.0+Windows2003(SP1)+IE6(SP1)

    • ベストアンサー
    • PHP
  • サイト訪問者に対して1度だけ実行したい

    サイト訪問者に対してあるJavaScriptを1度だけ実行したいのですがよい方法はないでしょうか? 下記コードのようにクッキーを利用して初めての訪問者に対してメッセージを表示させるコードを利用して初めての訪問者に対してJavaScriptを実行させるようにはできないでしょうか? <script language="JavaScript"><!-- var key="freekeyword"; var n=getCookie(key); if(n=="") { alert("はじめまして!\nようこそ"); }else{ alert("\n"+n+"回目の訪問ありがとうございます"); } n++; setCookie(key,n); function getCookie(key) { var s,e; var c=document.cookie+";"; var b=c.indexOf(key,0); if(b!=-1) { c=c.substring(b,c.length); s=c.indexOf("=",0)+1 e=c.indexOf(";",s); return(unescape(c.substring(s,e))); } return(""); } function setCookie(key,n) { var myDate=new Date(); myDate.setTime(myDate.getTime()+6*30*24*60*60*1000); document.cookie=" "+key+"="+escape(n)+"; expires="+myDate.toGMTString(); } // --></script>

  • cookieによる制限の件で

    function getExpires(dd){ var now = new Date(); var expires = new Date(now.getTime()+24*60*60*1000*dd); return(expires.toGMTString()); } function setCookie(key, value, limit){ var cValue = key + "=" + escape(value) + "END;expires=" + getExpires(limit) + ";"; document.cookie = cValue; } function getCookie(key){ var cValue = document.cookie; var sIndex= cValue.indexOf(key,0); if(sIndex > -1){ sIndex = cValue.indexOf("=", sIndex) + 1; eIndex = cValue.indexOf("END", sIndex); return unescape(cValue.substring(sIndex, eIndex)); }else{ return ""; } } var value = getCookie("visitCnt"); var cnt = 1; if(value >= 6){ location.href="http://yahoo.co.jp"; } if(value == ""){ document.write(""); }else{ cnt = parseInt(value) + 1; document.write(""); } setCookie("visitCnt", cnt, 365*2); 以上のソースで、6回目の訪問でyahooへ飛ぶようには出来たのですが、 これだと、設置したページへ6回訪問で、となってしまうのですが、 サイト自体への6回目のアクセスで、というふうに、ページ自体にこだわらずへの設定はどう記載すれば、よろしいでしょうか?? よろしくお願いいたします。

  • Cookieが消える?

    こんにちは 自作のWebページを作成したのですが 画面遷移を繰り返しているとCookieが 消えることがあるのです。 こういうことってあるのでしょうか? 環境は以下の通りです。 OS:Win2000,XP Pro ブラウザ:IE 6.0 Cookie書込み:javascript setCookie("bbb","hammy") function setCookie(key, val, tmp) { tmp = key + "=" + escape(val) + "; "; tmp += "path=/aaa/;"; tmp += "expires=Tue, 31-Dec-2030 23:59:59; "; document.cookie = tmp; } Cookie読込み:javascript function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) { tmp1 = " " + document.cookie + ";"; xx1 = xx2 = 0; len = tmp1.length; while (xx1 < len) { xx2 = tmp1.indexOf(";", xx1); tmp2 = tmp1.substring(xx1 + 1, xx2); xx3 = tmp2.indexOf("="); if (tmp2.substring(0, xx3) == key) { return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1))); } xx1 = xx2 + 1; } return(""); } Cookie削除 javascript delCookies("CCC") function delCookies(key) { tmp = key; tmp += "=;path=/aaa/;"; tmp += "expires=Thu,01-Jan-2000 00:00:01 GMT"; document.cookie = tmp; } 画面遷移 A画面でCookie書込み⇒B画面でCookie情報を読込み ⇒C画面でCookie情報を読込み 現象:C画面でCookieが読込めない。 備考:C画面では読込みの前に別のCookieを削除しています。 B画面ではCookieの有無をチェックしているだけです。 何か疑問に思えることがありましたら教えてください。