index.php または CakePHPのアクションindex()で、
PHP
1//セッション・セッションクッキーの初期化処理を経て 2: 3: 4//新しいセッションの開始 5sesison_start(); 6$_SESSION['name'] = 'taro'; 7$_SESSION['time'] = date('Y-m-d H:i:s', strtotime('now')); 8$_SESSION['id'] = session_id();
のように実行し、
next.php または CakePHPのアクションnext()で、
PHP
1sesison_start(); 2print_r($_SESSION['name']); 3print_r($_SESSION['time']); 4print_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で行っている処理は実行されませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/11 07:04