PHPとGET・POST

バックグラウンドシステム(ここではたまたまPHP)とのデータ送受信例です。

  • PHP側では受信データを込めたXMLを吐いているところに注目!
  • SWFとPHPは同じドメイン内にないと、Flashのセキュリティに引っかかって動作しません。

ブラウザでhttp://www.openlaszlo-ason.com/php/gettest.php?sei=織田&mei=信長にアクセスして、ソース表示してみてください。
その結果、下記のようなXMLが表示されればOK、OpenLaszloでデータ受信できます。

<data sei='織田' mei='信長'/>

swf8バージョン

GET

OpenLaszloはデフォルトでGETリクエストです。

この内容を表示するためには Adobe Flash Plugin が必要です。

  • PHP側(gettest.php)
<?php
$sei = $_GET["sei"];
$mei = $_GET["mei"];
print "<data sei='".$sei."' mei='".$mei."'/>";
?>
  • LZX側
<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
 
  <dataset name="ds" 
    src="http://www.openlaszlo-ason.com/php/gettest.php" 
    request="true"/>
 
  <simplelayout spacing="10" />
 
  <!-- データ入力エリア -->
  <hbox><text>姓:</text><edittext id="sei"/></hbox>
  <hbox><text>名:</text><edittext id="mei"/></hbox>
  <button text="送信" width="50" height="25">
    <handler name="onclick" >
        var p=new LzParam();
        p.addValue("sei", sei.getText(), true);
        p.addValue("mei", mei.getText(), true);
        ds.setQueryString(p);
        ds.doRequest();
    </handler>
  </button>
 
  <!-- データ表示エリア -->
  <hbox datapath="ds:/data">
    <text>こんにちは</text>
    <text datapath="@sei"/>
    <text datapath="@mei"/>
    <text>さん</text>
  </hbox>
 
</canvas>

POST

POSTリクエストするには、setQueryType('POST');が必要。

この内容を表示するためには Adobe Flash Plugin が必要です。

  • PHP側(posttest.php)
<?php
$sei = $_POST["sei"];
$mei = $_POST["mei"];
print "<data sei='".$sei."' mei='".$mei."'/>";
?>
  • LZX側
<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
 
  <dataset name="ds" 
    src="http://www.openlaszlo-ason.com/php/posttest.php" 
    request="true"/>
 
  <simplelayout spacing="10" />
 
  <hbox><text>姓:</text><edittext id="sei"/></hbox>
  <hbox><text>名:</text><edittext id="mei"/></hbox>
  <button text="送信" width="50" height="25">
    <handler name="onclick" >
        var p=new LzParam();
        p.addValue("sei", sei.getText(), true);
        p.addValue("mei", mei.getText(), true);
        ds.setQueryString(p);
        ds.setQueryType('POST');
        ds.doRequest();
    </handler>
  </button>
  <hbox datapath="ds:/data">
    <text>こんにちは</text>
    <text datapath="@sei"/>
    <text datapath="@mei"/>
    <text>さん</text>
  </hbox>
 
</canvas>

swf9以上(as3)バージョン

日本語文字列をGET/POSTする場合、swf8とswf9以降とで挙動が異なります。上記のサンプルではswf9以降でコンパイルすると文字が化けます。swf9以降では、LZX側で入力文字列をencodeURI()でエンコードし、PHP側でurldecode()でデコードします。もちろん、このサンプルはswf8コンパイルでは動きません。

この内容を表示するためには Adobe Flash Plugin が必要です。
(OpenLaszlo4.6.1/swf9)

  • PHP側(gettest_as3.php)
<?php
$sei = urldecode($_GET["sei"]);
$mei = urldecode($_GET["mei"]);
print "<data sei='".$sei."' mei='".$mei."'/>";
?>
  • LZX側
<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
 
  <dataset name="ds" 
    src="http://www.openlaszlo-ason.com/php/gettest_as3.php" 
    request="true"/>
 
  <simplelayout spacing="10" />
 
  <!-- データ入力エリア -->
  <hbox><text>姓:</text><edittext id="sei"/></hbox>
  <hbox><text>名:</text><edittext id="mei"/></hbox>
  <button text="送信" width="50" height="25">
    <handler name="onclick" >
        var p=new lz.Param();
        p.addValue("sei", encodeURI(sei.getText()), true);
        p.addValue("mei", encodeURI(mei.getText()), true);
        ds.setQueryString(p);
        ds.doRequest();
    </handler>
  </button>
 
  <!-- データ表示エリア -->
  <hbox datapath="ds:/data">
    <text>こんにちは</text>
    <text datapath="@sei"/>
    <text datapath="@mei"/>
    <text>さん</text>
  </hbox>
 
</canvas>
phpgetpost.txt · 最終更新: 2009/12/09 17:31 by ason
Copyright © 2008~ずっと ason(minamotonoason@gmail.com)

chuumap 中小企業ツイッターマップ 製造、加工、卸などB2B主体の個人事業者、中小企業のツイッターを、グーグルマップの住所の位置に正確に表示。
tentwi 店舗でツイート 飲食店、販売店など、一般消費者向けの店舗を構えるお店ツイッターを、グーグルマップの住所の位置に正確に表示。
廃句ったー あなたのツイッターの最近のツイートから廃句もとい俳句を生成。
みかけったー 超人気!あなたのツイッターの最近のツイートからみかけの年齢と性別を診断。
キキキーったー 最近のツイートからキーの使用回数をしらべます。
SLOTTER(すろったー) あなたのツイッターのタイムラインのアイコンでスロット。FLASHゲーム。
MultiLangTweet 一度に48ヶ国語に翻訳してツイート。
英訳ったー 英訳または日本語訳してツイート。
バンドメンバー募集サイト シンプルなバンドメンバー募集サイト。
CMS総合デモサイト 有名オープンソースCMS、EC、SNS、Wikiを一度に全部体験できる総合デモサイト
ビズロック BizRock(ビズロック)~音楽ライブでプレゼン!情熱型ビジネス交流会