質問: session_id(); ``` のように実行し、 next.php または CakePHPのアクションnext()で、 ``` sesison_start(); print_r($_SESSION['name']); print_r($_SESSION['time']); print_r($_SESSION['id']); ``` としたときに、 **<挙動A>indexからリンクを辿ってnextに移動した場合** indexで$_SESSIONに代入した値が、nextでそのまま表示される。 **<挙動B>indexからnextのURLを直接叩いてnextに移動した場合** indexで$_SESSIONに代入した値が、nextでそのまま表示される。 **<挙動C>indexの「ページのソースを表示」し、nextのURLをコピーしてURLを直接叩き移動した場合** indexで代入した$_SESSION['name']は変わりないが、 time、idがそれぞれ新しいものに変わり、nextで表示される。 (timeはindexで代入した時間より進み、idは全く違う新しいID) (indexで代入した値ではない。つまりindexの処理がソースを表示した際に再実行されている?) という挙動に別れます。 挙動Cについて確証が持てず(初め、なぜ変わるのか気づかず・・・) ブラウザやnextに移動するときのウィンドウの問題か・・・???などとも思いましたが、違いました。 挙動Cの時だけ、indexを通っていないはずなのに、値が新しくなるということは、 「ソースを表示」でもindexの処理が再実行されているからなのでしょうか。 ご教授いただけると幸いです。 何卒、よろしくお願い致します。 ### 追記 コメントにも記載しましたが、この「ソースを表示」を言うのは、 **URLの先頭にview-source:を付けるとソースを表示させる、Chromeやその他いくつかのブラウザで使えるURIスキーム?だそうです。** 参考:View-source URI scheme (サポートされているブラウザ等も書いてあります) やはり、ソースを表示と同時に、リクエストが送られ、(PHPの場合)PHPの処理が実行されるようです。 その際、JavaScriptで行っている処理は実行されませんでした。
回答: そこの挙動はブラウザによってどうなるかは不定だと思います。 ページを表示する際に DOM だけ残してソースを捨てているブラウザなら、ソースを表示するためにもう一度とってこなくてはなりませんから、当然アクセスが生じます。