javascriptでCookieを取得し、閲覧回数と、閲覧した日付で、
1日1回しかページを閲覧することが出来ないコンテンツを制作しています。
javascript初心者で、何度やってもうまくいかないため、
どこが悪いのかを教えていただきたいです。
現状だと、1日に何回もページを閲覧することが出来てしまいます、、
深夜12時過ぎる(日付が変わる)と、再度ページを
閲覧できるようにしたいと思っています。
どうぞよろしくお願いします。
----------------------------------
<script language="JavaScript"><!--
/* クッキーに登録する汎用関数 */
/* 書式 : mySetCookie(クッキー名,値,有効期限日数) */
/* 戻り値 : なし(void) */
function mySetCookie(myCookie,myValue,myDay){
myExp = new Date();
myExp.setTime(myExp.getTime()+(myDay*24*60*60*1000));
myItem = "@" + myCookie + "=" + escape(myValue) + ";";
myExpires = "expires="+myExp.toGMTString();
document.cookie = myItem + myExpires;
}
/* クッキーを取り込む汎用関数 */
/* 書式 : myGetCookie(クッキー名) */
/* 戻り値 : 値(string) null:該当なし */
function myGetCookie(myCookie){
myCookie = "@" + myCookie + "=";
myValue = null;
myStr = document.cookie + ";" ;
myOfst = myStr.indexOf(myCookie);
if (myOfst != -1){
myStart = myOfst + myCookie.length;
myEnd = myStr.indexOf(";" , myStart);
myValue = unescape(myStr.substring(myStart,myEnd));
}
return myValue;
}
// --></script>
<script language="JavaScript"><!--
myD = new Date();
myYear = myD.getYear();
myYear4 = (myYear < 2000) ? myYear+1900 : myYear;
myMonth = myD.getMonth() + 1;
myDate = myD.getDate();
myYMD = myYear4 + "/" + myMonth + "/" + myDate;
myUser = myGetCookie("USER_NAME"); // 名前読込
if (myUser == null){ // 初めての訪問
myUser = "匿名";
mySetCookie("USER_NAME",myUser,365); // 名前保存
mySetCookie("USER_DATE",myYMD,365); // 訪問日保存
myLast = myYMD; // 前回訪問日とする
myCount = 1; // 訪問回数→初回
} else { // 2度以上の訪問
myCount = eval(myGetCookie("USER_COUNTER")); // カウンター読込
myLast = myGetCookie("USER_DATE"); // 前回訪問日読込
if ( myYMD == myLast){ // 前回訪問日が今日だったら
window.location = "sorry.html"; // 1日1回しか閲覧出来ないことを伝えるページに飛ばす
}
}
myLast = myYMD; // 前回訪問日を更新する
myCount = myCount +1; // 閲覧回数を追加する
mySetCookie("USER_COUNTER",myCount,365); // カウンター更新
mySetCookie("USER_NAME",myUser,365); // 名前の賞味期間を更新
// --></script>
----------------------------------
No.1ベストアンサー
- 回答日時:
こんにちは。
細かいところまで見ていないので違っているかもしれませんが、前回訪問日を初回にセットしたのみで2度以上の訪問でクッキーに書き込まれていない気がします。
(現状ですと初回当日の閲覧は制限がかかると思いますが、翌日以降は制限がかからない状態だと思います)
最後のカウンター更新、名前の更新とさらに前回訪問日の設定が必要ではないでしょうか。
また今回の不具合には関係無いですが、myCountの値ですが初回時に1からスタートするとmyCount = myCount + 1にて加算されますので始めてのアクセス時に作成されるクッキーのUSER_COUNTERは2からスタートしてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript gasについて 1 2022/05/31 21:51
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UAによるリダイレクト
-
Cookieの回数で閲覧制限、javas...
-
CGIフォーム一定時間過ぎる...
-
document.writeの文字列が実行...
-
指定した「曜日」の「時刻」に...
-
ホームページで更新情報を知らせる
-
Safariでポップアップが表示で...
-
<a href="#" …>の意味を教えて...
-
外部読み込みで動かないときの...
-
他のページ更新
-
フレーム分割領域のサイズを変...
-
色の指定で配列を使いたい
-
DOMで生成したタグにCSSが適用...
-
セレクトメニューでリンクの際...
-
小ウインドウのスクロールバー
-
javascriptでalertの文字列をコ...
-
ページによって表示位置がずれ...
-
曲名のアンダーラインをなくすには
-
bodyにidをつける理由は何ですか?
-
javascriptとjuaryを同時に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptで変数を組み込みたい
-
CGIフォーム一定時間過ぎる...
-
明日の日にちを表示するときは
-
書いたクッキーを読み出してメ...
-
カウントダウンとカウントアッ...
-
HTML画面上で文字の大きさを変...
-
動的生成したscriptタグが実行...
-
特定のURLからの訪問者を入室禁...
-
¥マークの検索について
-
UAによるリダイレクト
-
ホームページを見る度にTOP画面...
-
変数に入れた文字列をindexOfで...
-
HPビルダーで『最終更新日時』...
-
ランダム音声と正解・不正解の表示
-
document.getElementById
-
特定URLからの遷移後、指定ULR...
-
Cookieの回数で閲覧制限、javas...
-
ホームページに定休日のカレン...
-
外部javascriptファイルをjavas...
-
document.writeの文字列が実行...
おすすめ情報