Flashでxoopsにログイン、状態取得などやってみる
早速ですがコードです。「username.php」とします。
<?php include "./mainfile.php"; if(!empty($xoopsUser)) { // ログインユーザ名の取得 $uname = $xoopsUser->getVar('name'); if($uname == '') { $uname = $xoopsUser->getVar('uname'); } // ログインユーザIDの取得 $uid = $xoopsUser->getVar('uid'); header("Content-type: text/plain"); //LoadVarsで読める形式にして書き出し echo "&uname=".$uname."&uid=".$uid."&"; }else{ echo "not logon"; } ?>
これは何をやってんのかっていうと、xoopsにログインした状態でこのPHPにアクセスすることでユーザ名とユーザIDを取得するよ、という内容です。
戻り値は「&uname=AAAA&uid=BBBB&」です(AAAA/BBBBはそれぞれ変数)。
Flash側からはLoadVarsでアクセスします。ここは簡単に、TEST_btnを押すと名前を表示、というところだけ。
var receive_lv:LoadVars = new LoadVars(); receive_lv.onLoad = function(success:Boolean):Void { if (success) { trace( this.uid + " グループの") trace( this.uname + " さん" ) } else { trace("err") } }; TEST_btn.onRelease = function() { receive_lv.load("http://YOURHOSTNAME/username.php"); };
要はPHPのecho文でLoadVarsが処理できる変数名ごと渡しちゃえば楽だよ、というだけのことです。xoopsは通常、HTMLを返すので、変数名が何なのかさえ分かっていれば、直接それを返させるようにすればいいということですね。
あと、当たり前ですが一応。LoadVarsのloadとかsendAndLoadとかの処理は、onLoadやonData処理よりも後に書いたほうが、成功したときの関数がundefinedにならないので注意です。
いちいちxoopsの返す形式まで変えてらんねーよボケ! という場合は、しょうがないのでHTMLをそのまま返させるようにして、成功したときとしないときの文字数を比較して成功したかどうかを得る、っていうのもアリかもしれません。
とりあえず、↑のコードならxoops2でもxoopsCUBEでも大丈夫でした。