[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