[PHP-users 32597] Re: セッションで制限しているページが見えてしまう
アイレス 松本
matsumoto @ ailes.co.jp
2007年 9月 5日 (水) 11:57:06 JST
matsuです。Nakaoさん、ありがとうございます。
> (1)でセッション開始して$_SESSION['abc'] = 1;してますよね。
> このあと(2)〜(4)の間、(1)のセッションは終了してあるんでしょうか?
セッションは終了していません。
セッションを終了してしまうと、B.phpで$_SESSION['abc']を使った判定ができません。
> 書かれている内容からだけだと、(2)〜(3)は特に関係ないようにみえるんですが。
> 単に(1)でセッション開始して、A.php開いた証である$_SESSION['abc'] = 1;が
> セットしてあり、(4)では(1)のセッションが有効でB.php開いたときに$_SESSION['abc']
> = 1;
> だから通常処理が実行されていると読めてしまいますが。
その通りなのですが、B.phpは最初に開いたブラウザから実行されるのではなく、
最初に開いたブラウザ(A.phpのソース)をローカルへコピーしたhtmlから実行される
ということです。
通常、B.phpのアドレスがわかっているものとして、
A.phpを開いている状態で、別にIEを起動して、直接入力でB.phpを実行しようとしても
$_SESSION['abc']でエラーとして検地できます。
ローカルへコピーしたhtmlを開くとき、別WindowのIEが起動するのですが、
リンクをクリックすると、B.phpが実行できてしまいます。
> 後(3)がよく分かりません。
> <A>タグのlocation.hrefにはB.phpのURLが記載されているのでは?
> なぜ(3)でA.phpのURLが記載されていることになっているのでしょうか?
すみません、説明不足でした。
location.hrefには相対パス(../B.php)を使用しているので、そのままだと
ローカルに保存したhtmlを開いてリンクをクリックしてもB.phpが開けないケースを
想定しています。
--------------------------------------------------------------------------------
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
PHP-users メーリングリストの案内