引き続きセッションIDかぶっちゃう問題。
一度session_id()を取得するんじゃなくて、
session_id(md5($_SERVER[‘SERVER_ADDR’].uniqid(rand(),1)));
とかやるのはどうですか?
某所でこんなコードを書いたことがあって、正解かどうか激しく気になります。正解でしょうか?教えてください。あと、$_SERVERの値って、php.iniやらの設定で取れないことあるよね。そんな時どうしよう。どうしよう・・・
投稿者 kかべ : 2005年07月12日 14:16
kかべさんのこの案が素敵な感じがします。
調べてみるとセッションID発行とmd5(uniqid(””””,1))はほぼ等価っぽいので正解なのではないでしょうか!
php-4.3.11/ext/session/session.c
sprintf(buf, "%ld%ld%0.8f", tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
PHP_MD5Update(&context, buf, strlen(buf));
php-4.3.11/ext/standard/uniqid.c
if (more_entropy) {
sprintf(uniqid, "%s%08x%05x%.8f", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
} else {
sprintf(uniqid, "%s%08x%05x", prefix, sec, usec);
}
$_SERVERはどういうとき使えないんでしたっけ。その場合は、どうしよう・・・。
ref: PHPのセッションID3