• ベストアンサー

クッキーが消せない

下記のDelcookieを呼び出してクッキーを削除したのですがdocument.write(document.cookie);で見ると0421066NQ=Tdoprzahdoqekdnaaac&04aaacと表示されてクッキーが消せません。 スクリプトでクッキーを消すにはどうすれば良いのでしょう? function Delcookie(){ if(document.cookie==""){ alert("このサーバによるCookieはありません。") }else{ tmp=document.cookie.split(";");     dTime = new Date();      dTime.setYear(dTime.getYear() - 1); for(i=0;i<tmp.length;i++){ temp1=tmp[i].split("=")[0]; document.cookie=temp1+"=;expires=" + dTime.toGMTString(); } alert("このサーバによるCookieを削除しました。"); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • fukku22
  • ベストアンサー率57% (15/26)
回答No.2

add=住所;name=ポチ;0421066NQ=Tdoprzahdoqekdnaaac&04aaac とクッキーに書き込んで、上記の Delcookie() を試したところ、きれいに消えましたが・・。 (ブラウザは WinXP + IE 6.0) 少し気になるのは、クッキーの書き込みは escape でエスケープしていますか? 書き込み時は escape 、読み込み時は unescape しないと、 名前や値に「;」が含まれている場合に不具合が発生しやすく、 クッキーに削除できないゴミが残ってしまう場合があります。 (2バイト文字の中に特殊なコードが含まれていてバグになる場合も・・?) 関係ないかもしれませんが、参考まで。

meikenpochi
質問者

お礼

回答ありがとうございます。 書き込み時のescapeと読み込み時のunescapeは実行しています。 >クッキーに削除できないゴミが残ってしまう場合があります。 ゴミを消すには、IEのツール→オプション→Cookieの削除しか方法がないのでしょうか?

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

クッキーは、クッキーの期限を現在時より前にして削除するのですが、時刻を設定しただけでは、削除されません。 実際に消されるのは ブラウザ終了時(次の起動時?)です。 一度ブラウザを終了して、起動したら消えているはず。

meikenpochi
質問者

補足

BLUEPIXYさん回答ありがとうございます。 ちょっと説明不足だったので補足させていただきます。 現象としては add=住所;name=ポチ;0421066NQ=Tdoprzahdoqekdnaaac&04aaac とクッキーに書き込まれている状態でfunction Delcookie()を呼び出すとクッキーが部分的に削除されて0421066NQ=Tdoprzahdoqekdnaaac&04aaacだけがクッキーに残ってしまっているのです。 ちなみにサーバーにアップしてるのではなくホームページビルダーのプレビュー画面で発行したクッキーです。

関連するQ&A

  • javascriptでcookieを削除するには

    以下のようにjavascriptでcookieを削除できると 思いますが、この方法だと IE以外のブラウザは削除できてないようです。 FIREFOXとOPERAは削除できませんでした。 javascriptでFIREFOXとOPERAでもクッキーが削除 できるような方法がありましたらご教授願います cName = "○○○○="; // 削除するクッキー名 dTime = new Date(); dTime.setYear(dTime.getYear() - 1); document.cookie = cName + ";expires=" + dTime.toGMTString();

  • Macでクッキーが呼び出せない

    以下のような遷移を作っております。 ・HtmlファイルにJavaScriptでクッキーを以下のように書き込む。 var no = '01010088'; var img_url = '../01010088i.gif'; var url= '../01010088.html'; var itemname= '日本語商品名'; var price = '7,960'; var souryou = '1';//有料の場合は1 無料の場合は0 setCookie(no,img_url +':' + url + ':' + itemname + ':' + price + ':'+ souryou +':'+ exp2 + ':',exp,limit); function setCookie(key,val,val_exp,val_limit) { tmp = key + "=" + escape(val) + "; "; tmp += "path=/ ;"; if(limit > 0){tmp += "expires= " + val_exp.toGMTString(); + "; ";} document.cookie = tmp; } ・CGIでクッキーを呼び出す。その際UTF-16をデコード処理してSjisにしております。 #クッキーの取得 &getCookieName(); ここにデコード処理を書いております。多いので割愛 sub getCookieName { local($xx, $name, $value); foreach $xx (split(/; */, $ENV{'HTTP_COOKIE'})) { ($name, $value) = split(/=/, $xx); $pure_value = $value; $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; $COOKIE{$name} = $value; push @COOKIE,"$name:$value$pure_value:\n"; } } で実際Windowsで閲覧するとクッキー情報が正常に出力されるのですが、Mac、自社サーバーにアップしたページを見るとOKなのですがあるレンタルサーバーに同じものをアップしてみるとだめなのです。 あいまいな表現ですが、なにかこれだけの情報でなにが原因か事例がありますか? もし不足な情報ならご指示ください。

    • ベストアンサー
    • CGI
  • クッキー情報の保存日数

    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年以上保存しておきたい場合はどのように設定すればいいのでしょうか?

  • クッキーのデータ取得

    perlでのクッキーのデータ取得の方法について、ご質問です。 まず、同一のサイトから取得した、クッキーのパスは、/の、Aというクッキーと、Bというクッキーが存在して、 Aというクッキーのコンテンツのみを、 取得したいのですが、可能なのでしょうか? 下記のスクリプトに追加すると、 どういった形式になるのでしょうか? どなたかご教授いただけますでしょうか? よろしくお願いいたします。 &splt; sub splt { @cookdata = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $tmp (@cookdata) { ($youso,$atai) = split(/=/,$tmp); $youso =~ s/ //; $COOKIE{$youso} = $atai; } }

    • ベストアンサー
    • CGI
  • フォームの内容をクッキーに保存する

    IDをフォームに記入してクッキーに保存し、別ページで使用しようとしています。 フォームに入力してsubmit(onclickでCookieに保存)しようとすると、 1回遅れでCookieに保存されます。 (前々回保存した内容がCookieに保存される) POSTを変数に入れる順番がおかしいのでしょうか? ご教示お願い致します。 以下ソースです。 setid.php <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> <!-- // Cookie設定 // Cookie送信function function setCookie(key,val,url){ tmp = key+"="+escape(val)+";"; tmp += "expires=Fri, 31-Dec-2030 23:59:59;"; if(url){ tmp += "domain="+getDomain(url)+";"; tmp += "path="+getDomainPath(url)+";"; } document.cookie = tmp; location.reload(true); }; // Cookie削除function function delCookie(key){ expiredate = new Date(); expiredate.setYear(expiredate.getYear()-1); tmp = key+"=;"; tmp += "expires="+expiredate.toGMTString(); document.cookie = tmp; }; // Cookie削除(削除ボタン用) function del_cookie_id(){ delCookie("testid"); location.reload(true); } //--> </script> </head> <body> <center> <!-- ID入力フォーム --> <?php // Cookie読込み-ID $testid=$_COOKIE["testid"]; ?> <form action="setid.php" method="post"> <input type="text" name="testid" size="20" value="<?php echo $testid; ?>"> <!-- ID保存ボタン --> <?php $testid=$_POST["testid"]; ?> <input type="submit" name="set_id" value="IDを保存" onclick="setCookie('testid','<?php echo $testid; ?>');"> <!-- ID削除ボタン --> <input type="submit" name="del_id" value="IDを削除" onclick="del_cookie_id()"> </form> <br> <!-- Cookie表示 --> <?php print_r($_COOKIE); ?> <br> </body> </html>

    • ベストアンサー
    • PHP
  • JavaScriptによるクッキーの書込みについて

    JavaScriptによるCookieの書込みで以下のようにhtmlにはりつけているのですが、どうしてもpath=/が有効になりません。 書き込まれたクッキーをみるとクッキーを書き込むディレクトリになってしまいます。 <script type="text/javascript"> <!-- var limit = 1; //有効期限日数をいれる exp=new Date(); exp.setTime(exp.getTime()+1000*60*60*24*limit); var no = '01010088'; var img_url = './0101/img/0088/01010088i.gif' var url= './0101/01010088.html'; var itemname= '遠赤外線セラミックの竈(かまど)炊き風炊飯鍋と御櫃(おひつ)セット'; var price = '7960'; var souryou = '700'; setCookie(no,'img:' + img_url +',url:' + url + ',itemname:' + itemname + ',price:' + price + ',souryou:'+ souryou +',',exp); function setCookie(key, val, val_exp,tmp) { tmp = key + "=" + escape(val) + "; "; tmp += "expires= " + val_exp.toGMTString(); + "; "; tmp += "path=/;"; document.cookie = tmp; } // --> </script> 書籍をいろいろみたのですがクッキーについて詳しくかいているのがあまりなくて・・・ ご教授お願いします。

  • フォーム内容を上から順番にJavaScriptでCookieに入れて、また戻す方法

    フォームにかかれている内容を上から順番にCookieに入れて 次にそのページに来たときに読みこれるようにしたいのですが、わからなくなってしまいました。 まず下記でJavaScriptに値を渡します。 onClick="saveCookie(this.form.elements[0].value,this.form.elements[1].value,this.form.elements[2].value) 次にJavaScriptで処理します。 ----------------------------------------------- xDay = new Date; xDay.setYear(xDay.getYear() + 1); xDay = xDay.toGMTString(); cook = new Array(); function saveCookie(value01,value02,value03){ cook[0] = value01; cook[1] = value02; cook[2] = value03; cooks = escape(cook[0]); i = 1; while (cook[i]){ cooks += "%00" + escape(cook[i]); i++; } document.cookie = "fat_cookie=" + cooks + "; expires=" + xDay; } function loadCookie(){ cooklng = document.cookie.length; cook = document.cookie.split("; "); cooks = ""; i = 0; while (cook[i]){ if (cook[i].substr(0,11) == "fat_cookie="){ cooks = cook[i].substr(11,cook[i].length); break; } i++; } cook = cooks.split("%00"); ??? = unescape(cook[0]); ←ここがわかりません。 } window.onload=loadCookie; ----------------------------------------------- Cookieに保存して、またバラバラにするところまでは出来たのですが 最後にフォームに戻すところでわからなくなってしまいました。 色々試したのですがうまくいきません。 どなたかわかる方いらっしゃいましたら、 よろしくお願いします。

  • 外部からgetされた内容をクッキーに書き込みたい

    お世話になります。 外部URLからgetされる内容をCookieに書き込んで利用したいのですが、うまくいきません。 外部から送られてくる内容は以下のものです。 <form method="get" action="https://www.xxxxxxxx/kiyaku.html" target="_blank"> <input type="hidden" name="id_agency" value="00000000"> <input type="image" name="submit" src="images/b.gif"> </form> 読み書き用のjavascriptとして、以下のものを作ってみました。 cookie.js ckary = new Array(); //setcookie ここから function setck(){ ckary[0] = document.forms[0].id_agency.value; exp=new Date(); exp.setTime(exp.getTime()+1000*60*60*24*60); ckstr = escape(ckary[0]); i = 1; while (ckary[i]){ ckstr += "%00" + escape(ckary[i]); i++; } document.cookie = "XX_Agency=" + ckstr + "; expires=" + exp.toGMTString(); } //setcookie ここまで //getcookie ここから function getck(){ cklng = document.cookie.length; ckary = document.cookie.split("; "); ckstr = ""; i = 0; while (ckary[i]){ if (ckary[i].substr(0,10) == "XX_Agency="){ ckstr = ckary[i].substr(10,ckary[i].length); break; } i++; } ckary = ckstr.split("%00"); if (ckary[0]) document.forms[0].id_agency.value = unescape(ckary[0]); } //getcookie ここまで javascriptはあまりわかりませんので、本を引きながら作っています。どなたか、指摘お願いします。

  • 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=/;"; //クッキー発行 }

専門家に質問してみよう