吾知网

标题: flash与php通信之amfphp2.1.1使用配置 [打印本页]

作者: jekeyhui99    时间: 2015-10-22 17:29
标题: flash与php通信之amfphp2.1.1使用配置
1.下载amfphp-2.1.1,http://www.silexlabs.org/,解压缩到www\amfphp-2.1.1目录。(因为amfphp和PHP连用有版本不合的问题,所以服务器用的是wampserver2.4 for win7 64位,Apache2.4.4||PHP5.4.12||MySQL5.6.12)

2. 在php.ini文件中配置如下:(其实这个步骤可以省略的)
; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;D:\wamp\www\library;D:\wamp\www\amfphp-2.1.1"

3.如果想精简文件结构,只想将  amfphp-2.1.1/Amfphp   这个目录上传到服务器上,而且还要可以看到方法及方法返回结果,就需要下面这个插件。 http://pan.baidu.com/share/link?shareid=493366&uk=4077531221把这个路径下的插件下载下来,解压后复制到:amfphp-2.1.1/Amfphp/Plugins 下。 查看:http://localhost/amfphp-2.1.1/Amfphp/ 就出现测试目录了。

4.点击D:\wamp\www\amfphp-2.1.1/BackOffice进入一个提示输入用户名、密码的页面 。打开amfphp-2.1.1/BackOffice/Config.php 大概第54行,将这句话解除注释,写上你想要的用户名和密码:我的用户名:admin   密码:123
public function __construct() {
        $this->backOfficeCredentials = array();
        //example code for username + password:
        $this->backOfficeCredentials['admin'] = '123';
    }
现在去:amfphp-2.1.1/Amfphp/Services/ 中就可以尽情的添加文件,添加方法了。
感觉登录比较麻烦么?可以不用登录就访问。但是要修改两个地方。
    1、修改amfphp-2.1.1/BackOffice/Config.php 大概第46行:改成:public $requireSignIn = false;
    2、修改amfphp-2.1.1/Core/Config.php 将大概100行的:$this->pluginsConfig['AmfphpDiscovery']['restrictAccess'] = false; 注释去掉。这时不用登录就可以随意访问了。

5 .新建一个PHP文档,位置amfphp-2.1.1/Amfphp/Services/HelloWorld.php(UTF-8无BOM编码格式文件)
  • <?php
  • class HelloWorld
  • {
  • public function sayHelloWorld($value)
  • {
  • return " AMF-RPC for PHP".$value;
  • }
  • }
  • ?>

[color=rgb(51, 102, 153) !important]复制代码


6.打开flash软件,新建一个AS3文档,在第一帧上写代码:
  • // [01]创建一个NetConnection实例
  • var nc:NetConnection = new NetConnection();
  • // [02]设置默认编码
  • NetConnection.defaultObjectEncoding = ObjectEncoding.AMF3;
  • // [03]连接到网关
  • nc.connect('http://localhost/amfphp-2.1.1/Amfphp/');
  • // [04]调用远程方法,并设置回调函数
  • var responder:Responder = new Responder(onResult, onError);
  • nc.call('HelloWorld.sayHelloWorld', responder,"真的好用了!");
  • //nc.call('HelloWorld/sayHelloWorld', responder,"真的好用了!");这样也可以用,二者选其一
  • // [05]定义回调函数处理结果和错误
  • function onResult(re:Object):void {
  • trace(re);
  • }
  • function onError(err:Object):void {
  • for (var i:String in err) {
  • trace(err);
  • }
  • }

[color=rgb(51, 102, 153) !important]复制代码

Ctrl+Enter发布测试,可以看到输入面板中:"AMF-RPC for PHP,真的好用了!"

补充说明:
1.amfphp2.x开始没有gateway.php文件了,取而代之的是index.php。
2.amfphp和PHP连用,特别注意版本不合的问题。amfphp2.x好像只能跟PHP5.4以上的版本连用。amfphp1.9好像只能跟PHP5.3以下的版本连用。
3.另外,amfphp2.x可以识别UTF-8编码的PHP文件,中文不会乱码。也可能因为PHP5.4以后默认就支持UTF-8编码格式。
4.ZendFramework-1.12.3用ANSI编码的PHP文件,传入参数有中文则需要转换iconv("UTF-8", "GB2312", $arg),使用UTF-8编码的PHP文件,传入和输出参数有中文都需要转换iconv("UTF-8", "GB2312", $arg)。
5.ZendFramework-2.2.2不再支持Zend_Amf。
6.总的来说,目前使用amfphp更有优势,因为不用再纠结上传文件的问题了,因为最终项目完毕,只需要把整个amfphp-2.1.1/Amfphp/上传到网站的www目录即可。





欢迎光临 吾知网 (http://5g99.com/bbs/) Powered by Discuz! X3.2