[PHP-users 25712] Re: ユーザ同士で共有できるセッション?

Yusuke Ando ando @ rikezemi.com
2005年 6月 1日 (水) 17:22:36 JST


安藤です。

セッションを同一とみなすかどうかはセッションIDによって判断されます。
通常は自動的にランダムな値が設定されていますが固定する事もできます。

全てのアクセスに対して同じセッションIDを使えば「共有するセッション」が
できるのではないでしょうか。

http://jp2.php.net/manual/ja/function.session-id.php

一般にセッションIDを固定することはセキュリティ上は好ましくありませんのでご注意ください。

以下、サンプルです。
-----
<?php
//固定名でセッションを開始
session_id('SESS12345');
session_start();

if ( !isset($_SESSION['log']) ) {
    $_SESSION['log'] = array();;
}

//submitされていたら
if ( isset($_POST['submit']) ) {
    $name = htmlspecialchars($_POST['name']);
    $msg = htmlspecialchars($_POST['msg']);
    array_unshift($_SESSION['log'],array('name'=>$name,'msg'=>$msg));
}

?>
<html>
<head>
<title>TEST</title>
</head>
<body>
<form action="<?php echo $_ENV['SCRIPT_NAME'];?>" method="POST">
名前<input type="text" name="name"><br>
発言<input type="msg" name="msg"><input type="submit" name="submit" value="送信">
</form>
<hr>
<?php
if ( is_array($_SESSION['log']) ) {
    foreach ( $_SESSION['log'] as $key => $val) {
        echo "{$val['name']}::{$val['msg']}<hr>\r\n";
    }
}
?>
</body>
</html>

-----
Yusuke Ando <ando @ rikezemi.com>


PHP-users メーリングリストの案内