JavascriptでsetCookie? 2時間の期限をつけたいのですが…

このQ&Aのポイント
  • クッキーを書き込む方法をWebや本で模索していたのですが、どうもわからなくなってしまいました。
  • 「Javascriptでクッキーを書き込むには、docment.cookieという書き方をする」と色々な入門書やサイトに書いてあるのですが、有効期限を「○年○月」ではなく「今から2時間後」にする方法を検索してみると、「setCookie」という書き方でばかり出て来ます。
  • 今から2時間後の期限で、「ENTERFROM」という名前のクッキーに「NEWSITE」という値を書き込んで記憶させたいのですが、次のソースを普通のHTML書類に書き足せばこの目的は実現するでしょうか?
回答を見る
  • ベストアンサー

JavascriptでsetCookie? 2時間の期限をつけたいのですが…

クッキーを書き込む方法をWebや本で模索していたのですが、どうもわからなくなってしまいました。 「Javascriptでクッキーを書き込むには、docment.cookieという書き方をする」と色々な入門書やサイトに書いてあるのですが、有効期限を「○年○月」ではなく「今から2時間後」にする方法を検索してみると、「setCookie」という書き方でばかり出て来ます。 今から2時間後の期限で、「ENTERFROM」という名前のクッキーに「NEWSITE」という値を書き込んで記憶させたいのですが、次のソースを普通のHTML書類に書き足せばこの目的は実現するでしょうか? <SCRIPT LANGUAGE="JavaScript"> <!-- kigen = new Date(); kigen.setTime(d.getTime() + 2*60*60*1000); //2時間後 expire = kigen.toGMTString(); setCookie("ENTERFROM", NEWSITE, expire); //--> </SCRIPT> また、これでOKだとして、こうして書き込んだクッキーの内容をあとでフォームメールでからメール送信するには、フォーム内に <SCRIPT language="JavaScript"><!-- document.write("<INPUT type=\"hidden\" name=\"iriguchi\" value=getCookie(ENTERFROM)>"); // --></SCRIPT> とでも入れれば送信できるでしょうか? 間違っているところがありましたら、…多分いくつもあるような気がするのですが (^^; 、どう直したら正しくなるか教えて頂けないでしょうか? どうかよろしくお願い致します。

  • MORGEN
  • お礼率100% (466/466)

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

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

setCookieと言うのはそれぞれの人が作った独自関数ではないかと思います。 <script type="text/javasctipt"> function setCookie() { alert('クッキーだよー'); } </script> こんなのですね。 javascriptで元々用意されている手法はdocument.cookieになるかと思います。 ■書式 document.cookie = "名前:値; expires=GMTDateFormat;"; クッキーを設定するための書式はこんな感じだと思います。 (他にもpathだとかdomainだかも設定できると思います。) setCookieという関数を用意したいのであれば以下の様になります。 <script type="text/javascript">> function setCookie(key,value,exp) { document.cookie = key + '=' + escape(value) + '; expire=' + exp + ';'; } var kigen = new Date(); kigen.setTime(kigen.getTime() + 2*60*60); //2時間後 expire = kigen.toGMTString(); setCookie('ENTERFROM','NEWSITE', expire); </script> クッキーを取得するのもgetCookieという便利関数は用意されていないので、自分で作る必要があります。 <script> alert(document.cookie); </script> こいつがクッキー情報を持ってるプロパティになるので、ここからsplitしたり、substringしたりして値を取得してやればよいのです。 <script type="text/javascript"> function setCookie(key,value,exp) { document.cookie = key + '=' + escape(value) + '; expire=' + exp + ';'; } function getCookie(key) { var a = document.cookie.split(/[ ;]/); for (var k in a) { _a = a[k].split("="); if (_a[0] == key) { return _a[1]; } } } kigen = new Date(); kigen.setTime(kigen.getTime() + 2*60*60); //2時間後 expire = kigen.toGMTString(); setCookie('BB','NEWSITE', expire); var A = getCookie('BB'); alert(A); </script> 書き方おかしいかも知れませんが、こんな感じでしょうか。

MORGEN
質問者

お礼

ご回答をどうもありがとうございました。 > setCookieと言うのはそれぞれの人が作った独自関数ではないかと思います そうだったんですか! 字面にすっかり騙されてしまいました。 ということは、べつにsetCookieでなくとも、「nantoka」なんて名前でもいいんですね。(^^; どうもありがとうございました!

関連するQ&A

  • 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でクッキーを書き出しているんですが、確実にクッキー

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

  • サイト訪問者に対して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>

  • setcookieが動きません

    $id = $_GET['id']; setcookie('id', $id, time() + 24 * 3600); というスクリプトをphpフォームが付いたindex.htmlの冒頭に書き、 入力内容確認画面のconf.phpに <input type="hidden" name="ap_id" value="<?php echo $_COOKIE['id']; ?>"> と入れています。 一度だけクッキーが取得できたのですが、なぜかそれ以降機能しなくなりました。 PHP初心者なのですが、ぜひ間違いを教えて下さい! 宜しくお願いします。

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

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

  • クッキーの保存時間

    クッキー保存のジャバスクリプトを拾ってきました。 いろいろあって、クッキーの保存の期間を次の24:00(夜の12時)までにしたいのです。 今の状態だと、おそらく24時間保存されると思います。 今のプログラム↓ <script type="text/javascript"> <!-- //ページ読み込み時に発生する。(bodyのonLoadイベントで呼び出し) function init() { //クッキー取得処理を呼び出し、戻り値をcoocに代入 var cooc = getCookie(); //戻り値がOKの場合はクッキーが存在するのでb.htmlに飛ばす if (cooc == "OK") { location.href="b.htm"; } } //クッキー取得(取得できればOK、できなければNGを返す) function getCookie(){ //当日日付取得 var today = new Date().getTime(); //クッキー取得 var doc = document.cookie+";".indexOf("test="); //クッキーが取得できなければindexOfで-1が返されるのでif文で判別 if(doc != -1){ return("OK"); } else { //取得できなければクッキーを食べさせる。(expires=有効期限) document.cookie = "test=1;expires="+new Date(today + (60 * 60 * 24 * 1000 * 1)); return("NG"); } return(""); } //--> </script> ↑↑ までです。 expires="+new Date(today + (60 * 60 * 24 * 1000 * 1)); の部分が保存期間だと思います。 これだとおそらく24時間保存されます。 ここを次の24:00(夜の12時)までも保存期限にしたいのです。 わかりにくいとは思いますが、わかりやすい回答をお願いいたします。 検索するにも方法がわからなかったので質問させていただいております。

  • 時間帯によって背景を切り替えるJavascriptとCSS

    時間帯によって背景を切り替えるJavascriptとCSSを作りたいのですが以下の書き方で良いのでしょうか?切り替わるには切り替わるのですが、時間の指定がうまくいってないようです。。 また下の3行はJavascriptをOFFにしているときはこのCSSという意味で良いですか? <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function getCSS() { datetoday = new Date(); timenow=datetoday.getTime(); datetoday.setTime(timenow); thehour = datetoday.getHours(); if (thehour > 20) display = "includes/tree_twilight.css"; else if (thehour > 17) display = "includes/tree_sunset.css"; else if (thehour > 14) display = "includes/tree_afternoon.css"; else if (thehour > 11) display = "includes/tree_noon.css"; else if (thehour > 7) display = "includes/tree_morning.css"; else if (thehour > 4) display = "includes/tree_sunrise.css"; else if (thehour > 1) display = "includes/tree_twilight.css"; else display = "includes/tree_sunset.css"; var css = '<'; css+='link rel="stylesheet" href=' + display + ' \/'; css+='>'; document.write(css); // End --> } </script> <script language="javascript">getCSS();</script> <noscript> <link rel="stylesheet" href="includes/tree_sunset.css" type="text/css"/> </noscript> 宜しくお願いします。。

  • クッキーを発行するドメイン名を指定する方法

    function getCookie(keyname){ var tmp = document.cookie + ";"; var index1 = tmp.indexOf(keyname, 0); if(index1 != -1){ tmp = tmp.substring(index1, tmp.length); var index2 = tmp.indexOf("=", 0) + 1; var index3 = tmp.indexOf(";", index2); return(unescape(tmp.substring(index2, index3))); } } 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; } function backFunc(){history.back();} function backEntry(){window.location = "rank2.cgi?mode=show&rank=$IN{'rank'}";} function backOperate(){document.form1.submit();} function startFunc(){ if("$FORM{'savecookie'}" != "save"){return;} if(getCookie("dakenId") != "$FORM{'para3'}"){setCookie("dakenId", "$FORM{'para3'}");} if(getCookie("dakenPass") != "$FORM{'para4'}"){setCookie("dakenPass", "$FORM{'para4'}");} } 現在は、http://ドメイン.com/cgi-bin/abc/ このような階層にクッキーが保存されています。 これを、http://ドメイン.com/cgi-bin/に保存するには、上記スクリプトをどのように変更すればよろしいのでしょうか。 発行したクッキーの参照可能なサイト (URL) として domain 値と path 値があるそうですが、自分なりにここ二日間勉強し続けましたが、クッキーについての知識はゼロに近いため、どうしても自力では解決できそうにありません。 どなたかご存知のかた、何卒宜しくお願いいたします。

  • JavaScriptでイベントまでのカウントを作りたい。

    教えてください。JavaScript初心者です。 JavaScriptでイベントまでのカウントを作りたいのですが、 日にちを画像でだして、指定した日がきたら、画像で差し替えるようにしたいのですが、どうすればいいのでしょうか? ※現在は指定した日がきたら、「おめでとう」の文字がでるようにしてます。 書いたタグは下記になります。 アドバイスをお願いします。 <script language="JavaScript"><!-- var now = new Date(); var point = new Date(2009,8-1,25); var countdown = Math.ceil( ( point.getTime() - now.getTime() ) / (1000*60*60*24) ); if(countdown > 0) { document.write('countdown '); } else { document.write('おめでとう!'); } // --></script>

  • JavascriptとCookieについて

    HTML【index.php】でフォームを作り、クリック時にCookieに保存 →別ページ【input.php】で保存したCookieで判断し内容を変更するページを作ろうと思っています。 http://memo.ark-under.net/memo/404 こちらのページを参考に以下のように作ってみたのですが動作しません。 JavascriptとPHPを使えたらどんな方法でも良いので、ご教授お願い致します。 最近勉強を始めた初心者ですので、なるべく簡単に教えていただけると幸いです。 ----------------------------------------------------------------------- ----------------------------------------------------------------------- 【index.php】 <script type="text/javascript"> // クッキー保存 setCookie(クッキー名, クッキーの値, クッキーの有効日数); // function setCookie(c_name,value,expiredays){ // pathの指定 var path = location.pathname; // pathをフォルダ毎に指定する場合のIE対策 var paths = new Array(); paths = path.split("/"); if(paths[paths.length-1] != ""){ paths[paths.length-1] = ""; path = paths.join("/"); } // 有効期限の日付 var extime = new Date().getTime(); var cltime = new Date(extime + (60*60*24*1000*expiredays)); var exdate = cltime.toUTCString(); // クッキーに保存する文字列を生成 var s=""; s += c_name +"="+ escape(value);// 値はエンコードしておく s += "; path="+ path; if(expiredays){ s += "; expires=" +exdate+"; "; }else{ s += "; "; } // クッキーに保存 document.cookie=s; } <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力" onsubmit="return setCookie('hanteisql','1',7)"> ボタン2:<input type="submit" name="input2" value="入力" onsubmit="return setCookie('hanteisql','1',7)"> </form> ----------------------------------------------------------------------- ----------------------------------------------------------------------- 【input.php】 <?php echo "クッキーは".$_COOKIE["hanteisql"]."です。" ?> -----------------------------------------------------------------------