Odin's Life

Ask For More
文章 - 47,收藏 - , 评论 - 188, trackbacks - 0

一、Flash与Asp之间的交互

  Flash与Asp的通讯是用Http协议,其请求格式为
http://ip地址?参数1=值1&参数2=值2

  即是在目的地址后面加上问号,再跟上参数字符串,参数之间用“&”号格开。如:
http://www.pcedu.com.cn/test.asp?userid=guest&pwd=123

  在上面的请求中,请求的目的文件为:http://www.pcedu.com.cn/test.asp,第一个参数名为userid,值为guest,第二个参数名为pwd,值为123。

  Flash与Asp之间的交互无非就是构造上面的请求字符串。

  1、在Flash中,先构造好请求的字符串,然后利用函数LoadVariables(),就可以向服务器端发送请求和参数。我们来详细看看LoadVariables()这个函数。

  函数的标准格式为loadVariables ("url" ,level/"target" [, variables])

  在函数的各个参数中,url就是上面说的请求字符串。level/“target”是返回值的“层次”或者“目标”,这两个当中只能指定一个。variables是请求的方式,其值可以是“Get”或者是“Post”,一般Get用于参数值比较短的传送,Post用于参数值比较长的传送,这个参数是可选的。比如loadVariables ("
http://www.pcedu.com.cn/guest.asp?userid=guest&pwd=123" ,0, “GET”)就是一个完整的请求。

  2、在Asp中,先要取得从Flash端传送过来的参数,这跟操作普通的HTML表单是一样的。都是利用Request对象,其语句为:

username = Request(“userid”)
password = Request(“pwd”)

  userid和pwd就是从Flash端发送过来的参数名,如果是上一步中的请求字符串,username的值为guest,pwd的值为123。
3、在服务器端处理完请求,获得所需要的值后,Asp向Flash端发送结果,跟从Asp中操作Html语言一样,都是用Response对象,其语句为:

Response.Write(“login=true&des=success”)

其返回值1的名为login,值为true,返回值2的名为des,值为success。

  4、在Flash端取得从服务器端返回的值,与操作Flash中普通的变量没什么不同。如:
_root.gotoAndPlay(eval(login))表示的是跳转到login的值的那一帧。但要注意的是在发送请求一段时间之后,才能用返回值,不然取得的是尚未返回的值,错误就在所难免了,而且这一类的错误很难发现,用的时候要多加小心。

  二、Asp与数据库之间的交互

  在Asp与数据库的交互一般是用ADO控件。其读取数据库的语句为:

‘定义一个Connection对象
set conn=Server.CreateObject("ADODB.Connection")
‘用Connection对象打开数据库,这里打开的是sql server,数据库的地址为192.168.1.32
‘数据库的用户名为zengyu,密码为123
conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123")
‘创建一个Recordset对象
set rstemp=Server.CreateObject("ADODB.Recordset")
‘构造一个sql语句
sqltemp1="select * from UserInfo where userid='"&strname&"' and password='"&strpassword&"'"
‘查询数据库
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
end if

  这里实现的只是简单地查询数据库,要想了解Asp操作数据库更详细的东西,可以找Asp与数据库方面的资料深入学习一下。

  三、例子――登陆的实现

  下面我们来制作一个简单的实例,在Flash端输入用户名和密码,通过Asp查询数据库,如果用户名和密码正确,就跳转到登陆成功界面,否则就跳转到登陆失败界面。

  1、新建一个Flash,在场景中制作两个文本框和一个Button,如图2所示。其中用户名对应的文本框属性如图3所示,密码对应的文本框属性如图4所示。注意其中的文本类型和变量名。
2、创建另外两个关键帧,分别命名为“true”和“false”,并分别显示“登陆成功”和“登陆失败”字样。

  3、在Button的ActionScript中增加下面的语句,注意更改其中的ip地址。

on (release) {
loadVariables("
http://192.168.1.32/guest.asp?userid=" add eval(_root.userid) add "&pwd=" add eval(_root.pwd),this, "GET");
now = new Date();
begintime = now.getSeconds();
while(true) {
endt = new Date();
endtime = endt.getSeconds();
if (endt - now > 2)
{
_root.gotoAndPlay(eval(login));
}
}
}

  4、在Sql Server数据库(数据库的类型不重要,改一改连接串就可以的)中,建立一张名为“userinfo”的表,其中有“Userid”和“Password”两个字段。

  5、建立一个guest.asp文件,文件内容为

<%
username = Request(“userid”)
password = Request(“pwd”)
set conn=Server.CreateObject("ADODB.Connection")
conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=test;UID=zengyu;PASSWORD=123")
set rstemp=Server.CreateObject("ADODB.Recordset")
sqltemp1="select * from UserInfo where userid='"&username&"' and password='"&strpassword&"'"
rstemp.open sqltemp1,conn, 1, 1
if not(rstemp.bof and rstemp.eof) then
Response.Write (“login=true”)
Else
Response.Write (“login=false”)
end if
%>

  6、将Flash文件和Asp文件部署到IIS服务器中,然后打开Flash文件,输入登陆信息就可以看到实例的效果了。

URL编码:怎样读取特殊字符 (这个我曾经谢过教程,这里整理过来)
从外部文本载入到动态文本的时候,一些特殊字符(如&/%等)无法正常现实,有的符号还会导致这个符号后面的字符无法现实(如&),这时候我们就要将这些特殊字符进行URL编码,以下是各个特殊字符的URL对应编号:
backspace %08
tab %09
linefeed %0A
creturn %0D
space %20
! %21
" %22
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
* %2A
+ %2B
, %2C
- %2D
. %2E
/ %2F
0 %30
1 %31
2 %32
3 %33
4 %34
5 %35
6 %36
7 %37
8 %38
9 %39
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %40
A %41
B %42
C %43
D %44
E %45
F %46
G %47
H %48
I %49
J %4A
K %4B
L %4C
M %4D
N %4E
O %4F
P %50
Q %51
R %52
S %53
T %54
U %55
V %56
W %57
X %58
Y %59
Z %5A
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
a %61
b %62
c %63
d %64
e %65
f %66
g %67
h %68
i %69
j %6A
k %6B
l %6C
m %6D
n %6E
o %6F
p %70
q %71
r %72
s %73
t %74
u %75
v %76
w %77
x %78
y %79
z %7A
{ %7B
| %7C
} %7D
~ %7E
¢ %A2
£ %A3
¥ %A5
| %A6
§ %A7
« %AB
¬ %AC
¯ %AD
º %B0
± %B1
ª %B2
, %B4
µ %B5
» %BB
¼ %BC
½ %BD
¿ %BF
À %C0
Á %C1
 %C2
à %C3
Ä %C4
Å %C5
Æ %C6
Ç %C7
È %C8
É %C9
Ê %CA
Ë %CB
Ì %CC
Í %CD
Î %CE
Ï %CF
Ð %D0
Ñ %D1
Ò %D2
Ó %D3
Ô %D4
Õ %D5
Ö %D6
Ø %D8
Ù %D9
Ú %DA
Û %DB
Ü %DC
Ý %DD
Þ %DE
ß %DF
à %E0
á %E1
â %E2
ã %E3
ä %E4
å %E5
æ %E6
ç %E7
è %E8
é %E9
ê %EA
ë %EB
ì %EC
í %ED
î %EE
ï %EF
ð %F0
ñ %F1
ò %F2
ó %F3
ô %F4
õ %F5
ö %F6
÷ %F7
ø %F8
ù %F9
ú %FA
û %FB
ü %FC
ý %FD
þ %FE
ÿ %FF



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=215780


[点击此处收藏本文]  发表于2004年12月26日 10:25 AM




正在读取评论……

发表评论

大名
网址
验证码
评论