繁体   English   中英

AS3和mySQL或XML:从Flash电影中保存服务器上的用户投票

[英]AS3 and mySQL or XML: Saving user votes on server from a flash movie

我的项目涉及网页中的Flash电影(.swf),用户必须从中选择多个项目,并可以选择竖起竖起 (投票)每个项目。

到目前为止,我已经使它在应用程序的每次运行中都能正常工作,因为它当前正在从XML文件中加载数据-并且此刻数据仍然是静态的。

我需要使用数据库(mySQL)将这些投票保留在服务器上,以便在重新加载页面时不会忘记投票。

有人做过这种事吗?

我在网上发现的两种主要方法是

  1. 使用某种框架在AS3和SQL之间进行直接通信,或者
  2. 将SQL查询传递给PHP文件,然后执行PHP查询并将SQL返回给AS3。

哪种方法更好?

对于后一种方法(涉及PHP),当尝试从数据库中检索信息(即读取操作)时,我已经找到了有关如何实现此目的的资源,但是当尝试信息发送至数据库时(即写操作),我已经能够找到资源。用户投票时需要的操作)。 怎么做?

谢谢!


编辑:已实施的解决方案

PHP文件中的某个位置:

if ($action == "vote")
{
    $id = $_POST['id'];
    $upvotes = $_POST['upvotes'];
    $query = "UPDATE `thetable` SET `upvotes` = '$upvotes' WHERE `thetable`.`id` = '$id' LIMIT 1 ;";
    $result = mysql_query($query);
}

在ActionsScript中的某个位置:

    public function writeToDb(action:String)
    {
        var loader:URLLoader = new URLLoader();
        var postVars:URLVariables = new URLVariables();
        var postReq:URLRequest = new URLRequest();

        postVars.action = action;
        postVars.id = id;
        postVars.upvotes = upvotes;

        postReq.url = <NAME_OF_PHP_FILE>;
        postReq.method = URLRequestMethod.POST;
        postReq.data = postVars;

        loader.load(postReq);
        loader.addEventListener(Event.COMPLETE, onWriteToDbComplete);
    }

我不知道任何支持method-1的框架。

我将使用方法2-但与其在Flash中进行查询并将其传递给PHP,还不如在XML中传递相关数据并构造查询。 这样比较安全,因为它不易受到SQL注入攻击的影响。

这个答案有一个从闪存向服务器发送数据的示例-它讨论了ASP,但是PHP(或任何技术)的方法相同-只需更改URL。

在php代码中,您可以从$_POST (或$_GET )变量中读取已发送的数据。

$something = $_POST["something"]

许多不同的选择:

AMFPHP -PHP和Actionscript / Flash之间的二进制消息传递格式。

LoadVars-用于将值发布和获取到PHP脚本。

JSON -使用您可以张贴JSON格式的数据到你的网站上的as3corelib(就像一个AJAX脚本执行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM