[PHP-users 744] Re: session情報取得を関数化した場合

S.Sugichan php-users@php.gr.jp
Tue, 17 Jul 2001 12:54:06 +0900


杉山です。

 MLへ返信が出来無かったため、その間、たくさんの方に返答いただきました。
 基本的なところで迷っていたみたいです。

 正しく処理出来ないと以下のようなWarningになるって事ですか?
Warning: Undefined variable: uname in ???/acflib.php on line 297
Warning: Undefined variable: uname in ???/acflib.php on line 298

問題点:
 関数化した場合、セッションで登録した情報引き出せない。

解決方法:
 関数内でセッションの処理をする場合、セッションに登録した変数名をglobal
として宣言する必要がある。

指摘していただいた、return $unameに関しては投稿時抜粋する作業において私の
ミスです。すいませんでした。

 早速、globalと宣言して問題は解決しましたが、どうも理解できなかった為
以下のソースを作ってみました。

  $uname ="";
  $dummy = get_uname("web",$PHPSESSID);
  print "ユーザ名:$uname<HR>";

[共通関数部]
  function get_uname($mode,$sid)
  {
    session_start();
    return("dummy");
  }

 なるほど、これ$unameが正しく拾えるということは、globalにする必要がある
んですね。

 納得しました。

S.Sugichan(ぎゃま)
Mail: sugichan@tkd.att.ne.jp