[PHP-users 736] session情報取得を関数化した場合
S.Sugichan
php-users@php.gr.jp
Mon, 16 Jul 2001 22:23:32 +0900
初めまして杉山です。
セッションの動きで理解できない点がありましたので、投稿します。
セッションから情報を取得する事を関数化してみたのですが、どうもうまく動き
ません。
session_is_registeredの結果はtrueを返すのですが、データ($uname)が入って
いない状態です。関数化する前は、取得できたので、どこが問題か不明です。
以下抜粋したソースと環境を示します。
[取得できる場合]
$uname =""; //消しておく
//$uname = get_uname("web",$PHPSESSID);
session_start();
print "ユーザ名:$uname<HR>";
正しく$unameが入る
[取得できない場合]
$include_path = ".";
require("$include_path/acflib.php");
$uname ="";
$uname = get_uname("web",$PHPSESSID); //関数化
//session_start();
print "ユーザ名:$uname<HR>";
//---acflib.phpのget_uname-start--//
function get_uname($mode,$sid)
{
//session_id($sid);
session_start();
$logs = "sid = $sid\n";
if (session_is_registered("uname")){$logs .= "true\n";}else{$logs .= "false\n";}
//session_register(uname);
$logs .= "uname = $uname";
if($uname == "")
{
//とりあえずrefreshでしのぐ
print "<html><hrad>
print "<META http-equiv=\"refresh\"content=\"100;URL=/index.html">"
print "</head>\n"
print "<BODY>";
print "$logs";
print "</BODY></html>\n";
//header("Location: ?????????????????????????");
//トップサイトにリダイレクトする
exit;
}
}
//---acflib.phpのget_uname-end--//
$logsはこんなかんじ
sid = e38939d459e9edf8109692a37cb3ab29
true
uname =
使用してる環境は
RedhatLinux7.0J
Apache1.3.20
PHP4.0.6
PHP.INI
upload_tmp_dir = /tmp <-本件とは関係なし?
session.cache_limiter = public
session.gc_maxlifetime = 120
session.gc_probability =10
session.cookie_lifetime =60
session.use_cookies =0
./configure
--without-mysql
--enable-track-vars
--with-apxs=/usr/local/apache/bin/apxs
--enable-versioning
--with-gd
--enable-trans-sid
--enable-mbstring
--enable-mbstr-enc-trans
--enable-sysvsem
--enable-sysvshm
--enable-shmop
S.Sugichan(ぎゃま)
Mail: sugichan@tkd.att.ne.jp