Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7268

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

$
0
0
セッション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は共有される(ブラウザのタブと同じ?)


Viewing all articles
Browse latest Browse all 7268

Trending Articles