今となっては,ほぼどんなブラウザでもクッキーを使うことができますし,逆にクッキーを使うほうが安全です。このページに書いたことは使わないほうがいいでしょう。php.ini
に
session.use_only_cookies = On
と書いておけば,必ずクッキーだけを使うようになります。
クッキーが使えない場合も含めてセッション管理が楽にできるように,SID
というものが用意されています。これは,クッキーが使えるときは空ですが,クッキーが使えないときは,セッション名とセッションIDを =
でつないだ
PHPSESSID=b1ba7mgdedq3rddbadsav5k0r3
のような文字列になります。
これを使って,クッキーが使えないときでもセッション管理ができるようにした例です。
過去のメッセージ:
<?php session_set_cookie_params(0, '/~okumura/'); session_start(); ?> …… <form action="ses2.php?<?php echo htmlspecialchars(SID); ?>" method="post"> <p>メッセージ: <input name="msg"></p> </form> <?php if (!isset($_SESSION['msgs'])) { $_SESSION['msgs'] = ''; } if (isset($_POST['msg'])) { $_SESSION['msgs'] .= $_POST['msg'] . "\n"; } if (isset($_SESSION['msgs'])) { echo "<p>過去のメッセージ</p>:\n"; echo "<pre>\n"; echo htmlspecialchars($_SESSION['msgs']); echo "</pre>\n"; } ?>
このように,PHPで出力するものはすべて htmlspecialchars()
を通してから出力しないいとクロスサイトスクリプティングが起こり得ます。
Last modified: