• 締切済み

クッキーに内容によってリンク先を変えたいです!

教えてください! トップページでクッキーにnameを保存させて、 他のページに移った際に、そのnameがある場合とない場合で ボタンのリンク先を変えたいのですが、 そんなことできるのでしょうか? また、トップページでクッキーに数値を保存させるのは、 下記を記述しておくだけで、クッキーに保存されるのでしょうか? <SCRIPT type="text/javascript"> <!-- document.cookie = "name = 名前; expires = 期限;" //--> </SCRIPT> 是非教えてください!

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

javascriptからクッキーへ書きこむ際には専用の関数を つくってやらないと、意図しないクッキーの競合や上書きが 発生します。 クッキー用関数についてはサーチサイトで探せば いくらでも見つかると思います。 (たいがい「setCookie」などの関数を作る場合がおおいので それをキーワードにさがすとよいでしょう) ちなみにほかのページに移った場合、設定によっては そのクッキーは参照できませんのでご注意ください。

関連するQ&A

  • 期限内の場合はクッキーを上書きしないようにする方法

    a-site.comとb-site.comとc-site.comの全ページに下のようなJavascriptを埋め込んでクッキーを残そうとしています。 <script type="text/javascript"> <!-- var name = "iriguchi"; // クッキーの名前 var value = "a-site"; // クッキーの値 (サイトごとに変える) var period = 30; // 有効期限(分) // 有効期限の作成 var nowtime = new Date().getTime(); var clear_time = new Date(nowtime + (60 * 1000 * period)); var expires = clear_time.toGMTString(); // クッキーの発行(書き込み) document.cookie = name + "=" + escape(value) + "; expires=" + expires; // --> </script> この場合、a-site.comにアクセスした人がb-site.comにアクセスした場合、a-site.comで書き込まれたクッキーが期限内であっても期限切れでも、b-site.comにアクセスした時点でクッキーの中身は「b-site」に書き換えられ、期限も更新されてしまいます。 これを、クッキーの期限内であればどのサイトを回ろうと最初に書き込まれたクッキーの内容が保持され、期限が切れた時点で新たな内容に書き換えられるようにしたいのですが、それには上のソースに何か書き加える必要がありますよね? 書き方がわからないので文法のむちゃくちゃな自己流で書きますが if (a-site.comで書かれたcookieが期限内){クッキーは前のまま継続} else if (a-site.comで書かれたcookieが期限切れ){新期限 =expires、iriguchi = b-site} といったようにしたいのですが、現在のJavascriptのどこにどういう文を書き加えたらいいでしょうか?

  • クッキーの保存時間

    クッキー保存のジャバスクリプトを拾ってきました。 いろいろあって、クッキーの保存の期間を次の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時)までも保存期限にしたいのです。 わかりにくいとは思いますが、わかりやすい回答をお願いいたします。 検索するにも方法がわからなかったので質問させていただいております。

  • フォームの内容をクッキーに保存する

    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
  • クッキー取得処理のジャバスクリプトを拾ってきたんですが、壊れているのか効きません。

    これなんですが、firefoxIE6とどれも効いてくれないのですが、なぜなんでしょうか? 僕の設定がおかしいのでしょうか。 head内に設置しているんですが、どうすれば効いてくれるようになるんでしょうか? <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>

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

    すみません質問です。 クッキーの保存と確認をするスクリプトを組んだのですが、 保存ボタンを押したら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>

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

  • クッキーの初歩的質問

    クッキーに下記のような内容を書き込む方法を教えて下さい。上から順にクリックしていったときに、alert(★)の部分を「1,2,3」という結果にしたいのですが。 <SCRIPT language=JavaScript> function memoryCookie(num){ expires = new Date() expires.setTime(expires.getTime() + 24*60*60*1000) document.cookie = "mydata=" + num + ";expires=" + expires.toGMTString() alert(★) } </SCRIPT> <form name="myform"> <INPUT TYPE="CHECKBOX" NAME="test" VALUE="1" onclick="memoryCookie(this.value)">1<BR> <INPUT TYPE="CHECKBOX" NAME="test" VALUE="2" onclick="memoryCookie(this.value)">2<BR> <INPUT TYPE="CHECKBOX" NAME="test" VALUE="3" onclick="memoryCookie(this.value)">3<BR>

  • クッキーが消せない

    下記の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を削除しました。"); } }

  • クッキーを食べさせた会員には割引価格を適用したい。

    他所を参考にして作ってみました。 次の3点がよくわかりません。アドバイスをいただけるとありがたいです。 ・価格が表示されない。 ・有効期限は24日間? ・function cgIMG()の役割。 <script type="text/javascript"> function checkmember() { var price = '20000'; var mprice = price * 0.9; if(document.cookie.substring(0, 11) == "cgIMGnm=123"){ fm.kakaku.value = mprice; } else{ fm.kakaku.value = price; } } function eatcookie(name,data,days){ var cdate=new Date(); cdate.setTime(cdate.getTime()+1000*60*60*24*days); document.cookie=name + "=" + data + " ; expires=" + cdate.toGMTString(); } function writeprice() { document.write("<p>会員価格:'+mprice+'</br>通常価格:'+price+'</p>"); } function cgIMG(){ eatcookie("cgIMGnm","123", 10); } </script> <body onload="return checkmember()"> <p> <script type="text/javascript"> if(document.cookie.substring(0, 11) == "cgIMGnm=123"){ document.write('<a href="#" onClick="cgIMG()">' + '現在ログイン中</a>'); } else{ document.write('<a href="#" onClick="cgIMG();location.reload()">' + 'ログインしてください</a>'); } </script> <script type="text/javascript"> writeprice(); </SCRIPT> </p> <form name="fm" id="fm" Action="" METHOD="POST"> <INPUT TYPE="text" NAME="kakaku" id="kakaku"> <SELECT NAME="kazu"> <OPTION>1<OPTION><OPTION>2<OPTION> </SELECT> <INPUT TYPE="SUBMIT" VALUE="カートに入れる"> </FORM> <form> <input type=button onclick=eatcookie("cgIMGnm","0",-1) value="クッキー削除"> </form> </body>

  • クッキーによる複数のデータ取得

    初めまして。 早速質問です。 例えばテキストエリアが2つ以上あって、一度のクッキーの読み込みで2つのテキストエリアに異なるデータを読み込ませたい場合はどうすればよいのでしょうか? 一応今出来ているのは(スクリプトのところだけ表示しますね) <script language="JavaScript"> function saveData(theValue) { theName ="Age"; theDay =7; setDay =new Date(); setDay.setTime(setDay.getTime()+(theDay*1000*60*60*24)); expDay =setDay.toGMTString(); document.cookie = "Age=request.getParameter("---"); expires=expDay"; } </script> <script language ="JavaScript"> function loadData() { theData =""; theName ="Age="; theCookie = document.cookie+";"; start = theCookie.indexOf(theName); if(start != -1) { end = theCookie.indexOf(";",start); theData = unescape(theCookie.substring(start+theName.length,end)); } return theData; } </script> ここまでだと、クッキーは1つしか保存されないです。 取っ掛かりだけでもいいので解答お願いします。

専門家に質問してみよう