<?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>PHPセッション | Seek Rise</title>
	<atom:link href="https://seek-rise.com/tag/php%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3/feed/" rel="self" type="application/rss+xml" />
	<link>https://seek-rise.com</link>
	<description></description>
	<lastBuildDate>Sat, 03 Jan 2026 14:32:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://seek-rise.com/wp-content/uploads/2019/10/cropped-favicon-32x32.png</url>
	<title>PHPセッション | Seek Rise</title>
	<link>https://seek-rise.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/><site xmlns="com-wordpress:feed-additions:1">167377966</site>	<item>
		<title>6-12 PHPでセッションを使って状態を管理する</title>
		<link>https://seek-rise.com/web-development/php-basic/post-443/</link>
					<comments>https://seek-rise.com/web-development/php-basic/post-443/#respond</comments>
		
		<dc:creator><![CDATA[NOA（ノア）]]></dc:creator>
		<pubDate>Mon, 22 Dec 2025 14:26:50 +0000</pubDate>
				<category><![CDATA[Web開発学習ロードマップ]]></category>
		<category><![CDATA[6.PHP基礎]]></category>
		<category><![CDATA[Web開発]]></category>
		<category><![CDATA[初心者]]></category>
		<category><![CDATA[PHP基礎]]></category>
		<category><![CDATA[PHPセッション]]></category>
		<category><![CDATA[ログイン処理]]></category>
		<guid isPermaLink="false">https://seek-rise.com/?p=443</guid>

					<description><![CDATA[ここまでの記事で、フォーム処理・バリデーション・XSS・CSRF と、安全に入力を扱うための基礎 を一通り学びました。 しかし、Webアプリケーションにはもう一つ欠かせない要素があります。 それが、「状態を保持する仕組み [&#8230;]]]></description>
										<content:encoded><![CDATA[<p data-start="250" data-end="319">ここまでの記事で、<br data-start="259" data-end="262" />フォーム処理・バリデーション・XSS・CSRF と、<br data-start="288" data-end="291" /><strong data-start="291" data-end="308">安全に入力を扱うための基礎</strong> を一通り学びました。</p>
<p data-start="321" data-end="358">しかし、Webアプリケーションには<br data-start="338" data-end="341" />もう一つ欠かせない要素があります。</p>
<p data-start="360" data-end="387">それが、<br data-start="364" data-end="367" /><strong data-start="367" data-end="383">「状態を保持する仕組み」</strong> です。</p>
<p data-start="389" data-end="443">・ログイン状態を覚えておきたい<br data-start="404" data-end="407" />・前の画面の情報を引き継ぎたい<br data-start="422" data-end="425" />・ユーザーごとに情報を管理したい</p>
<p data-start="445" data-end="483">これらを実現するために使われるのが、<br data-start="463" data-end="466" /><strong data-start="466" data-end="479">PHPのセッション</strong> です。</p>
<p data-start="485" data-end="546">この記事では、<br data-start="492" data-end="495" /><strong data-start="495" data-end="532">セッションとは何か、なぜ必要なのか、<br data-start="515" data-end="518" />PHPでの基本的な使い方</strong> をコード付きで解説します。</p>
<hr data-start="548" data-end="551" />

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">この記事で学べること</a></li><li><a href="#toc2" tabindex="0">セッションとは何か</a></li><li><a href="#toc3" tabindex="0">クッキーとセッションの違い</a></li><li><a href="#toc4" tabindex="0">セッションは何に使われるのか</a></li><li><a href="#toc5" tabindex="0">セッションを使うための準備</a></li><li><a href="#toc6" tabindex="0">セッションを開始する</a><ol><li><a href="#toc7" tabindex="0">サンプルコード①：セッション開始</a></li><li><a href="#toc8" tabindex="0">ポイント</a></li></ol></li><li><a href="#toc9" tabindex="0">セッションに値を保存する</a><ol><li><a href="#toc10" tabindex="0">サンプルコード②：セッションに保存</a></li></ol></li><li><a href="#toc11" tabindex="0">セッションから値を取り出す</a><ol><li><a href="#toc12" tabindex="0">サンプルコード③：セッションの取得</a></li></ol></li><li><a href="#toc13" tabindex="0">ログイン状態を管理する考え方</a></li><li><a href="#toc14" tabindex="0">ログイン成功時の例</a><ol><li><a href="#toc15" tabindex="0">サンプルコード④：ログイン成功時</a></li></ol></li><li><a href="#toc16" tabindex="0">ログイン状態を判定する</a><ol><li><a href="#toc17" tabindex="0">サンプルコード⑤：ログインチェック</a></li></ol></li><li><a href="#toc18" tabindex="0">ログアウト処理の基本</a><ol><li><a href="#toc19" tabindex="0">サンプルコード⑥：ログアウト</a></li></ol></li><li><a href="#toc20" tabindex="0">セッション使用時の注意点</a></li><li><a href="#toc21" tabindex="0">セッションとCSRFの関係</a></li><li><a href="#toc22" tabindex="0">初心者がよくやるミス</a></li><li><a href="#toc23" tabindex="0">まとめ</a></li><li><a href="#toc24" tabindex="0">次に読むべき記事</a></li></ol>
    </div>
  </div>

<h2 data-start="553" data-end="566"><span id="toc1">この記事で学べること</span></h2>
<p data-start="568" data-end="654">・セッションとは何か<br data-start="578" data-end="581" />・なぜセッションが必要なのか<br data-start="595" data-end="598" />・session_start の役割<br data-start="616" data-end="619" />・セッションへの保存・取得方法<br data-start="634" data-end="637" />・ログイン処理につながる考え方</p>
<hr data-start="656" data-end="659" />
<h2 data-start="661" data-end="673"><span id="toc2">セッションとは何か</span></h2>
<p data-start="675" data-end="717">セッションとは、<br data-start="683" data-end="686" /><strong data-start="686" data-end="713">ユーザーごとにサーバー側で情報を保存する仕組み</strong> です。</p>
<p data-start="719" data-end="762">Webの通信（HTTP）は、<br data-start="733" data-end="736" />本来 <strong data-start="739" data-end="750">状態を持たない</strong> という特徴があります。</p>
<p data-start="764" data-end="768">つまり、</p>
<p data-start="770" data-end="799">・ページを移動すると<br data-start="780" data-end="783" />・前の情報は基本的に失われる</p>
<p data-start="801" data-end="810">という仕組みです。</p>
<p data-start="812" data-end="833">この弱点を補うのが、<br data-start="822" data-end="825" />セッションです。</p>
<hr data-start="835" data-end="838" />
<h2 data-start="840" data-end="856"><span id="toc3">クッキーとセッションの違い</span></h2>
<p data-start="858" data-end="879">混同しやすいので、<br data-start="867" data-end="870" />ここで整理します。</p>
<p data-start="881" data-end="931">・クッキー<br data-start="886" data-end="889" />　→ ブラウザ（ユーザー側）に保存<br data-start="906" data-end="909" />・セッション<br data-start="915" data-end="918" />　→ サーバー側に保存</p>
<p data-start="933" data-end="940">セッションは、</p>
<p data-start="942" data-end="967">・内容が外から見えない<br data-start="953" data-end="956" />・改ざんされにくい</p>
<p data-start="969" data-end="998">という点で、<br data-start="975" data-end="978" /><strong data-start="978" data-end="997">重要な情報の管理に向いています</strong>。</p>
<hr data-start="1000" data-end="1003" />
<h2 data-start="1005" data-end="1022"><span id="toc4">セッションは何に使われるのか</span></h2>
<p data-start="1024" data-end="1034">代表的な利用例です。</p>
<p data-start="1036" data-end="1089">・ログイン状態の管理<br data-start="1046" data-end="1049" />・ユーザーIDの保持<br data-start="1059" data-end="1062" />・一時的なメッセージ表示<br data-start="1074" data-end="1077" />・フォームの確認画面</p>
<p data-start="1091" data-end="1123">Webサービスでは、<br data-start="1101" data-end="1104" /><strong data-start="1104" data-end="1119">ほぼ必ず使われる仕組み</strong> です。</p>
<hr data-start="1125" data-end="1128" />
<h2 data-start="1130" data-end="1146"><span id="toc5">セッションを使うための準備</span></h2>
<p data-start="1148" data-end="1186">PHPでセッションを使うには、<br data-start="1163" data-end="1166" /><strong data-start="1166" data-end="1179">必ず最初に行う処理</strong> があります。</p>
<p data-start="1188" data-end="1218">それが、<br data-start="1192" data-end="1195" /><strong data-start="1195" data-end="1214">session_start()</strong> です。</p>
<hr data-start="1220" data-end="1223" />
<h2 data-start="1225" data-end="1238"><span id="toc6">セッションを開始する</span></h2>
<h3 data-start="1240" data-end="1260"><span id="toc7">サンプルコード①：セッション開始</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();
</code></pre>
</div>
<hr data-start="1297" data-end="1300" />
<h3 data-start="1302" data-end="1310"><span id="toc8">ポイント</span></h3>
<p data-start="1312" data-end="1381">・この1行でセッションが使えるようになる<br data-start="1332" data-end="1335" />・$_SESSION という配列が利用可能になる<br data-start="1359" data-end="1362" />・必ず <strong data-start="1366" data-end="1375">出力より前</strong> に書く</p>
<hr data-start="1383" data-end="1386" />
<h2 data-start="1388" data-end="1403"><span id="toc9">セッションに値を保存する</span></h2>
<p data-start="1405" data-end="1427">セッションは、<br data-start="1412" data-end="1415" />連想配列として扱います。</p>
<h3 data-start="1429" data-end="1450"><span id="toc10">サンプルコード②：セッションに保存</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();

<span class="hljs-variable">$_SESSION</span>[<span class="hljs-string">'username'</span>] = <span class="hljs-string">'太郎'</span>;
</code></pre>
</div>
<p data-start="1518" data-end="1522">これで、</p>
<p data-start="1524" data-end="1546">・キー：username<br data-start="1536" data-end="1539" />・値：太郎</p>
<p data-start="1548" data-end="1567">が、<br data-start="1550" data-end="1553" />ユーザーごとに保存されます。</p>
<hr data-start="1569" data-end="1572" />
<h2 data-start="1574" data-end="1590"><span id="toc11">セッションから値を取り出す</span></h2>
<p data-start="1592" data-end="1616">保存した値は、<br data-start="1599" data-end="1602" />別のページでも取り出せます。</p>
<h3 data-start="1618" data-end="1639"><span id="toc12">サンプルコード③：セッションの取得</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();

<span class="hljs-keyword">echo</span> <span class="hljs-variable">$_SESSION</span>[<span class="hljs-string">'username'</span>];
</code></pre>
</div>
<p data-start="1705" data-end="1742">ページを移動しても、<br data-start="1715" data-end="1718" />同じユーザーであれば<br data-start="1728" data-end="1731" />この値は保持されます。</p>
<hr data-start="1744" data-end="1747" />
<h2 data-start="1749" data-end="1766"><span id="toc13">ログイン状態を管理する考え方</span></h2>
<p data-start="1768" data-end="1790">ログイン処理では、<br data-start="1777" data-end="1780" />次のように考えます。</p>
<p data-start="1792" data-end="1843">・ログイン成功時<br data-start="1800" data-end="1803" />　→ セッションに情報を保存<br data-start="1817" data-end="1820" />・ログアウト時<br data-start="1827" data-end="1830" />　→ セッションを削除</p>
<p data-start="1845" data-end="1876">この仕組みだけで、<br data-start="1854" data-end="1857" /><strong data-start="1857" data-end="1870">ログイン状態を管理</strong> できます。</p>
<hr data-start="1878" data-end="1881" />
<h2 data-start="1883" data-end="1895"><span id="toc14">ログイン成功時の例</span></h2>
<h3 data-start="1897" data-end="1917"><span id="toc15">サンプルコード④：ログイン成功時</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();

<span class="hljs-variable">$_SESSION</span>[<span class="hljs-string">'is_login'</span>] = <span class="hljs-literal">true</span>;
<span class="hljs-variable">$_SESSION</span>[<span class="hljs-string">'user_id'</span>] = <span class="hljs-number">1</span>;
</code></pre>
</div>
<p data-start="2011" data-end="2015">これで、</p>
<p data-start="2017" data-end="2044">・ログインしているか<br data-start="2027" data-end="2030" />・誰がログインしているか</p>
<p data-start="2046" data-end="2070">を、<br data-start="2048" data-end="2051" />セッションで判断できるようになります。</p>
<hr data-start="2072" data-end="2075" />
<h2 data-start="2077" data-end="2091"><span id="toc16">ログイン状態を判定する</span></h2>
<h3 data-start="2093" data-end="2114"><span id="toc17">サンプルコード⑤：ログインチェック</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();

<span class="hljs-keyword">if</span> (!<span class="hljs-keyword">empty</span>(<span class="hljs-variable">$_SESSION</span>[<span class="hljs-string">'is_login'</span>])) {
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'ログイン中です'</span>;
} <span class="hljs-keyword">else</span> {
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'ログインしてください'</span>;
}
</code></pre>
</div>
<p data-start="2239" data-end="2273">この判定は、<br data-start="2245" data-end="2248" /><strong data-start="2248" data-end="2266">ログインが必要なページすべて</strong> に書きます。</p>
<hr data-start="2275" data-end="2278" />
<h2 data-start="2280" data-end="2293"><span id="toc18">ログアウト処理の基本</span></h2>
<p data-start="2295" data-end="2319">ログアウト時には、<br data-start="2304" data-end="2307" />セッションを破棄します。</p>
<h3 data-start="2321" data-end="2339"><span id="toc19">サンプルコード⑥：ログアウト</span></h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<pre class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-title function_ invoke__">session_start</span>();

<span class="hljs-variable">$_SESSION</span> = [];
<span class="hljs-title function_ invoke__">session_destroy</span>();
</code></pre>
</div>
<p data-start="2412" data-end="2448">これで、<br data-start="2416" data-end="2419" />セッションに保存されていた情報は<br data-start="2435" data-end="2438" />すべて削除されます。</p>
<hr data-start="2450" data-end="2453" />
<h2 data-start="2455" data-end="2470"><span id="toc20">セッション使用時の注意点</span></h2>
<p data-start="2472" data-end="2488">セッションを使う際の注意点です。</p>
<p data-start="2490" data-end="2539">・session_start を忘れない<br data-start="2510" data-end="2513" />・出力前に呼び出す<br data-start="2522" data-end="2525" />・重要情報を入れすぎない</p>
<p data-start="2541" data-end="2587">特に、<br data-start="2544" data-end="2547" /><strong data-start="2547" data-end="2570">session_start の書き忘れ</strong> は<br data-start="2572" data-end="2575" />非常によくあるミスです。</p>
<hr data-start="2589" data-end="2592" />
<h2 data-start="2594" data-end="2610"><span id="toc21">セッションとCSRFの関係</span></h2>
<p data-start="2612" data-end="2649">前回学んだ<br data-start="2617" data-end="2620" />CSRFトークンも、<br data-start="2630" data-end="2633" />セッションに保存されていました。</p>
<p data-start="2651" data-end="2655">これは、</p>
<p data-start="2657" data-end="2684">・ユーザーごとに<br data-start="2665" data-end="2668" />・安全に<br data-start="2672" data-end="2675" />・値を保持する</p>
<p data-start="2686" data-end="2710">という、<br data-start="2690" data-end="2693" />セッションの特性を活かした例です。</p>
<hr data-start="2712" data-end="2715" />
<h2 data-start="2717" data-end="2730"><span id="toc22">初心者がよくやるミス</span></h2>
<p data-start="2732" data-end="2745">セッションで多いミスです。</p>
<p data-start="2747" data-end="2808">・session_start を書き忘れる<br data-start="2768" data-end="2771" />・セッションが消える理由が分からない<br data-start="2789" data-end="2792" />・ログイン判定を書いていない</p>
<p data-start="2810" data-end="2841">「セッションはページをまたぐ」<br data-start="2825" data-end="2828" />という点を意識しましょう。</p>
<hr data-start="2843" data-end="2846" />
<h2 data-start="2848" data-end="2854"><span id="toc23">まとめ</span></h2>
<p data-start="2856" data-end="2880">この記事では、<br data-start="2863" data-end="2866" />PHPのセッションについて、</p>
<p data-start="2882" data-end="2919">・セッションの役割<br data-start="2891" data-end="2894" />・保存と取得の方法<br data-start="2903" data-end="2906" />・ログイン管理の考え方</p>
<p data-start="2921" data-end="2928">を学びました。</p>
<p data-start="2930" data-end="2981">セッションが理解できると、<br data-start="2943" data-end="2946" />Webアプリケーションは<br data-start="2958" data-end="2961" />一気に <strong data-start="2965" data-end="2974">実用的な形</strong> になります。</p>
<hr data-start="2983" data-end="2986" />
<h2 data-start="2988" data-end="2999"><span id="toc24">次に読むべき記事</span></h2>
<p data-start="3001" data-end="3037">▶ 次の記事<br data-start="3007" data-end="3010" /><a href="https://seek-rise.com/web-development/php-basic/post-446/">6-13 PHPでログイン処理の基本を作ってみよう</a></p>
<p data-start="3039" data-end="3068">▶ 関連記事<br data-start="3045" data-end="3048" /><a href="https://seek-rise.com/web-development/php-basic/post-441/">6-11 CSRFとは？仕組みと対策</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://seek-rise.com/web-development/php-basic/post-443/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">443</post-id>	</item>
	</channel>
</rss>
