質問編集履歴

3 修正

smnsmn

smnsmn score 164

2016/07/13 14:54  投稿

「ページのソースを表示」をすると、そのページの処理は再実行されるのでしょうか?
index.php または CakePHPのアクションindex()で、
```PHP
//セッション・セッションクッキーの初期化処理を経て
//新しいセッションの開始
sesison_start();
$_SESSION['name'] = 'taro';
$_SESSION['time'] = date('Y-m-d H:i:s', strtotime('now'));
$_SESSION['id'] = session_id();
```
のように実行し、
next.php または CakePHPのアクションnext()で、
```PHP
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の処理が再実行されているからなのでしょうか。
ご教授いただけると幸いです。
何卒、よろしくお願い致します。
###追記
コメントにも記載しましたが、この「ソースを表示」を言うのは、
**ソースの先頭にview-source:を付けるとソースを表示させる、Chromeやその他いくつかのブラウザで使えるURIスキーム?だそうです。**
**URLの先頭にview-source:を付けるとソースを表示させる、Chromeやその他いくつかのブラウザで使えるURIスキーム?だそうです。**
参考:[View-source URI scheme](https://en.wikipedia.org/wiki/View-source_URI_scheme)
(サポートされているブラウザ等も書いてあります)
やはり、ソースを表示と同時に、リクエストが送られ、(PHPの場合)PHPの処理が実行されるようです。
その際、JavaScriptで行っている処理は実行されませんでした。
  • PHP

    24620 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2557 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

2 追記

smnsmn

smnsmn score 164

2016/07/13 14:54  投稿

「ページのソースを表示」をすると、そのページの処理は再実行されるのでしょうか?
index.php または CakePHPのアクションindex()で、
```PHP
//セッション・セッションクッキーの初期化処理を経て
//新しいセッションの開始
sesison_start();
$_SESSION['name'] = 'taro';
$_SESSION['time'] = date('Y-m-d H:i:s', strtotime('now'));
$_SESSION['id'] = session_id();
```
のように実行し、
next.php または CakePHPのアクションnext()で、
```PHP
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の処理が再実行されているからなのでしょうか。
ご教授いただけると幸いです。
何卒、よろしくお願い致します。
何卒、よろしくお願い致します。
 
###追記
コメントにも記載しましたが、この「ソースを表示」を言うのは、
**ソースの先頭にview-source:を付けるとソースを表示させる、Chromeやその他いくつかのブラウザで使えるURIスキーム?だそうです。**
参考:[View-source URI scheme](https://en.wikipedia.org/wiki/View-source_URI_scheme)
(サポートされているブラウザ等も書いてあります)
やはり、ソースを表示と同時に、リクエストが送られ、(PHPの場合)PHPの処理が実行されるようです。
その際、JavaScriptで行っている処理は実行されませんでした。
  • PHP

    24620 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2557 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1 説明の追記

smnsmn

smnsmn score 164

2016/07/11 15:48  投稿

「ページのソースを表示」をすると、そのページの処理は再実行されるのでしょうか?
index.php または CakePHPのアクションindex()で、
```PHP
//セッション・セッションクッキーの初期化処理を経て
//新しいセッションの開始
sesison_start();
$_SESSION['name'] = 'taro';
$_SESSION['time'] = date('Y-m-d H:i:s', strtotime('now'));
$_SESSION['id'] = session_id();
```
のように実行し、
next.php または CakePHPのアクションnext()で、
```PHP
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の処理が再実行されているからなのでしょうか。
ご教授いただけると幸いです。
何卒、よろしくお願い致します。
  • PHP

    24620 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2557 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る