[PHP-users 34290] 同一セッションを個々のサーバで利用したい。

Alex alex.backspin @ gmail.com
2009年 2月 17日 (火) 17:38:57 JST


(メールが送信エラーになっていたようなので再度送信します。
もし2通届いていたら、ご容赦ください。)
ALEXといいます。
個々のWEBサーバで同一のセッションを利用したく、下記のサイトを参考に
テストをしているのですが上手くいかないのでご教示ください。
http://itpro.nikkeibp.co.jp/article/COLUMN/20081118/319447/
環境:
ubuntu 8.0.4
php 5.2.4
MySQL 5.0.5
apache 2.2.8
php.ini にて session.use_cookies = 0 としてクッキーを使用しないように
した。
MySQLに DB名:session_db、テーブル名:session_table として上記リンクに
ある通り
のテーブルを作成。
そのテーブルにはセッション情報を保存できる(session_test1.php)ことは確
認しました。
しかし、その情報を読み出すことができません。(session_test2.phpの結果が
空白)
このような方法意外に sharedance というソフトを利用することもできるよう
ですが、
メリットとデメリットはありますでしょうか?
また、これ以外によい方法があればご教示をお願い致します。
しかく session_test1.php
<?php
include_once("session_handler.php");
session_start();
$_SESSION["name"]="ALEX";
$_SESSION["id"]="12345678";
?>
<html>
<body>
<a href="session_test2.php">[Next]</a>
</body>
</html>
しかく session_test2.php
<?php
include_once("session_handler.php");
session_start();
?>
<html>
<body>
<?php
echo $_SESSION["name"] . "<p>";
echo $_SESSION["id"] . "<p>";
?>
</body>
</html>
しかく session_handler.php
<?php
function connect_db() {
 $db_connect =
 mysql_connect("localhost", "root", "")
 or die("Could not connect");
 return $db_connect;
}
function open ($save_path, $session_name) {
 global $db;
 $db = connect_db();
 return true;
}
function close() {
 return true;
}
function read ($id) {
 global $db;
 mysql_select_db("session_db");
 $result = mysql_query("SELECT *
 FROM session_table
 WHERE session_id='{$id}'");
 if(mysql_num_rows($result) == 1){
 $row = mysql_fetch_array($result);
 return $row['session_data'];
 } else {
 return "";
 }
}
function write ($id, $sess_data) {
 global $db;
 mysql_select_db("session_db");
 $result = mysql_query("SELECT *
 FROM session_table
 WHERE session_id='{$id}'");
 if(mysql_num_rows($result) == 1){
 $result = mysql_query("UPDATE session_table
 SET session_data='{$sess_data}'
 WHERE session_id='{$id}'");
 }else{
 $date = date('Y-m-d H:i:s');
 $result = mysql_query("INSERT INTO session_table
 VALUES('{$id}' ,
 '{$sess_data}' ,'{$date}')");
 }
 return true;
}
function destroy ($id) {
 global $db;
 mysql_select_db("session_db");
 $result = mysql_query("DELETE from session_table
 WHERE session_id='{$id}'");
 return true;
}
function gc ($maxlife_time) {
 return true;
}
session_set_save_handler
 ("open", "close", "read", "write", "destroy", "gc");
?>


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

AltStyle によって変換されたページ (->オリジナル) /