🍪
JavaScriptでCookieにデータを保存する
はじめに
Cookieは、平たく言えばウェブサイトを閉じてもデータが消えないように保存する仕組みです。
この記事ではフレームワークを用いないで、JavaScirptを使ってCookieにデータを保存し、呼び出す方法を解説します。
サンプルコード
今回作るものは本当に簡素で、以下のようなものにします。
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cookie履歴保存</title>
</head>
<body>
<h1>Cookieに保存するフォーム</h1>
<form id="textForm">
<label for="textInput">文字を入力してください:</label><br>
<input type="text" id="textInput" required>
<button type="submit">保存</button>
</form>
<h2>履歴</h2>
<ul id="historyList"></ul>
<script src="script.js"></script>
</body>
</html>
script.js
function setCookie(name, value, days) {
const date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
const expires = date.toUTCString();
document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
}
function getCookie(name) {
const cookies = document.cookie.split("; ");
for (let cookie of cookies) {
const [key, val] = cookie.split("=");
if (key === name) {
return decodeURIComponent(val).split(",");
}
}
return [];
}
function renderHistory() {
const historyList = document.getElementById("historyList");
const history = getCookie("history").filter(Boolean);
historyList.innerHTML = "";
history.forEach(item => {
const li = document.createElement("li");
li.textContent = item;
historyList.appendChild(li);
});
}
document.getElementById("textForm").addEventListener("submit", (e) => {
e.preventDefault();
const textInput = document.getElementById("textInput");
const newText = textInput.value.trim();
if (newText) {
const currentHistory = getCookie("history");
currentHistory.push(newText);
setCookie("history", currentHistory.join(","), 7);
renderHistory();
textInput.value = "";
}
});
window.onload = renderHistory;
コードの解説
HTML
textForm
文字を入力し、送信するパーツです。
historyList
Cookieに保存されているデータを一つずつリスト形式で表示します。
JavaScript
setCookie
Cookieにデータを保存します。
例:setCookie(キー、保存するデータ、保存される日数)
getCookie
name
というキーに紐づけられている、Cookieに保存されているデータを取得します。
今回はデータを配列で返すように作っています。
renderHistory
historyList
に、Cookieに保存されているデータをすべて表示します。
その下
textForm
の保存ボタンが押されたらCookieに書かれている文章を保存します。
Cookieとは?
Cookieは、ウェブサイトがユーザーのブラウザに保存する小さなデータのことです。ユーザーの識別や状態の保持に利用され、主に以下のような用途で使用されます:
- セッション管理: ユーザーのログイン情報やショッピングカートの内容を保持。
- パーソナライズ: ユーザーの言語設定やテーマなどのカスタマイズ情報を保存。
- トラッキング: ユーザーの行動を追跡して分析や広告に活用。
Cookieは、ウェブサーバーまたはJavaScriptを使用してブラウザ内に保存され、後続のリクエストでサーバーに送信されます。
Cookieのデータ保存方法
Cookieは、以下の形式でデータを保存します
key=value; expires=date; path=/; domain=example.com; secure; HttpOnly;
簡単に言えば、key(データの名前のようなもの)に、value(実際のデータ)を保存している、ということです。
各属性の説明
-
key=value
- 保存されるデータの「キー」と「値」を表します。
- 例:
username=JohnDoe
-
expires
- Cookieの有効期限を設定します。指定された日時を過ぎるとCookieは無効になります。
- 例:
expires=Fri, 31 Dec 2024 23:59:59 GMT
-
path
- Cookieが有効なパスを指定します。このパス以下でのみCookieが利用可能です。
- 例:
path=/
(サイト全体で有効)
-
domain
- Cookieが有効なドメインを指定します。
- 例:
domain=example.com
-
secure
- HTTPS通信でのみCookieを送信する場合に設定します。
-
HttpOnly
- JavaScriptでCookieを操作できないように設定する属性です。セキュリティ向上に利用します。
Discussion