• ベストアンサー

Cookieにデータを保存したいんですが・・・

JavaScriptを使ってホームページの色をカスタマイズできるようにしたいと思っています。 カラーダイアログから色を選んで、その色を保存したいと考えているのですが、更新するたびに今のままでは色が元に戻ってしまうので、選んだ色を保存できるようにしたいのです。 使用しているのはjspです。 javaScriptの中にjspが埋め込めないので色情報がDBに保存できません。 CookieでScriptの情報を保存できるというのを聞いたのですが、保存の仕方が分かりません。 どなたかよい方法ご存知ではないでしょうか?

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

  • ベストアンサー
回答No.2

基本的にはとほほを見て勉強したほうがいいと思いますけど、私がいつも使っている関数もはっておきます。 /** * 指定されたキーのcookie値を取得する */ function getCookie(key) { cookieValues = document.cookie; if (cookieValues.length < 3) { return(""); } cookieValue = new Array(); cookieValue = cookieValues.split("; "); if (cookieValue.length < 1) { return(""); } len = cookieValue.length; for (i = 0; i < len; i++) { cookieVal = new Array(); cookieVal = cookieValue[i].split("="); if (cookieVal[0] == key) { return(cookieVal[1]); } } return(""); } /** * cookieに値をセットする * (path指定が無いので同一ディレクトリにのみ値を渡す) */ function setCookie(key, val) { tmp = key + "=" + val + "; "; tmp = tmp + "expires=Fri, 31-Dec-2030 23:59:59; "; document.cookie = tmp; } /** * 指定されたキーのcookie値をクリアする */ function clearCookie(key) { document.cookie = key + "=xx; expires=1-Jan-1997 00:00:00;"; }

LittleCub
質問者

お礼

回答ありがとうございます。 さっそく試してみたいと思います。 まだまだScriptに関しての知識など初心者なのでCookie自体ももう少し深く理解したいと思います。 ぜひ参考にさせていただきます!

その他の回答 (1)

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

参考URLが参考になるかも

参考URL:
http://www.tohoho-web.com/wwwcook.htm
LittleCub
質問者

お礼

ありがとうございます。 さっそく参考にさせていただきました。

関連するQ&A

  • cookieを設定

    Webブラウザが情報を保存する機能としてcookieがありますが、 JavaScriptでcookieを設定する方法と、 CGIがHTTPヘッダに「Set-Cookie」を含めてcookieを設定する方法が あるかと思います。 JavaScriptとCGIで設定する2つの方法のそれぞれのメリットは なんでしょうか? つまり、 JavaScriptを利用してcookieを設定する場合、Webサーバがcookieに 対応していなくても問題ないという利点はあることは分かりましたが、 他にはないのでしょうか? CGIでHTTPヘッダにcookieを保存しておいた場合、うれしいことは 何でしょうか?

  • Cookie情報の取得と表示

    特定のCookieを取得し、ページに表示させるスクリプトについて質問させていただきます。 現在、Cookieに保存されたハンドルネーム(2バイト文字も含む)の情報を取得し、 ページ上に表示させるスクリプトを作成しています。 Googleで検索した参考サイトを参考に以下のスクリプトを試してみましたが、 2バイト文字(”ああああ”等)については表示されないか、”%54%454%121%”のような文字化けになってしまいます。「test」のような1バイト文字については普通に表示されます。 いろいろ調べた結果、システムからCookieに保存する際に、文字コードがUTF8ではなく、SJISで保存されているため、「test」などの1バイト文字は普通に取得できますが、「ああああ」などの2バイト文字についてはバイナリデータとして扱われ、取得できない?ようになっているようです。 単にシステムからCookieに保存する際に「UTF8」で保存すればいいのかもしれませんが、可能ならJavascriptの何らかの処理で解決できればと考えております。 どなたかお分かりになれば、ご教授いただけませんでしょうか? 以下が現在テストしているスクリプトコードです。 <script language="JavaScript"> <!-- function GetCookie(name){ var st=""; var ed=""; var temp=""; if (document.cookie.length>0){ st=document.cookie.indexOf(name + "="); if (st!=-1){ st=st+name.length+1; ed=document.cookie.indexOf(";",st); if (ed==-1)ed=document.cookie.length; temp = document.cookie.substring(st,ed); } } decodeURIComponent(temp); return ""; } // --></script> <script language="JavaScript"> <!-- User = GetCookie('fmcHN'); // ハンドルネーム取得 document.write(User,"さん"); // --></script>

  • ブラウザに保存されているcookieを利用したい

    ブラウザに保存されているcookieをjavascriptなどで取得することは可能でしょうか? この度ニコニコ動画のマイページを取得し、ほしい情報だけ抽出するwebアプリケーションを開発したのですが、ページ取得の際のログインをどのようにしようかと迷っています。正規のログイン画面でクッキーを取得した場合ブラウザに保存されているcookieが無効になってい、利便性にかけます。 そのため現在はブラウザに保存されているcookieを手動でソースに貼り付けて使っています(笑)。 ローカルサーバー内で使う分には結構満足しているのですが、どうせならどこからでも自由に使えるようにしたいのでソースにcookie情報が残らないようにしたいのです。 ちなみにブラウザは主にFirefoxを使っています。もしwebアプリケーションでは無理でもアドオンを開発して連携させればできるかも、なども詳しい方は合わせて教えてください。 どうかよろしくお願いします。

  • CGIのCookieの消去

    こんにちは。 CGIのチャットを利用していて、そのチャットではユーザー名などを Cookieで保存しているのですが、Cookieの設定が間違っていて まったく情報が保存されなくなってしまったのですが、それを直すためにCGIで作成したCookieを消去したいのですが、やり方がわかりません・・ JavaScriptを利用してCGIで作成したCookieを消去することはできるのでしょうか? 出来るならばやり方についてもできればお願いします・・・

  • JavaScriptによるcookieの取得

    firefoxでネット巡回しています。 (A) HttpOnly属性が付与されていないcookieがパソコン内に保存されている時 悪意のあるサイトにjavascriptを仕組まれているとパソコン内のcookieを取得されるようなのですが、パソコン内に保存されているcookieの domain属性 path属性 secure属性 という3つの属性の内、1つでも悪意のあるサイトと一致しない場合は、悪意のあるサイトにjavascriptが仕組まれていてもパソコン内のcookie情報を取得できないのでしょうか? (B) HttpOnly属性が付与されているcookieがパソコン内に保存されている時、悪意のあるサイトがAjaxを使ってパソコン内のcookie情報を取得することが出来てしまうのでしょうか?

  • cookieについて

    IE5.0でツール→インターネットオプション→セキュリティ→レベルのカスタマイズ→cookie ・コンピュータに保存されているcookieの使用許可 ・セッションごとのcookieの使用許可 この二つの設定の違いがよくわからなくて困っています。 具体的には、cookieを使用するサイトでcookieの設定がなされていない時に違うページへとばす処理をしたいのですが、設定によってはうまくいかないことがあるので困っています。 実際には、あるページでcookieを書き込み、次のページでそのcookieの値を読み込み存在すればOK、しなければ別ページへとばす、という処理を書いてあります。 この時、 ・コンピュータに保存されているcookieの使用許可→無効 ・セッションごとのcookieの使用許可→有効 の状態だと、cookieが書き込めてしまって、OKになってしまいます(本当はNGにしたい)。 ・コンピュータに保存されているcookieの使用許可→有効 ・セッションごとのcookieの使用許可→無効 だと、NGとなり別ページへ飛んでくれます。 また、試しにwindow.navigator.cookieEnabledで調べてみると、 ・コンピュータに保存されているcookieの使用許可→無効 ・セッションごとのcookieの使用許可→有効 の時falseで、 ・コンピュータに保存されているcookieの使用許可→有効 ・セッションごとのcookieの使用許可→無効 の時trueが返ります。 どちらも有効の時はじめてOKを取得したいのですが・・・・。 回避方法、もしくは詳細情報のあるサイトなどでも結構です。 何か情報がございましたら教えて下さい。よろしくお願いいたします。 テスト環境はWindowsNT4.0(SR6) IE5.0ですが、IE4.01以上で動作することを想定しています。

  • cookieでチェックボックスの状態を保存したい

    保存ボタンを押すと、チェック状態をcookieで保存する機能を実装したいと考えています。 <form name="frmOutput" method="get" action="#"> <input name="time[]" type="checkbox" value="morning" id="morning" <?php if (in_array('morning', $times)) {?>checked="checked"<?php } ?> > <label for="morning">朝</label> <input name="time[]" type="checkbox" value="noon" id="noon" <?php if (in_array('noon', $times)) {?>checked="checked"<?php } ?> ><label for="noon">昼</label> <input name="time[]" type="checkbox" value="evening" id="evening" <?php if (in_array('evening', $times)) {?>checked="checked"<?php } ?> ><label for="evening" >夜</label> <input type="submit" name="submit_1" value="保存" onClick="recordTime(); return false;" /> この保存ボタンを押すと、JavaScriptで書いたrecordTimeで、チェックされているcheckboxの値を取得します。 <script src="./jquery.js" type="text/javascript"></script> <script language="JavaScript"> <!-- function recordTime() { var checkList = new Array(document.getElementById('morning'), document.getElementById('noon'), document.getElementById('evening')); var times = new Array(); for (i = 0; i < checkList.length; ++i) { if (checkList[i].checked) { times.push(checkList[i].value); } } $.get("./index.php", { "time[]": times, "record": 1 }); } --> </script> 値がセットされていればcookieに書き込みを行い、リロードすると保存時のチェック状態が再現されます。 <?php if (isset($_GET['record'])) { $times = $_GET['times']; $tmp = serialize($times); echo $tmp; setcookie('times', $tmp, time() + 30 * 60*60*24); exit; } $tmp = $_COOKIE['times']; $tmp = stripslashes($tmp); $times = unserialize($tmp); if ($times === false) { echo "unserialize failed."; } ?> 以上のコードなのですが、うまくcookieに保存されません。 これとは別にcookieを削除するボタンも作っており、 この削除ボタンでcookieの有効期限を過去にして削除してから、 動作がおかしくなったように感じていますが、 原因がはっきり分かりません。 知識を持っておられる方がいらっしゃれば、 教えて頂ければ助かります。 よろしくお願いしますm(__)m

  • IE5.5とNC4.75ではcookieをセットするメソッドが違うのですか?

    現在JavaScriptの<SCRIPT>タグ内で宣言されている配列データを webページ上に表示されているボタンを押すことで cookieに吐くような関数を作成したのですが IE5.5からボタンを押した場合はcookieファイルを吐き出していることを確認できたのですが NC4.75ではcookie.txtが更新されていることを確認できませんでした。 (株)翔泳社 JavaScript辞典 アンク著 を見る限りでは IE5.5でもNC4.75でも document.cookie ="keyName" + "配列" + "expires =Mon.31-Dec-2001 23:59:59;"; で書き込めると思うのですが・・・。 キー名と有効期限の他にもセットしなければいけない値があるんでしょうか?

  • クッキーの保存と確認をしようとしたら

    すみません質問です。 クッキーの保存と確認をするスクリプトを組んだのですが、 保存ボタンを押したらscriptエラーが出てしまいます。 エラーの内容は-------------------------- ライン:1 文字:1 オブジェクトを指定してください。 ---------------------------------------- というものです。 以下のソースのどこに問題があるのでしょうか。 スクリプトが間違っているのなら直そうと思うのですが、 <script>~</script>を消去してもエラーになってしまいます。 お暇な人、教えてください。お願いします。 <html> <head> <title>COOKIE TEST</title> <script language=javascript> function set_c(key){ document.cookie = "dest=" + key ; } function get_c(c_Name){ c_Name += "="; theCookie = document.cookie + ";"; start = theCookie.indexOf(c_Name); if (start != -1){ end = theCookie.indexOf(,";",start); return unescape(theCookie.substring(start + c_Name.length, end)); } return false; } function conf_c(){ get_c(dest); alert(document.cookie.sousin); } function conf_c2(){ alert(document.cookie); } </script> </head> <body> <a href="javascript:set_c('http://www.yahoo.co.jp');">クッキー保存</a><br><br> <a href="javascript:conf_c();">クッキー確認</a><br><br> <a href="javascript:conf_c2();">クッキー確認2</a> </body> </html>

  • Cookieへの書き込みは出来たのですが・・・

    Cookieに書き込んだjavaScriptの情報をjavaで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script>

専門家に質問してみよう