2008-07-03

【応用その1】FX.php を使ったアンケートフォーム作成

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FX.php の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ


 *FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。

 さて、前回まで 4 回にわたって FileMaker API for PHP によるアンケートフォームの作成方法を解説してきましたが、今回はさらに FX.php による FileMaker データベースアクセス機能も実装してみることにします。

 FX.phpiViking.org によって無償で提供されている FileMaker アクセスクラス群で、FileMaker Pro 5~ 9 に幅広く対応しているため、FileMaker API for PHP が実現できない環境のユーザでも FX.php を使うことによって php からのアクセスが可能となります。

 インストール方法も簡単で、ダウンロードして解凍した FX フォルダを Web サーバの適当な場所に配置するだけです。

 それでは実際にやってみましょう。
 Comment.fp7 を開き、「アカウントとアクセス権の管理」ダイアログを出し、そこからすでに登録済の Webuser を選択して「アクセス権セット...」を選択して以下のダイアログを開きます。

 FX.php は xml によるデータアクセスを行いますので、反転部分のように、「XML Web 公開でのアクセス- FMS のみ(fmxml)」にチェックを付けて保存します。

 これで FileMaker の FX.php 向け Web 公開の準備が整いました。

 さて、次は FX.php 向けのコードを追加していきます。
 まずは、コードの最初の方で FX.php をロードします。今ある Comment.php から FX.php が辿れるように設定してください。

 require_once '../../FX/FX.php';

 そしていつものように、日本語で手順を考えてみます。

  1. FX を使用することを宣言する(FX インスタンスを作成する)。

  2. 使用するデータベース名とレイアウト名を指定する。

  3. 使用するユーザ名とパスワードを指定する。

  4. 追加するフィールドと、そのデータを指定する。

  5. レコード追加を実行する。

 
 こうして見てみると、前回のデータベース書込手順とほとんど変わらないことがわかりますね。
 あとは上記の内容を FX.php 向けに書き換えていくだけです。

 一行目のデータベース接続にサーバ名、ポート番号、データソース名(FMpro9)を明示的に指定する必要がありますが、その他メソッド名に差異はあるものの、前回の FileMaker API for PHP のコードとさほど形式が変わらないことがおわかりいただけるでしょう。

 サンプルコードの方に FX.php と FileMaker API for PHP の切り替え操作も盛り込んでありますので、併せて確認してみてください。


※サンプルコード
サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

2008-07-02

FileMaker API for PHP を使ったアンケートフォーム作成 (4/4)

 本記事は2008年に FileMaker 9 の環境下で執筆されました。2016年11月現在、FileMaker の最新バージョンは 15 となっていますが、15 においても本記事の内容はなお有効と思われます。
 一方Ver 15 では WebDirect と呼ばれる 機能があり、これにより PHP などで Webプログラミングを行うことなく、 FileMaker デスクトップアプリとほぼ同様の操作がブラウザ上でも可能となります。WebDirect は開発が非常に楽になる半面、ライセンス費用やブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し、ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。

 参考: アンケートシステム・プロトタイプ

ブラウザとの互換性等に問題があります。 したがって、高速開発性(RAD)を重視し。ブラウザ互換性をある程度無視できる環境では WebDirect は FileMaker API for PHP の代替となる可能性があります。
 サンプルデータベースと PHP ソースコードはこちらからダウンロードできます。(本アーカイブは、不定期に差し替えが行われる可能性があります。あらかじめご了承ください。)

 さて、今回がアンケートフォーム作成の最終回となります。
 ステップ 1 から渡ってきたユーザ入力データをここでデータベースに登録し、続いてその内容をメール送信します。

 コードの記述に入る前に、FileMaker データベースを用意する必要があります。
 以下の手順に従ってください。

1. FileMaker Pro 9 よりComment.fp7 という名前のファイルを新規作成します。
2. 以下の図を参考にしながらフィールドを作成します。

 アンケート入力ページで実際に使用するのは、[氏名]、[email]、[回答]、[その他回答]、[意見など]の5 つだけですが、残りのフィールドはデータベースを管理する際に作っておくと便利ですので、最初の段階で用意しておきます。
3. 「アカウントとアクセス権」ダイアログを開き、webuser というユーザを追加します。
 パスワードを入力(サンプルデータベースでは web となっています)し、[アクセス権セット]では、「新規アクセス権セット...」を選択します。以下のように入力していきます。

 ここで最も重要なのは、ダイアログの一番下に表示されている[PHP Web 公開でのアクセス - FMS のみ (fmphp)]にチェックが付いていることです。これによって、FileMaker Server 9 への PHP によるアクセスを有効にします。
 また、[レコード]の欄で「カスタムアクセス権...」を選択することによって、レコードへのアクセス範囲を設定することもできます(任意)。
4. デフォルトのレイアウト名が Comment になっていますので、cgi に変更します。
5. ここまで終わったら、このデータベースファイルを FMS9 の Databases フォルダに入れて公開します。

 これでデータベースの準備が整いましたので、今度はアンケート入力の PHP コードの方に Comment データベース書き込みの処理を追加していきます。

まずは、コードの最初の方で FileMaker.php をロードします。

 require_once 'FileMaker.php';

 API for PHP による FileMaker データベースへのデータ書き込み手順を日本語で書くと、次のようになります。

  1. FileMaker を使用することを宣言する(FileMaker インスタンスを作成する)。

  2. 使用するデータベース名、レイアウト名、ユーザ名、パスワードを指定する。

  3. レコード追加をこれから行うことを宣言する。

  4. 追加するフィールドと、そのデータを指定する。

  5. レコード追加を実行する。


 このように日本語で書いてみると、操作は思ったより単純であることがわかりますね。
 あとは上記の内容を PHP の記述規則に従って置き換えるだけです。

 日本語で何をやっているかが理解できれば、この PHP ソースも容易に理解できるでしょう。
 $databaseName、$layoutName、$userName、$passWord というように変数を用意しておくことで、後でデータベース名や、ユーザ名、パスワードが変更になったときにも柔軟に対応できるようになっています。
 一番最後の行の $newrec->execute(); で実際に FileMaker データベースの方にレコードを新規追加します。

 最後にメール送信機能を追加します。
 すでにご存じのように、メールは差出人(From)、宛先(To)、件名(Subject)、本文(Body)、ヘッダ情報で成り立っています。これと同様の指定をコーディングの中でも行います。後でいつでも変更できるように、以下のように変数に入れておくと便利です。
 


 宛先(To)はアンケートに回答してくれた人のメールアドレスになりますので、ここでは指定しません。
 アンケート回答者にメールを送信すると同時にそのコピーをサーバ管理者に送るようにするには、上記のように $bcc 変数を用意して、そこにコピーを送るメールアドレスを設定しておきます。

 それでは実際にメールを送信するための手順を日本語で書いてみます。

  1. メールヘッダを組み立てる。

  2. アンケートに対するユーザ回答を使って本文を組み立てる。

  3. メール送信時に発生する文字化け対策を施す。

  4. 上記の内容を使ってメールを送信する。


 上記を PHP で置き換えると、次のようになります。


 $_POST の中にユーザ入力の内容が納められていますので、その中から該当するものを取り出しながら本文を組み立て、mb_sendmail() 関数の To の部分に回答者のメールアドレス $_POST['email']を設定します。

 上記を踏まえながら、サンプルコードを確認し、Comment.fp7 データベースをお使いの FMS9 環境に配置して、動作を確認してみてください。

 これで、FileMaker API for PHP による FileMaker データベースへの書き込み操作がひととおりできるようになりました。

 あとは、ステップ 1 のときと同様に、渡ってきたデータをお礼ページに表示するだけです。
 詳細は、サンプルコードを参照してみてください。

*サンプルデータベースの Admin パスワードは「admin」、webuser パスワードは「web」となっております。必要に応じて変更してお使いください。

●まとめ
 FileMaker データベースへのデータ書込の理解
 メール送信の理解

SonicWALL (4) --- IPS

前回「SonicWALL (2) --- IPS」で書いた警告メールの続きです。


IPS Detection Alert: IM Skype -- Application Activity, SID: 2800, 優先順位: 低 - 192.168.*.*, 4787, LAN - 204.9.163.158, 80, WAN, 163-158.static.quiettouch.com -
Skype を使用していると普通に送られてくる警告メール。 Skypeの利用を許可している環境では問題無い、Skypeに何らかの穴が見つからない限りですが。 ViewPointでは攻撃としては認識されていない。詳細解説


IPS Detection Alert: POLICY Google SSL Connections, SID: 3075, 優先順位: 低 - 209.85.171.97, 443, WAN, cg-in-f97.google.com - 192.168.*.*, 1774, LAN, **** -
Google Talkがクライアントと行うSSL通信をブロックしている。ViewPointでは攻撃として認識されない。 詳細解説


IPS Detection Alert: DNS BIND Version UDP Request, SID: 143, 優先順位: 低 - 149.20.52.206, 64457, WAN - 192.168.*.*, 53, LAN, **** -
DNSバージョンをチェックするクエリ。通常は無視していいが、自社のネットワーク情報を知られる可能性もある。 詳細解説


IPS Detection Alert: IM AIM -- Login, SID: 102, 優先順位: 低 - 192.168.*.*, 1253, LAN, **** - 64.12.161.185, 5190, WAN -
IPS Detection Alert: IM AIM -- Instant Message Sent, SID: 103, 優先順位: 低 - 192.168.*.*, 3749, LAN, **** - 205.188.12.130, 5190, WAN -
AIMを使用したログイン、またはメッセージ送信の発生を通知する。AIMの利用を許可している場合は無視。 詳細解説 詳細解説 


IPS Detection Alert: MULTIMEDIA Flash Video (FLV) Download 3, SID: 78, 優先順位: 低 - *.*.*.*, 80, WAN - 192.168.*.*, 4752, LAN, **** -
Flash Video (FLV)はYouTube等で使用されるビデオフォーマット、これをダウンロードしたときに通知される。 詳細解説


IP spoof dropped - 192.168.*.*, 4388, LAN - 205.188.179.233, 5190, WAN - MAC address: 00:90:cc:c3:06:49
以下、SonicWallのマニュアルから引用
「IP Spoof は、ハッカーが他のコンピュータのアドレスを使って、TCP/IP パケットを送ろうとする、侵入の企てです。保護されたネットワークに、そのネットワーク上のマシンの IP アドレスを使ってアクセスするために利用されます。SonicWALL では、これを侵入の企てとして認識し、それらのパケットを破棄します。SonicWALL の構成が間違っていると、IP Spoof の警告がログされることがよくあります。IP Spoof の警告
を見つけた場合には、LAN、WAN および DMZ 上の IP アドレスがすべて正しいことを確認してください。LAN 上の IP アドレスが LAN のサブネットに入らない場合にもIP Spoof の警告が出ることがあります。」


IPS Detection Alert: SMTP Reply-To Pipe Passthrough, SID: 1888, 優先順位: 低 - 194.150.164.130, 29174, WAN - 192.168.*.*, 25, LAN, -
旧Sendmailのバグを利用してコマンドを実行させる攻撃の可能性。SonicWallはこの攻撃を排除する。 詳細解説

以上