• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

AjaxとSESSIONの甘い罠にご注意!

2018年8月13日

  • このエントリーをはてなブックマークに追加

こんにちは、Webプログラマの篠田です。

夏真っ盛りですね。連日の猛暑で今年も辛いですw。

今回は、需要が高いJavaScriptとPHPの連携であるAjaxを活用するときのSESSIONに関する「罠」についてご紹介します。

この記事の目次

  • 1 Ajaxは便利!
  • 2 AjaxとSESSIONの罠
  • 3 不具合の原因
  • 4 Ajaxとの付き合い方
  • 5 まとめ

Ajaxは便利!

Ajaxは、ブラウザで入力された内容や操作を、JavaScriptを使ってPHP(サーバーサイド)にデータを送り、PHPの結果をJavaScriptでブラウザに反映するという技術です。

非常に便利で、画面遷移を必要としないシームレスなシステムを開発することができます。

ただ、PHP側の設計によって見落としがちな問題が発生する場合があります。

AjaxとSESSIONの罠

SESSIONは、ページ間を横断するときに、「情報」を保持したまま移動するために活用するPHPの仕組みです。
※「情報」とは、この場合ログイン情報やカート情報などを指します。

本来であれば、画面遷移ごとに「情報」を送信する処理(GETやPOST)が必要になりますが、SESSIONを使えば、都度の送信処理を行わずに済みます。

このSESSIONとAjaxが合わさるときに注意が必要になります。

SESSIONは、ブラウザが表示中「情報」を保持し続けます。
それは、ブラウザのタブを追加しても効果は変わりません。

そのため、複数のブラウザタブで同じ画面、違う操作を行うときに不具合が発生します。

具体的に、例をあげてご紹介しましょう。

例)商品情報をAjaxを使って更新する仕組み
(1)更新したい「商品A」を選び、更新画面を表示させる。
※商品を選択して更新画面に移動した際に、選択された商品の「商品ID」はSESSIONに保存されるとします。

(2)同じブラウザで別タブを開き、別の「商品B」を選び更新画面を表示します。

(3)(1)で開いたタブに表示されている「商品A」の情報を更新します。

(4)更新処理は、Ajaxを使い「更新内容のみ」をPHPに送信します。

(5)PHP側では「直前に保持したSESSION」を使い「商品ID」を取得します。

(6)取得した「商品ID」と送られてきた「更新情報」を使い、商品内容を更新します。

さて、この処理のどこに問題があるでしょうか?

実は、「商品A」を更新したと思ったのに、「商品B」が書き換わるという現象が発生する恐れがあります。

不具合の原因

原因は、「商品情報の更新にSESSIONを利用している」という点です。

今回の例の場合、「更新画面」に遷移するときに「商品ID」がSESSIONに保存されます。
そのため、(1)の操作後に(2)の操作をするとSESSIONに保存される商品IDが書き換わってしまいます。

(1)で表示されている画面は、画面更新がされないので「商品A」の情報が表示され、SESSIONが書き換わったことに気づかずに、商品情報を更新してしまうことが考えられます。

Ajaxとの付き合い方

対処方法としては、「商品ID」をSESSIONで取得せずに、Ajaxで商品情報を送信する際に一緒に含めることで、対応が可能です。

Ajaxで、SESSIONを利用しないのではなく、変動的な値に関しては随時情報を送信するのが安心です。
逆に、普遍的な情報(ログイン情報など)を持つSESSIONは、Ajaxでも問題が起こりにくいです。

まとめ

複数タブを立ち上げて操作するという流れは、比較的どんな画面でも想定できます。

そのため、SESSION情報の盲信は、思いがけないバグを生み出す可能性がありますので、ご注意ください。

 


現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。

ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。

・ALAKIのWebシステム開発

・ALAKIのクラウド型受発注システム

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • 13993703_xxl

    PHP分割関数の私的ベストプラクティス

    22 12月, 2016

  • 5050691_s

    Web制作の現場から、JavascriptやPHPの「デバッグ」について考える

    14 9月, 2021

  • スクリーンショット 2022-10-30 7.21.39

    Unity Starter AssetsのThird Person Character Controllerで三人称視点を簡単に実装する

    30 10月, 2022

  • Next story 第6回・7回「ALAKI ◯◯Lab」を開催します!
  • Previous story WebARはじめてみませんか?〜第1回 AR.jsで簡単WebAR〜

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.