Flash cs3、Flex与asp、php通信总结(包含数据库)

作者:网络 来源:佚名 更新时间:2008-10-30 19:31:32 点击:
flash与asp:
先把两个代码贴一下:
flash:

 

var loader:urlloader = new urlloader();

var url:urlrequest = new urlrequest("test.asp");

url.method = urlrequestmethod.post;

var values:urlvariables = new urlvariables();

values.message="hello im flash!";
url.data = values;

loader.dataformat = urlloaderdataformat.variables;
loader.addeventlistener(event.complete,loaded);
function loaded(e:event) {
        out1.text=loader.data;
        //output: phpmessage=im php message!&flashmessage=hello im flash!
        out2.text=loader.data.phpmessage;
        // im php message!
        out3.text=loader.data.flashmessage;
        // hello im flash!
        out4.text=loader.data.dbmessage;
}
loader.load(url);

 

asp:

 

<%@language="javascript"%>
<%
//接收flash传进来的数据
var flashdata;

flashdata = request("message");
//发给flash的数据
var aspmessage;
aspmessage = ’im asp message!’;


//数据库的相关操作
//======================================
var conn;
var rs;
var sql;
var strpath;
strpath="test.mdb";
try{
                        conn = server.createobject("adodb.connection");
                        conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath(strpath);
                        conn.open();
}catch(e){
                    response.write(’<meta http-equiv="content-type" content="text/html; charset=utf-8" /><p style="font-size:12px;font-weight:bold;border:1px solid #006;padding:6px;background:#fcc">数据库连接出错,请检查连接字串!</p>’);
                    response.end
}
rs=server.createobject("adodb.recordset") ;
sql="select * from name" ;
rs.open(sql,conn,1,1); 
//======================================
response.write("phpmessage="+aspmessage+"&"+"flashmessage="+flashdata+"&"+"dbmessage="+rs("companyname"));

%>

 

看到flash和asp文件时面变量名就知道相互是怎么传送的呢,对于数据库的一些插入,更新,查询的操作,只要接收flash的数据,直接运行asp相关数据库操作命令就行了.直接复制到iis的路径下即可测试.在线观看地址:http://www.wolf2999.cn/php/test.swf

flash与php:
先把两个代码贴一下:
flash:

 

var loader:urlloader = new urlloader();

var url:urlrequest = new urlrequest("test.php");

url.method = urlrequestmethod.post;

var values:urlvariables = new urlvariables();

values.message="hello im flash!";
url.data = values;

loader.dataformat = urlloaderdataformat.variables;
loader.addeventlistener(event.complete,loaded);
function loaded(e:event) {
        out1.text=loader.data;
        //output: phpmessage=im php message!&flashmessage=hello im flash!
        out2.text=loader.data.phpmessage;
        // im php message!
        out3.text=loader.data.flashmessage;
        // hello im flash!
        out4.text=loader.data.dbmessage;
}
loader.load(url);

php:

 

 

<?php
  //这里都是有关数据库的操作
  //===================================
  define(’database_server’, ’localhost’);
  define(’database_username’, ’root’);
  define(’database_password’, ’root’);
  define(’database_name’, ’flextest’);
  [email protected]_connect(database_server,database_username,database_password);
  @mysql_select_db(database_name,$link);
  [email protected]_query("select * from users");
  [email protected]_fetch_array($result,mysql_assoc);
  //echo $user[’userid’];
  $dbvar=$user[’userid’];
  //===================================
  //接收flash传进来的数据
  $flashdata = $_post[’message’];
  //给flash发送的数据
  $phpmessage = ’im php message!’;
  echo "phpmessage=$phpmessage&flashmessage=$flashdata&dbmessage=$dbvar";
?>

代码很简单,不用多解释,其实和asp的没有多大区别的.直接复制到php的路径下即可测试.数据库文件直接在phpmyadmin下面执行flextest.sql里的sql语句就行了.因为公司禁端口,我不能在线操作我空间的sql的数据库,在线演示地址就没有,等有时间在家里加上.

flex与php:
先把两个代码贴一下:
flex:

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:application xmlns:mx="http://www.adobe.com/2006/mxml" creationcomplete="oninit()" xmlns="*" layout="absolute" backgroundgradientcolors="[#ffffff, #c0c0c0]">
   <mx:script>
           <![cdata[
                   public function oninit():void
                   {
                           userrequest.send();
                  }
           ]]>
   </mx:script>
   <mx:httpservice id="userrequest" url="request.php" useproxy="false" method="post">
      <mx:request xmlns="">
         <username>{username.text}</username><emailaddress>{emailaddress.text}</emailaddress>
      </mx:request>
   </mx:httpservice>
   <mx:form x="22" y="10" width="356">
      <mx:hbox>
         <mx:label text="username"/>
         <mx:textinput id="username"/>
      </mx:hbox>
      <mx:hbox>
         <mx:label text="email address"/>
         <mx:textinput id="emailaddress"/>
      </mx:hbox>
      <mx:button label="submit" click="userrequest.send()"/>
   </mx:form>
   <mx:datagrid id="dguserrequest" x="22" y="128" dataprovider="{userrequest.lastresult.users.user}">
      <mx:columns>
         <mx:datagridcolumn headertext="user id" datafield="userid"/>
         <mx:datagridcolumn headertext="user name" datafield="username"/>
      </mx:columns>
   </mx:datagrid>
   <mx:textinput x="22" y="292" id="selectedemailaddress" text="{dguserrequest.selecteditem.emailaddress}"/>
</mx:application>

php:

 

 

<?php
/* thanks to pete mackie for the code below */

define(’database_server’, ’localhost’);
define(’database_username’, ’root’);
define(’database_password’, ’root’);
define(’database_name’, ’flextest’);

# connect to the database
$mysqli = new mysqli(database_server, database_username, database_password, database_name);

# check connection
if (mysqli_connect_errno()) {
   printf("mysql connect failed: %s\n", mysqli_connect_error());
   exit();
}

# quote variable to make safe
function quote_smart($value) {
        global $mysqli;
        # stripslashes
        if (get_magic_quotes_gpc())
                $value = stripslashes($value);

        # quote if not integer
        if (!is_numeric($value))         
                $value = $mysqli->real_escape_string($value);
        return $value;
}

if (!empty($_post) && $_server[’request_method’] == ’post’) {
        if ($_post[’emailaddress’] && $_post[’username’]) {
                # add the user
          $query = sprintf("insert into users values (’’, ’%s’, ’%s’)", quote_smart($_post[’username’]), quote_smart($_post[’emailaddress’]));
                if ([email protected]$mysqli->query($query)) {
                        printf("’flextest’ user database query insert error: %s\n", $mysqli->error);
                        $mysqli->close();
                        exit();
                }
        }
}

# return a list of all the users
if ([email protected]$mysqli->query("select * from users")) {
        printf("’flextest’ user database query select error: %s\n", $mysqli->error);
        $mysqli->close();
        exit();
}

$xml_return = "<users>";
while ($user = mysqli_fetch_array($result, mysqli_assoc)) {
        $xml_return .=
        "<user><userid>".$user[’userid’]."</userid><username>".$user[’username’]."</username><emailaddress>".$user[’emailaddress’]."</emailaddress></user>\n";
}
$xml_return.= "</users>";
$mysqli->close();
echo $xml_return;
?>

这里的代码就是adobe phpria sdk里的一个实例. 如果想要全部源码的请留下邮箱,我来发.flex与php的就不说了,直接把php的代码化成asp代码就行了,和flash的一道理了.

源码下载:http://www.webjx.com/files/soft/1_071030193505.rar