セッション session

セッションについて学ぼう

今回はセッションについて学んでいきましょう。セッションは、ログインをする時、二重投稿を禁止する時に利用します。

クッキーと似ていますが、セッションはサーバー側にだけ、特定の文字列が保存されます。

 

二重投稿を禁止する時に利用する

ログインの時に利用

前回入力したユーザー名が分かる

カートに入れた商品が分かる

サーバー側にだけ保存される

 

 

セッションを利用する

そもそもセッションとは?

セッションとはWebサイトにアクセスして行う一連の行動の事です。

Webサイトにアクセス、そのサイトから出て行く、戻るボタンを押す、ブラウザを閉じるまでが1セッションとなります。

ログインの場合、ログインをしてからログアウトをするまでを一つのセッションとします。

 

セッションを使う理由とは?

http通信では状態を保存する方法がありません。つまり、同じ人だと判別できません。

すると、ログイン画面が利用できなくなってしまいます。

セッション

 

セッションを利用して、何回目のアクセスなのか?

誰がアクセスしているのか?

などを保存しておける仕組み。これがあるので、アクセス解析、会員ページを利用できるようになります。

session参照>>

 

セッションは、PHPSSIDという特殊なクッキーを利用します。クッキーはサーバーには保存されず、クライアントの側だけに保存されます。

 

入り口から出口まで

アクセス解析や、ログインに利用されている

 

 

セッションとは

セッションは、ログイン情報を保存するのに利用されます。

PHPのセッションは、PHPSESSIDという名前のクッキーを使います。

 

1回目:クッキー(PHPSESSID)の発行

 

 

1. ページにアクセスして、クッキーを要求します。

2.セッションを発行します

3.セッションを送ります

4.セッションを保存します

 

サーバーはセッションIDを参照して自動的にWebサーバ上のファイル、もしくはデータベースに保存されているデータと関連付けます

 

 

2回目:セッションを発行済みの場合

すでにクッキー(PHPSSID)を持っている場合。

 

 

 

1. ページにアクセスしたときに、すでに発行されている、PHPSSIDをサーバーに送ります。

2. サーバーに保存してある、値を参照します。

3. リクエスト(ページなど)を返します。

 

 

【セッションを使う理由とは】

セッションは、サーバー側にデーターを保存してあります。

これが、クッキーと違う点です。

サーバー側にデータを保存してあるので、書き換えなどができません。つまり、セキュリティーが高まります。

 

さらに、実際のデータがネットワーク上に流れません

なりすましを防止する事ができます。

 

セッションを使ってみよう

session_start関数がある

セッションの使い方ですが、シンプルに session_start関数 を使って開始します。

ユーザーがページにアクセスする事で、セッションがスタートします。

 

「session_start関数」が呼ばれて、$_SESSIONという、スーパーグローバル変数が使えるようになります。

$_SESSIONは、セッション情報を保持するためのスーパーグローバル変数です。

 

session_start();

 

「session_start();」を宣言することで、セッション管理を開始します。

 

セッションへ変数を登録するには

<?php
session_start();
$_SESSION[‘username’] = ”maki”; //$_SESSIONが使える。
?>

 

このように書きます。 「maki」という文字列を保存しています。

 

中身を取り出すには

session_start();
$_SESSION[‘username’] = ”maki”;
echo $_SESSION[‘username’] ;
?>

 

セッションはサーバー側に保存されています。

違うWebページにまたがっても、同じセッションを取り出すことができます。

 

PHPでセッションを使う方法~基本から応用まで>>

 

サーバー側について詳しく

xamppだとhtdocsフォルダと同じ階層のtmpフォルダに、セッションの情報が作成されます。

$_SESSIONに書いたものは全部このファイルに書かれます。

 

 

セッションを削除する方法

セッションを削除する場合、サーバー側とユーザー側の二つの側面を考える必要があります。

サーバーとユーザー側、両方のセッションを消す必要がある。という事です。

まずは、正しい書き方です。

 

<?php
// セッション変数を全て解除する
$_SESSION = array();

// セッションを切断するにはセッションクッキーも削除する。
// Note: セッション情報だけでなくセッションを破壊する。
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// サーバー側のセッションを破壊する
session_destroy();
?>

 

【参照】

セッションの破棄方法について>>

 

 

セッションを完全に破棄する方法

この方法が完璧です。

 

<?php
// セッション変数を全て解除する
$_SESSION = array();

// セッションを切断するにはセッションクッキーも削除する。
// クライアントに「クッキー」として記録されているセッションIDの破棄をします。
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// サーバー側のセッションを破壊する
session_destroy();
?>

 

まずはここからです。

$_SESSION = array();

 

PHPではセッション変数は連想配列の形で保持されます。

 

array()は空の配列を生成するので、連想配列$_SESSIONは初期化されます。参照をなくした$_SESSIONの中身は、ガベージコレクションによって解放されます。

 

クライアントのクッキーを破棄する

if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

 

クライアントに「クッキー」として記録されているセッションIDの破棄をします。

 

セッションIDはクッキーで管理する場合と、POSTパラメータで管理する場合があります。

クッキーで管理する場合は、クッキーを破棄しないと、クライアントのブラウザにセッションIDが残ったままになります。

 

session_name()関数とは?

session_name()は、セッションID名を取得するための関数です。

初期状態では、セッションID名は'PHPSESSID'という文字列になっています。つまり、session_name()の戻り値は'PHPSESSID'となります。

 

クッキーには、PHPSESSID=1ab6309dのような形で値が記録されています。

この場合、

セッションID=1ab6309d

となります。

サーバはセッションIDによって、誰からアクセスされたのかを判別しています(この仕組みをセッションという)。

 

ここでは、ブラウザのクッキーに記録されているPHPSESSID=1ab6309dを破棄したいわけです。

 

最初のif文は、PHPSESSIDという名前でクッキーが記録されているかを調べます。

セッション管理にクッキーを用いていない場合はここでfalseとなり、ifの中に入りません。

ifの中に入った場合はPHPSESSIDというクッキーを破棄する。

 

 

session_destroy関数

session_destroy()は、現在のセッションに 関連づけられた全てのデータを破棄 します。

これは、サーバー側のセッションIDを破棄する事を意味しています。

セッションに関するグローバル変数は破棄しません。さらに、セッションクッキーを破棄しません。

 

利用環境・・・PHP 4, PHP 5, PHP 7

 

■戻り値について

成功した場合に TRUE を、失敗した場合に FALSE を返します。

 

 

 

完全に削除するには、セッションクッキー(PHPSESSID)も 削除する必要があります。

 

PHPSESSIDを破棄するには

 

if (isset($_COOKIE["PHPSESSID"])) {
setcookie("PHPSESSID", '', time() - 1800, '/');
}

 

注意点について

session_unset()を使うように説明しているページが多くあるがこれは間違っています。

$_SESSIONを使う場合session_unset()を使ってはいけません。

 

unset($_SESSION)などもだめです。

これをすると、セッション変数を格納する連想配列が消えてしまいます。

次のセッション変数を登録できなくなってしまう。

 

 

【参照】

セッションを破棄する方法>>

session_destroyについて>>

この情報が分かりやすいです>>

 

セッションの補足

一連の処理の始まりから終わりまでを表しているということです。
今回は、2番目に記載されているHTTPセッションについて学びます。

 

例えば、ネットショッピングの場合

ログインし、商品をカートに入れ、購入まで一連の処理(セッション)として扱いたいですが、HTTPはステートレスのため、一連の処理(セッション)として扱えません。


そこでCookieを利用して、一連の処理(セッション)として扱います。

 

Cookieに一意の値を入れ、リクエストするときにCookieにある値も一緒に送ってもらうことで、識別可能になり、一連の処理として扱えるようになります。


Cookieを利用することで、セッション管理が行えます。

 

リクエストするときに識別可能な値を入れてもらうだけなので、Cookieを使わずに、リンクのURLに値を記述してリクエストしてもらったり、フォームに値を記述してリクエストしてもらうことで、セッション管理することも可能です。 ただ他の方法は、Cookieを使う方法と比べて、情報が漏洩する可能性が高いので、Cookieを使ってセッション管理するのが一般的です。

 

【参照】

セッションについて>>

 

PHPの勉強方法

目安は1日3~5時間の勉強で100日程度です。実際にやってみましたが、仕事をしながらだと、200日ほどかかります。なぜなら、休日の家族サービス。モチベーションの低下などがあるからです。

前置きはさておき、まずは勉強方法です。

 

 

PHPを学ぶには、独自の言葉を覚える必要があります。「・」が付いているものは、外部のサイトへ飛びます。

 

■ 基本編 ■

PHPとは?

設定方法

PDOとは何か?

mysql_connect()

postを使ってみよう

コンストラクタとは?

-> アロー演算子とは?

データベースへのアクセスについて

セッションとは

ファイルのアップローダー

CSRF対策

二重投稿の禁止

ハッシュ値とは?

 

■ DBへの接続■

管理者権限について

PDOについて知ろう

PDOを使ってMYSQLに接続しよう

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

■ オブジェクト指向■

クラス・インスタンス・プロパティ

オブジェクト指向とは?

 

 

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザー

 

 

MYSQLについて

MYSQLの学習方法について。DBの操作方法を覚えます。 四大操作をまずは覚えておきましょう。

 

■ 基本編 ■

MYSQLとは?

CURDについて

更新について

削除について

アップデートについて

 

フェッチするとは?

 

■ 設計について■

UMLとは何か?

ER図を覚えよう

 

 

 

 

コードイグナイターの勉強方法

 

コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。

 

DB設定 ⇒ 接続 ⇒ SQLクエリ ⇒ DB暮クラスの機能 ⇒ 結果の取得 の順に学ぶとよい。

http://www.ci-guide.info/db/

 

SQLのクエリ発行には2種類がある。通常方法と、「Acive Record」の2種類です。

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

 

【参照】

http://www.ci-guide.info/

http://pneskin2.nekoget.com/codeigniter/3/user_guide/index.html

どちらかを見ましょう。

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。

 

 

勉強に必要な書籍について

必ず、最新のverを買うようにしてください。PHPはバージョンによって、かなり違います。PHP、MYSQL、、サーバー、フレームワークと幅広く勉強する必要があります。

 

本はかならず、2冊用意するようにしましょう。1冊は基本、もう1冊は分からない部分を補完してくれます。

ちなみに、無名関数、コールバック関数などは、何度勉強してもつまずく可能性があります。

 

PHPサーバーサイドプログラミング

基本から詳しく書いてあるが、ところどころ、省略されていて分かりずらい。

パーフェクトPHP

ある程度、分かってから使うとよい

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

プログラムはなぜ動くのか?

パソコンが動く、原理と基本がわかります

ここが分かると、配列、ポインタなどが分かります

体型的に学ぶ完全なwebアプリケーションの作り方

XSSなどの基本的なセキュリティー対策が分かります。

 

【MYSQLについて】

データベースについて学びます。「SELECT」を極めましょう。型の指定方法などが学べます。

 

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

達人に学ぶdb設計 徹底指南書

基本が終わったら、必ず読みましょう。

 

【サーバーについて】

サーバー、ファイル権限について学びます。

 

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

 

【DB設計について】

DBの設計方法について学ぶことができます。

 

楽々ERDレッスン

DBの設計に必要

UML入門

基本について学んでおくとよい

 

 

参照サイト

オブジェクト指向とは?

PDOとは何か?

mysql_connect()

アロー演算子とは?

データベースへのアクセスについて

 

大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします

 

 

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に知っておきたいマーケティング

についてご紹介いたします。

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか

についてご紹介させていただきます。

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておくことも大事です。

キーワードを上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は

そんな大きなキーワードで対策をしてはいけません。

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター