Words in the WWW

ユーザー情報を利用する

MODxにログインしている時にユーザー情報を利用する方法。

※PHxを使用すれば、PlaceHolderで簡単に利用できますが、今回はPHx利用するとパースエラーが出るケースでの対応。

(スニペットに記述する)

$test = $modx->getLoginUserID();
if ($test) {
$arrUserInfo= $modx->getWebUserInfo($test);
} else {
$arrUserInfo= “”;
}

これで変数$arrUserInfoに(ログインしている)ユーザー情報が配列で格納されます。
それをPHP内でprint_rで確認してみましょう。

print_r($arrUserInfo);

とPHP内に記述しておくと・・・

Array (
[username] => yajima
[password] => b554****9d28****47b****9a86****2
[id] => 14
[internalKey] => 15
[fullname] => ヤジマ
[role] => 0
[email] => yajima@******.jp
[phone] => 090-****-****
[mobilephone] =>
[blocked] => 0
[blockeduntil] => 1208147688
[blockedafter] => 0
[logincount] => 15
[lastlogin] => 1208595922
[thislogin] => 1208598963
[failedlogincount] => 0
[sessionid] => f4****p33v********36p7****
[dob] => 0
[gender] => 0
[country] => 107
[state] => 東京都新宿区****-****-****
[zip] => 169-0074
[fax] =>
[photo] =>
[comment] =>
[usertype] => web )

こんな感じでユーザー情報が、確認できます。 (一部の情報は(*)で伏せさせて頂きました)

それぞれの内容は、

  • username ・・・ログインユーザー名
  • password ・・・パスワードのハッシュ値
  • id ・・・ユーザーID
  • internalKey ・・・(不明、調査中)
  • fullname ・・・名前
  • role ・・・(不明、調査中)
  • email ・・・メールアドレス
  • phone ・・・電話番号
  • mobilephone ・・・携帯電話番号
  • blocked ・・・アクセス拒否されているかどうか(アクセス拒否(1)、アクセス許可(0))
  • blockeduntil ・・・アクセス拒否される日付の期限
  • blockedafter ・・・アクセス拒否される日付の開始日
  • logincount ・・・ログイン回数
  • lastlogin ・・・最終ログイン日(現在ログインしている場合はその直前のログイン)
  • thislogin ・・・現在のログイン日
  • failedlogincount ・・・ログイン失敗回数
  • sessionid ・・・セッションID
  • dob ・・・(不明、調査中)
  • gender ・・・性別
  • country ・・・国名(日本:107)
  • state ・・・県/州(住所)
  • zip ・・・郵便番号
  • fax ・・・Fax番号
  • photo ・・・ユーザー画像
  • comment ・・・コメント
  • usertype ・・・ユーザータイプ(ウェブユーザー:web、ユーザー:manager)

例えば、ログインしたページで「○○さんようこそ!」なんて表示したい場合は、

if(isset($arrUserInfo[’fullname’])){
print $arrUserInfo[’fullname’] . ‘さんようこそ!’;
}

と言った風に記述すればOKですね。

さらに使いまわしたいなら、それぞれをPlaceHolderに登録すれば、シンプルにチャンクやテンプレートに記述できますね。