<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>クッキー &#8211; ケケンタの独学ITブログ</title>
	<atom:link href="https://kekenta-it-blog.com/tag/%e3%82%af%e3%83%83%e3%82%ad%e3%83%bc/feed/" rel="self" type="application/rss+xml" />
	<link>https://kekenta-it-blog.com</link>
	<description>プログラミングやWeb制作の情報を発信</description>
	<lastBuildDate>Tue, 18 Mar 2025 01:56:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://kekenta-it-blog.com/wp-content/uploads/2023/07/cropped-KEKENTA-BLOG-32x32.png</url>
	<title>クッキー &#8211; ケケンタの独学ITブログ</title>
	<link>https://kekenta-it-blog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【PHP】セッションとクッキー？違いと使い方を解説</title>
		<link>https://kekenta-it-blog.com/php-session-cookie/</link>
		
		<dc:creator><![CDATA[ケケンタ]]></dc:creator>
		<pubDate>Thu, 29 Feb 2024 12:32:47 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webアプリ]]></category>
		<category><![CDATA[クッキー]]></category>
		<category><![CDATA[セッション]]></category>
		<guid isPermaLink="false">https://kekenta-it-blog.com/?p=3130</guid>

					<description><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2023/11/eye-catch__php-session-cookie__3130-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>この記事ではクッキーとセッションに関する以下のようなことを解説していきます。 PHPでWebアプリを開発するならクッキーとセッションの理解は非常に重要です。 この記事がクッキーとセッションのことを理解する一助となれば何よ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2023/11/eye-catch__php-session-cookie__3130-1024x576.jpg" class="webfeedsFeaturedVisual" /></p><div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>こんにちは！　ケケンタです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">この記事では<strong>クッキー</strong>と<strong>セッション</strong>に関する以下のようなことを解説していきます。</p>



<div class="swell-block-capbox cap_box is-style-shadow"><div class="cap_box_ttl"><span><span data-icon="LsLightbulb" data-id="0" style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" aria-hidden="true" class="swl-inline-icon"> </span><strong> この記事で分かること</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>クッキー、セッションとは？</li>



<li>クッキーとセッションの違い</li>



<li>クッキーとセッションが使用される際の流れ</li>



<li>クッキーとセッションの使いどころ</li>



<li>クッキーとセッションのプログラミング例</li>
</ul>
</div></div>



<p class="wp-block-paragraph">PHPでWebアプリを開発するならクッキーとセッションの理解は非常に重要です。</p>



<p class="wp-block-paragraph">この記事がクッキーとセッションのことを理解する一助となれば何よりです。</p>


<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/http-request-get-post/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【PHP】HTTPリクエストとは？GETとPOSTの意味</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/alone-php-study/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">PHPはこうして習得した！約１年間の勉強内容【プログラミング独学】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/php-deploy-xserver-for-zip/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【PHP】エックスサーバーへデプロイする方法【初心者でも簡単！】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2025/03/eye-catch__school-php-and-wp__14099-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/school-php-and-wp/">PHPやWordPressを学ぶのにおすすめのプログラミングスクール【７選】</a>
						<span class="p-blogCard__excerpt">僕はこれまで独学でPHPを学習してきました。結論から言えば、それでもPHPを習得することはできました。 しかし、それに費やした累計学習期間は1年ほど。モチベーション&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">クッキーとセッション</h2>



<p class="wp-block-paragraph">まずは簡単にクッキーとセッションがそれぞれどういうものかをご説明します。</p>



<p class="is-style-balloon_box2 wp-block-paragraph"><strong>クッキー</strong>とは</p>



<p class="is-style-border-left-box has-box-style has-border -border03 wp-block-paragraph"><strong><span class="marker-under">ユーザ</span><span class="marker-under">ー</span><span class="marker-under">側のブラウザに保存される小さなテキストファイルのこと</span></strong></p>



<p class="wp-block-paragraph">です。</p>



<p class="wp-block-paragraph">この中に、例えばカート情報やサイトの閲覧履歴などを格納しておくことで、ユーザーが再びサイトを訪れた際、過去のデータを復元することが可能になります。</p>



<p class="is-style-balloon_box2 wp-block-paragraph"><strong>セッション</strong>とは</p>



<p class="is-style-border-left-box has-box-style has-border -border03 wp-block-paragraph"><strong><span class="marker-under">Webアプリケーションがユーザ</span><span class="marker-under">ー</span><span class="marker-under">の情報を一時的に保存しておくための仕組みのこと</span></strong></p>



<p class="wp-block-paragraph">です。</p>



<p class="wp-block-paragraph">ユーザーがウェブサイトを訪れると、セッションが開始され、ユーザーに<strong>セッションID</strong>が割り振られます。</p>



<p class="wp-block-paragraph">その後は、セッションIDをキーとして、例えばログイン情報（ID・パスワード）などを一時保存します。</p>



<p class="wp-block-paragraph">これにより、アプリケーション側はユーザーのログイン状態をチェックすることが可能となります。</p>



<h2 class="wp-block-heading">クッキーとセッションの違い</h2>



<p class="wp-block-paragraph">簡単にクッキーとセッションについてご説明をしました。</p>



<p class="wp-block-paragraph">クッキーもセッションも、どちらもその役割は<strong><span class="marker-under"><span class="swl-marker mark_yellow">一時的に情報を保存すること</span></span></strong>です。</p>



<p class="wp-block-paragraph">役割が似ているため、特に初学者の方は混同しやすく、最初の内は中々気持ちよく理解することが難しいかもしれません。</p>



<p class="wp-block-paragraph">ここで、<strong>クッキーとセッションの違い</strong>をお見せします。</p>



<figure class="wp-block-table"><table><thead><tr><th></th><th>クッキー</th><th>セッション</th></tr></thead><tbody><tr><td><strong>生存期間</strong></td><td>設定された有効期限が来るまで</td><td>ブラウザが閉じられるまで<br>※時間による有効期限の指定も可能</td></tr><tr><td><strong>データの保管場所</strong></td><td>ユーザーのブラウザ</td><td>サーバー</td></tr><tr><td><strong>受け渡しのデータ形態</strong></td><td>データそのもの<br>※機密性のない情報の保存に適す</td><td>ID＝情報を取得するためのキー<br>※機密性のある情報の保存に適す</td></tr><tr><td><strong>データ量</strong></td><td>約4KB</td><td>無制限</td></tr></tbody></table><figcaption class="wp-element-caption"><strong>クッキーとセッションの違い</strong></figcaption></figure>



<p class="wp-block-paragraph">このように、クッキーとセッションには明らかな違いがあり、それぞれ使用するべき状況が異なります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>ここからはクッキーとセッションそれぞれの使いどころや仕組み、プログラミング例を提示します。<br>クッキーとセッションは関連性も持ちながらもまったく異なる要素のため、<strong>それぞれの仕組みや役割を理解すること</strong>が大切です。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">クッキーの使いどころ</h2>



<p class="wp-block-paragraph">改めて、クッキーとは、<strong><span class="marker-under">ユーザーのブラウザに保存される小さなテキストファイルのこと</span></strong>でした。</p>



<p class="wp-block-paragraph">使いどころとしては、<strong>ユーザーのWebサイト内での閲覧履歴の表示</strong>や、<strong>カート情報の表示</strong>などが挙げられます。</p>



<p class="wp-block-paragraph">つまり</p>



<p class="has-border -border03 wp-block-paragraph">クッキーを利用することで、そのユーザーのWebサイト内での行動に関する独自の情報を提供し、ユーザビリティを向上させることが可能</p>



<p class="wp-block-paragraph">ということです。</p>



<p class="is-style-alert-box has-box-style is-style-big_icon_caution wp-block-paragraph">注意点として、クッキーの正体は<strong>HTTPリクエストに載るテキスト情報</strong>です。<br>つまり、第三者がHTTPリクエストを覗き見た場合、クッキーの中身が文字通り丸分かりになってしまうということです。<br>そのため<strong><span class="marker-under"><span class="marker-under-red">機密性が高い情報をクッキーに格納してサーバーとやり取りすること</span></span></strong>は絶対に控えましょう。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>また、クッキーに保存可能なデータ量は4KBほどのため、<strong>大容量データの格納には不向き</strong>です。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">クッキーが使用される流れ</h2>



<p class="wp-block-paragraph">クッキーは以下のような流れで<strong>HTTPリクエスト</strong>にテキスト情報として載り、ブラウザとサーバーとの間でやり取りされます。</p>


<div class="wp-block-image is-style-shadow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a1425a17db9c&quot;}" data-wp-interactive="core/image" data-wp-key="6a1425a17db9c" class="aligncenter size-large wp-lightbox-container"><img decoding="async" width="866" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-866x1024.jpg" alt="Cookie（クッキー）が使用される流れ" class="wp-image-3177" srcset="https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-866x1024.jpg 866w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-254x300.jpg 254w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-768x908.jpg 768w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-1300x1536.jpg 1300w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/d2d21556222b58c6e38d24e9b57657d6-1733x2048.jpg 1733w" sizes="(max-width: 866px) 100vw, 866px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<div class="swell-block-capbox cap_box is-style-onborder_ttl2"><div class="cap_box_ttl"><span>クッキーが使用される流れ</span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>ユーザーがWebサイトにアクセスする</li>



<li>Webサーバーがユーザーのブラウザにクッキーを送信する（HTTPレスポンスのSet-Cookieフィールドにクッキー情報を載せる）</li>



<li>クッキーを受け取ったブラウザが、クッキーの情報を自分自身（ブラウザ自身）に保存する</li>



<li>それ以降、ブラウザはそのWebサイトを訪れるたびに保存してあるクッキーをHTTPリクエストと共にWebサーバーへ送信する</li>



<li>Webサーバーは受け取ったクッキーを元に、そのユーザー独自の情報を表示するなどの処理を行う</li>
</ul>
</div></div>



<h2 class="wp-block-heading">クッキーの使い方【プログラミング例】</h2>



<p class="wp-block-paragraph">クッキーを実際にPHPで使用する際は以下のようになります。</p>



<h3 class="wp-block-heading"><strong>クッキーに情報を格納する</strong></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>// ※有効期限を7日に指定
setcookie( &#39;user_id&#39;, &quot;kekenta&quot;, time()+606024*7 );</code></pre></div>



<h3 class="wp-block-heading"><strong>クッキーに複数の情報を格納する</strong></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>// json_encode()関数でJSONエンコードして渡す
setcookie( &#39;login_info&#39;, json_encode( [&quot;id&quot; =&gt; &quot;kekenta&quot; ,&quot;pass&quot; =&gt; “kekentapass” ] ) );</code></pre></div>



<h3 class="wp-block-heading"><strong>クッキーから情報を取得する</strong></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>var_dump( json_decode( $_COOKIE[&quot;login_info&quot;], true ) );</code></pre></div>



<h3 class="wp-block-heading"><strong>クッキーから情報を削除する</strong></h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>setcookie( &#39;user_id&#39;, &quot;&quot; );</code></pre></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>ここまでがクッキーの解説でした。<br>続いてセッションの解説に入ります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">セッションの使いどころ</h2>



<p class="wp-block-paragraph">改めて、セッションとは、<strong><span class="marker-under"><strong><span class="marker-under">Webアプリケーションがユーザーの情報を一時的に保存しておくための仕組みのこと</span></strong></span></strong>です。</p>



<p class="wp-block-paragraph">よく使用されるのが、<strong>ログイン状態の保存</strong>です。</p>



<p class="wp-block-paragraph">ここで少し<strong>Webアプリケーションの歴史的な背景</strong>の話をさせていただきます。</p>



<p class="wp-block-paragraph">実はユーザーとWebサーバー同士のやり取りというのは、その都度、状態（ステータス）が保存されるわけではありません。</p>



<p class="wp-block-paragraph">やり取りの度にWebサーバー側がユーザーのことを忘れてしまうのです。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>このように「状態を保持しない」性質を<strong><span class="swl-inline-color has-swl-deep-02-color">ステートレス（state less）</span></strong>と言います。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">どういうことかというと、ユーザーがせっかくログイン画面を経てサイトへログインしたとしても、<strong>Webサーバー側が次のHTTPリクエストの際には「ユーザーがログイン済み」という事実を忘れてしまう</strong>ということです。</p>



<p class="wp-block-paragraph">そのため、本来のWebサーバーの性質上では、ユーザーはページ遷移する度にログイン操作を要求されることになってしまいます。</p>



<p class="is-style-border-left-box has-box-style wp-block-paragraph"><span class="marker-under">この問題を解消するために生み出された技術が<strong>クッキー</strong></span>です。</p>



<p class="wp-block-paragraph">前述したように、クッキーもまた情報をテキストデータとして保持することが可能な技術です。</p>



<p class="wp-block-paragraph">そのため、ユーザーがログイン操作をした際、クッキーにログインID・パスワードを保持することで、ページ遷移の度にログイン情報を入力しなくてはならないという事態を回避できたのです。</p>



<p class="wp-block-paragraph">しかし、クッキーに保持されるデータはHTTPリクエストを覗けば丸見えのため、<strong>情報漏洩のリスクが非常に高い</strong>です。</p>



<p class="is-style-border-left-box has-box-style wp-block-paragraph">この問題をさらに解決するべく誕生したのが<strong>セッション</strong>です。</p>



<p class="wp-block-paragraph">セッションはセッションIDをクッキーに保持し、実際のデータを格納・取得する際はこのセッションIDを利用します。</p>



<p class="wp-block-paragraph">これにより、<strong><span class="swl-marker mark_yellow">生のデータがHTTPリクエストを介して覗き見られてしまう事態を回避できます。</span></strong></p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>つまりセッションとは、<strong>クッキーでは補えないセキュリティリスクをカバーするために誕生した技術</strong>だったのです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">ログイン状態の維持の話に戻りますが、セッションにログイン情報（パスワード・ユーザIDなど）を保存し、サイト側はユーザーがページ遷移するごとにセッションの情報を参照することで、「このユーザーはいまログイン済み」ということを判断することが可能になります。</p>



<p class="wp-block-paragraph">これが<strong>ログイン状態の保存</strong>です。</p>



<p class="is-style-big_icon_point wp-block-paragraph">セッションを利用すると機密性が高い情報も漏洩するリスクが低下します。<br><br>そのため、セッションの使いどころのひとつとして、<strong>個人情報などの機密性が高い情報を一時的に保存したい状況</strong>が挙げられます。</p>



<h2 class="wp-block-heading">セッションが使用される流れ</h2>



<p class="wp-block-paragraph">セッションは具体的には以下のような流れで使用されます。</p>


<div class="wp-block-image is-style-shadow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a1425a17ef92&quot;}" data-wp-interactive="core/image" data-wp-key="6a1425a17ef92" class="aligncenter size-large wp-lightbox-container"><img decoding="async" width="1000" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-1000x1024.jpg" alt="Session（セッション）が使用される流れ" class="wp-image-3182" srcset="https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-1000x1024.jpg 1000w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-293x300.jpg 293w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-768x787.jpg 768w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-1499x1536.jpg 1499w, https://kekenta-it-blog.com/wp-content/uploads/2024/02/748026872c648214ef86225b5adec6f5-1999x2048.jpg 1999w" sizes="(max-width: 1000px) 100vw, 1000px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<div class="swell-block-capbox cap_box is-style-onborder_ttl2"><div class="cap_box_ttl"><span>セッションが使用される流れ（例：ログイン機能の場合）</span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>ユーザーがWebサイトへアクセスする</li>



<li>セッションが開始する</li>



<li>ユーザーにセッションIDが割り振られる（セッションID自体はクッキーで受け渡しされる）</li>



<li>ユーザーがログイン画面からID・パスワードを入力してログインする</li>



<li>ID・パスワードがセッションに保存される</li>



<li>ユーザーがページ遷移するたびにWebサイトはセッションIDをキーとしたID・パスワードをチェックし、ログイン情報を正しいことを確認する</li>
</ul>
</div></div>



<p class="is-style-information-box has-box-style is-style-icon_info wp-block-paragraph"><strong>不正ログインの対応</strong>として、未ログインユーザーが、本来ならログインしないとアクセスできないページへURL入力によって直接アクセスしようとした場合、強制的にログイン画面へ遷移するなどの処理が実行されるように実装します。</p>



<h2 class="wp-block-heading">セッションの使い方【プログラミング例】</h2>



<h3 class="wp-block-heading">セッションの開始方法</h3>



<p class="wp-block-paragraph">セッションを使用する際は必ず以下の処理を記述します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>session_start();</code></pre></div>



<h3 class="wp-block-heading">セッションに情報を格納する</h3>



<p class="is-style-balloon_box2 wp-block-paragraph"><strong>データが単体の場合</strong> </p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$_SESSION[&quot;user_id&quot;] = &quot;kekenta&quot;;</code></pre></div>



<p class="is-style-balloon_box2 wp-block-paragraph"><strong>配列の場合</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$_SESSION[&quot;login_info&quot;] = [
    &quot;id&quot;    ⇒  &quot;kekenta&quot;,
    &quot;pass&quot;  ⇒  &quot;kekentapass&quot;
];</code></pre></div>



<h3 class="wp-block-heading">セッションから情報を取り出す</h3>



<p class="wp-block-paragraph">情報を取り出すときはグローバル変数$_SESSIONに情報格納時に設定したキーを指定します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo $_SESSION[”user_id”];
// 出力結果：kekenta</code></pre></div>



<h3 class="wp-block-heading">格納したセッション情報を削除する</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>unset( $_SESSION[”user_id”] );</code></pre></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>以上がセッションのプログラミング例です。<br>さらに<strong>具体的な実践での使用方法を見てみたい</strong>という方は、以下の記事で掲示板アプリの作成方法を解説していますのでこちらの記事内のコードをご覧ください。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/11/eye-catch__board-app-php__2739-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/board-app-php/">掲示板アプリの作り方｜プログラミング初心者向け【PHP】</a>
						<span class="p-blogCard__excerpt">この記事ではPHPによる 掲示板アプリの作り方 をご紹介します。 掲示板アプリを作成するためには、PHPの基本文法をはじめ、データベース操作（いわゆるCRUD）やHTTPリク&#8230;</span>					</div>
				</div>
			</div>
		</div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">【まとめ】クッキーとセッションは適切に使い分けよう</h2>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>以上が<strong>クッキーとセッション</strong>の解説でした。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">振り返りとして改めて<strong>セッションとクッキーの違い</strong>を提示します。</p>



<figure class="wp-block-table"><table><thead><tr><th></th><th>クッキー</th><th>セッション</th></tr></thead><tbody><tr><td><strong>生存期間</strong></td><td>設定された有効期限が来るまで</td><td>ブラウザが閉じられるまで<br>※時間による有効期限の指定も可能</td></tr><tr><td><strong>データの保管場所</strong></td><td>ユーザーのブラウザ</td><td>サーバー</td></tr><tr><td><strong>受け渡しのデータ形態</strong></td><td>データそのもの<br>※機密性のない情報の保存に適す</td><td>ID＝情報を取得するためのキー<br>※機密性のある情報の保存に適す</td></tr><tr><td><strong>データ量</strong></td><td>約4KB</td><td>無制限</td></tr></tbody></table><figcaption class="wp-element-caption"><strong>クッキーとセッションの違い</strong></figcaption></figure>



<p class="wp-block-paragraph">セッションはセッションIDこそクッキーで受け渡しが行われるますが、データ自体はセッションIDをキーとして取り出すため、<strong>機密性が高い情報を格納するのに向いています。</strong></p>



<p class="wp-block-paragraph">それに対し、クッキーは生のデータをHTTPリクエストに記載してそのまま受け渡しているため、<strong>機密性が高い情報の扱いには向いていません</strong>。</p>



<p class="wp-block-paragraph">また、クッキーとセッションでは利用可能なデータ容量も異なります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>こうしたクッキーとセッションの違いをしっかり理解して使い分けることが大切です。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">特に、セキュリティリスクへの配慮が最も重要で、</p>



<p class="has-border -border03 wp-block-paragraph">基本的にユーザーの個人情報を扱う場合は<strong>セッション</strong>を使用する</p>



<p class="wp-block-paragraph">ようにしましょう。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>最後までご覧いただきありがとうございました！<br>この記事が参考になったなら何よりです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
