Hatena::ブログ(Diary)

今日もコーディング日和  RSSフィード Twitter

2010-09-16 さくらサーバーでPear Authを使用してFlashとHTML連携させる

Pear:AuthとFlashとHTMLの連携

作りたいもの

・自分のFlashアプリ(サイト)にログイン機能をつけユーザー管理を出来るようにする。

FlashからXMLを送信してサーバーでファイル保存を行う。

・保存したファイルはユーザー毎に分けて管理を行う。


今回は上記要件を満たすためにPear:Authを使うことにし、

サーバー側はPHPで書くことにしました。サーバーさくらのスタンダートです。

Pear:Authはホームページログイン機能を付けるためのPHPモジュールです。


sshを入れる。

サーバーの設定やDBなどをいじるためにまずssh接続できる端末を入れます。

http://support.sakura.ad.jp/support/manual/rs/tech_ssh.shtml


Pear:Authのインストール

さくらサーバーにはPearは入っていたのですがAuthは入っていなかったので、インストールします。

以下サイト参照してインストールします。インストールは先程落としたsshでつなげて実施します。

http://muneto.murakami.biz/web/auth.php

http://pear.php.net/manual/ja/installation.shared.php

pear config-create をすると、.pearrcという設定ファイルが作成され、

共有サーバーなどで、pearの自分専用のローカルコピーができるそうです。

http://pear.plus-server.net/installation.shared.html


php.iniにinclude_pathを登録

Pear:Authを使うためには、require_once("Auth.php");としてAuthをインクルードするのですが、

このままインクルードすると、自分専用のAuth.phpにパスが通っていないため参照することができません。

毎回フルパスで書いてもよいのですが、php.iniにパス登録すると便利です。

さくらインターネットサーバーコントロールパネルからPHP設定の編集を選びphp.iniを作成。

php.iniに以下を記載します。

include_path=”.:/home/ユーザー名/pear/php:”

自分は、インターネットサーバーコントロールパネルから作成すると文字化けしたので、

作った後、FTPで修正しました。

ちゃんと出来ているかはphpinfo関数で調べれられます。

http://www.phpbook.jp/install/phpini/index4.html

※注意点

include_pathは,Unixは:で区切りWindowsは;で区切ります。

http://okwave.jp/qa/q3517118.html


●Authを使ってみる

以下のサイトをみてAuthのサンプルを作ろう…といいたい所ですが、DBからユーザー名、パスワードを取り出すので

少し面倒です。

http://pear.php.net/manual/ja/package.authentication.auth.intro.php


自分は以下の本のサンプルを使いました。以下の本では配列パスワードをいれて認証する方法まで書いています。

これなら、DBの設定はいらず、Authのテストだけが簡単にできます。


PHPはほぼ初めてでしたが、Webアプリケーションの仕組み、データベースPHPの文法などすごく分かりやすかったです。

プログラム初心者にはオススメできませんが、他の言語理解している人なら必要なことがまとめて乗っているのですごくよい本だと思います。

サンプルが充実しているのもいいです。アップローダー、簡易ブログシステムの作成までサンプルあるので、この本だけあれば

いろんなものが作れそうです。

●Authの認証にDBを使う

Authの動作が確認できたら、AuthでDBを使っての認証を試してみました。

DBだとユーザー管理がしやすいんですよね。DBMySQLを使いました。Oracleは使ったことありますがMySQLは初めてです。


さくらインターネットサーバーコントロールパネルから、データベースの設定を選び、データベースを新規に作ります。

作成すると、データベースのユーザー名、データベース名、データベースサーバーが決まります。

データベースが作られたら、テーブルを作ります。

http://www.phpbook.jp/pear/pear_auth/index5.html

ユーザー名、データベース名は予め決まっているので新規に作る必要はないようです。

テーブル作成から始められます。

データベースができたら、このあたりのサイトを見ながらテストします。

http://www.phpbook.jp/pear/pear_auth/

Pear:Authのよいサンプル

ログイン、ログアウト機能に加えDBに新たなユーザーを追加する機能があります。

http://ameblo.jp/ymty/entry-10024202648.html

ソースを分割して綺麗にまとめています。

http://q.hatena.ne.jp/1255063132

PHPセッションについて

自分はコンシューマーアプリを作ってきた人間なので、このへん疎いのでまとめておきます。


Webアプリ、サイトではユーザーを区別するために、Cookie等を使い、セッションの管理を行ないます。

セッションとは - はてなキーワード

イメージ的には、合言葉を決めておいてそれを送信しあうことでユーザーを認識する感じです。


PHPでは生Cookieを使う方法に加え、セッションを扱うための機能が存在します。

セッションをつかうことで、ユーザーの識別などが簡単になります。

Pear:Auth自体もセッションを使って管理しているので、セッションの考え方を理解するのは重要です。


セッションは有効期限を超えるか、PHPで専用関数を呼び出すことで終了できます。(この辺まだ勉強中です。)

ブラウザを閉じたり、ページを移行してもセッションは維持されます。

他のブラウザを使ったりするとFirefoxChromeSafariIE、クッキー保存している場所が違うのでセッションは引き継がれません。


PHP関連の調べたサイトのまとめ

いろいろ調べたサイトを置いておきます。


http://q.hatena.ne.jp/1132304878

http://q.hatena.ne.jp/1255789735

http://hatomugi.sakura.ne.jp/forum.php?id=190

http://www.adamrocker.com/blog/91/sakura_internet_mysql.html

ヘッダまわりはバグるとめんどくさいですね。requireで読み込む際にヘッダいじっているかもしれないので、

echoでHTMLのヘッダとか投げないようにしましょう。(先頭でrequireする)

http://q.hatena.ne.jp/1176477309

http://q.hatena.ne.jp/1168608777

http://q.hatena.ne.jp/1186266528

requreはc言語のincludeより強力な感じがします。

http://phpspot.net/php/man/php/function.include.html

mysql

http://www.adamrocker.com/blog/91/sakura_internet_mysql.html

セッション関連

http://questionbox.jp.msn.com/qa1481961.html

http://www.yc.tcu.ac.jp/~yamada/doc/php/0802.html

http://q.hatena.ne.jp/1179933963

http://www.phpbook.jp/pear/pear_auth/index8.html

ワナ

ヒアドキュメントは見事にはまりました。

http://scriptlife.hacca.jp/tips/php.html


PHPで作成したHTMLFlashで読み込む。

AS3.0ではLoaderInfoを使います。HTMLはFlashVarsで渡します。

http://www.saturn.dti.ne.jp/~npaka/flash/as30/ParamEx/index.html

http://onegame.meby.net/tips/param.html

http://www.two-ways.com/mt/usakorog/flash/

http://cocoasaurus.com/blog/2009/09/as3htmlflashvars.html

http://eringi.com/weblog/archives/2005/11/flashvars_htmlf.html

Adobeのサイト


Flashで作成したXMLPHPでファイルに保存する。

URLLoader、URLRequestで送信し、 $GLOBALS['HTTP_RAW_POST_DATA']で、生ファイルを受け取れます。

英語サイトですが。

http://www.actionscript.org/forums/showthread.php3?t=169554

プログラムするときに英語読めるとソースが広がってよいですよね。Windowsアプリ作る時もMSDNの翻訳のおかげでずいぶん

鍛えられました。


URLVariablesを使ってサーバー側でXML作るやり方もありますね。

この場合POSTの受け取り方が変わります。

http://www.at-sonic.com/blog/archives/2008/02/as3php.php

http://www.phppro.jp/qa/301#top

http://q.hatena.ne.jp/1204159983

http://blog.livedoor.jp/hiroki0907/archives/51179755.html


●まとめ

ここまでの知識をうまく活用すれば

・自分のFlashアプリ(サイト)にログイン機能をつけユーザー管理を出来るようにする。

FlashからXMLを送信してサーバーでファイル保存を行う。

はできると思います。Flashログイン機能を作る場合はFlash内で完結させるのもありですね。

そうすればセッション管理もまとめられそうですし。


今は、ユーザー毎の管理の部分を作っているところです。こちらはDB関連の処理がいりますね。

もう少し整理して作成していこうと思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/gravit/20100916/1284738264