読者です 読者をやめる 読者になる 読者になる

凡庸なる人のブログ

凡庸な自分が思ったことや何かしらの感想、コンピュータ系などの調べごとを書くブログです。  【結論】ってのは私個人の結論です。記事全体は個人的な調査結果や感想です。

PHPのセッション情報をjavascriptに投げる方法

【結論】可能ではあるけどセキュリティ的にどうなの?これ。

 正確には「 js1.php → js2.js → js3.php」です。

[js1.php]

<html>
<head>
   <title></title>
   <?php 
        session_start();
        $_SESSION['javascript'] = 'session_info';
     ?>
</head>
<body>
    <?php 
        echo $_SESSION['javascript']."<br>";
        
        $scr = "<script>
              window.sessionStorage.setItem(['s_num'],['".$_SESSION['javascript']."']);
              console.log('".$_SESSION['javascript']."');
              </script>";
        echo $scr;
     ?>
     <a href="js3.php">js3.php</a>
</body>
</html>
window.sessionStorage.setItem(['s_num'],['".$_SESSION['javascript']."']);

 これはブラウザのストレージに s_num というキー値で ".$SESSION['javascript']." という値を保存します。クォーテーションとダブルクォーテーションが入り組んでいてわかりづらいかもしれませんが、phpのコード内でjsのコードを変数に保存する際にphpの変数として認識する必要があります。
 すげー分かりづらい文章だわ。要するに$
SESSION['javascript']を文字列ではなく、変数として扱います。

f:id:wannabeahacker:20160309004412p:plain

session_info という文字列をjs2.js経由でjs3.phpにコピーします。

  [js2.js]

var a = window.sessionStorage.getItem(['s_num']);
console.log(a);

window.sessionStorage.getItemで保存されたものを取得します。console.log(a);は確認のためです。

[js3.js]

<html>
<head>
   <title></title>
</head>
<body>
<script type="text/javascript" src="js2.js"></script>
<a href="js1.php">js1.php</a>
</body>
</html>

f:id:wannabeahacker:20160309004534p:plain
js2.js経由でjs3.phpにsession_infoという文字列コピーした様子です。

冷静に見ると伝わりづらいわ。 リンクは自分が確認しやすいようにつけました。

【参考サイト】