goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ExcelからマクロでPHPにアクセスしたときに、セッションはどうなるか?

2014-12-18 10:43:54 | Officeソフト&VBA
セッションIDを送らなくても、引き継がれるか実験。

■ソースコード

●PHP側 session.php

<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

Hello world! <?php echo $_SESSION['count']; ?>Times.


http://php.net/manual/ja/session.idpassing.phpを参考に一部編集

●Excel側session.xls(2003以前の形式xlsで保存)

「ボタン1」をクリックしたときの処理
(「標準モジュール」として作成)

Sub ボタン1_Click()

target_url = "http://localhost/session.php"
sendData = ""

' POSTで飛ばします
Set httpObj = CreateObject("MSXML2.XMLHTTP")
httpObj.Open "POST", target_url, False
Call httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
httpObj.send (sendData)

' 結果表示
MsgBox (httpObj.ResponseText)

End Sub



■実験結果
●ボタン1をクリックすると、

Hello world! 1Times.
Hello world! 2Times.
Hello world! 3Times.

と上がっていく。ファイル(session.xls)を閉じても、Excelが開いて
いる場合は、カウントアップしていく

●Excelを閉じて、再度Excelを立ち上げ、開くと、1からカウントアップする
→つまり、Excelを閉じると、そこでセッションも切れる。


●ここで、3Timesになったとき、session.xlsをコピーし、session-コピー.xlsを
作成し、それを立ち上げ


session-コピー.xlsの「ボタン1」をクリックすると

Hello world! 4Times.
となる。つまり、Excelが同じなら、そこで開いているファイル内で
Sessionは共有される(ブラウザのタブと同じ?)

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SparkやMLlib等、Javaの機械... | トップ | Excel VBAで、REST(JSON)デー... »
最新の画像もっと見る

Officeソフト&VBA」カテゴリの最新記事