主题:  为什么我的loadv函数,只能收变量,而不能发变量?!

reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#12002/10/29 14:42:55
我现在的情况很奇怪。我是在本机测试的。
我有两个文本input变量一个 name 一个 pass,然后我用一个按钮发
on(release){
loadv("http://localhost/login.php",this,"post")
}
我的php用apache服务器。已经运行。
大概意思是,php里边已经有了几个id和ps,对我发的id和pass核对,正确的话,返回result=ok,错误的话,返回result=fail
我在核对的时候,在php里边。用isset和empty函数检测变量是否为空或者有否数值。否的话出result=fail,然后用循环检测,当id和pass都正确的时候。出ok。有一个不对就fail。
我在flash里,还用onclipevent(data)检测数据是否接到。
但是,每次的情况,似乎都是不论我发什么id和pas,正确与否,都返回,fail,在我别的实验里发现,loadv好象只从php里边接受数据,而根本没有把我的id和pas变量发到php上,所以php,一直认为我的id和pass是空。所以,一直返回fail/
在我的理解中,loadv这个函数,是可以把变量发出去的!!,但是结果怎么会这样?!



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#22002/10/29 15:14:38
两点建议:
1.发送请求和读取结果之间存在时间差,不知道你注意了没有
2.试度GetURL



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#32002/10/29 15:31:20
关于您的建议,呵呵,第一点,我测试了多次,应该不是时间差的问题,何况,我在本机测试,能收不能发,2,geturl,可以发变量吗?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42002/10/29 16:07:49
同样有post方式,可以发送。

照你说的情况,应该是发送出去了。可以直接在php里面把收到的变量值赋给另一个变量echo回去,如果能够收到这个变量,则说明已经成功地发送了。总之,一个环节一个环节地检查。



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#52002/10/29 16:32:51
如果按照你说的,比如我在flash中发变量 name,然后php中,echo$aa=$name,或者print$aa,如果,显示的值是aa为空,我接下来该怎么作呢?这样不就意味着我的确没有发变量过来吗?是不是我除了换geturl函数再来,就没有其他的办法了吗?如果真有这种情况,我接下来该怎么办?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#62002/10/29 16:33:51
另外,如果是v6的player,最好不要用onData事件,我在实践中发现有时候它不够准确。



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#72002/10/29 16:41:32
是这样的,我在每次(data)的时候。都trace跟踪过,应该不是这个方面的问题,每次trace 都成功了。同时,我觉得php应该也没有什么问题,我曾经单纯的load过一些php的变量,在load的接受时都很正确,可就是似乎没有办法发出去。这点很郁闷。如果geturl也无法成功的话,我就真的太无奈了。



5D荣誉版主

职务:普通成员
等级:2
金币:1.0
发贴:515
#82002/10/29 23:57:22
function handleReply(success) {
    if (success) {
trace("success")
    } else {
trace("failed")
    }
}

        test_data = new LoadVars();
        test_reply = new LoadVars();
        test_data.var_name = "test";
        test_reply.onLoad = handleReply;
        test_data.sendAndLoad("url.asp", test_reply);

php我不懂。
习惯用loadVars,随便写的,希望有所帮助。



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#92002/10/31 0:33:14
楼上的给我了很大的启发。
我现在如楼顶上我说的问题,没有解决,但是我发现似乎flashmx和flash5的loadvariable这块的函数发生了很大的变化。我的写法是flash5的,所以在这里出现了问题。我是不是应该这样写?
我有两个文本input变量 username 和 password,还有一个input文本message变量用来接收返回的信息。
用一个按钮发变量去php页
on(release){
sendname= new LoadVars() //先定3个 loadvars() obj
sendpass= new LoadVars()
replay = new LoadVars()
sendname = username //把我3个 文本变量赋直给刚定义的loadvars
sendpass = password
replay = message
sendname.sendAndLoad("login.php",replay)
sendpass.sendAndLoad("login.php",replay)



这块的函数我都不熟悉,不知道怎么用的,我比着上边的写法写的。senandload()的用法我也分不请和send究竟有什么区别。在我的理解中,replay就应该能返回我发的变量经过php处理后返回的结果。
但是结果是错误。请指出我出错的问题在那里。




}




Demon.S

职务:版主
等级:5
金币:10.0
发贴:2468
#102002/10/31 12:28:06
回信了……



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#112002/11/1 2:51:36
多谢画魔大哥了^_^
我现在是这样写的 〈username 和 password 是我的input 变量〉
this.loadVariables("http://localhsot/login.php?name="+this.username+"&pass="+this.Password)
我对此处理解就是当前mc对php中检测后的数据进行接受,并且发变量name和pass到php中。
但是,非常无奈的是,我的php在
localhost/login.php?name=z&pass=z 的情况下,居然还是在ie中返回了
"&result=Fail&errorMsg=" You need to supply a username and password

同时在flash中,我的input文本message接收到
You need to supply a username and password
而我在php中设定的id 和 pass 就是 z ! 现在我把php贴下来,请帮我看看错误在那里?

$usernames[] = "z";
$passwords[] = "z";
$messages[] = "Welcome, z,How are you today?";

$usernames[] = "x";
$passwords[] = "x";
$messages[] = "Hello ,x";

if (!isset($name) || empty($name) || !isset($pass) ||
empty($pass)) {
print "&result=Fail&errorMsg=" . urlencode("You need to supply a username and password");
exit;
}

$matchFound = false;

for ($count = 0; $count < count($usernames) && $matchFound == false; $count++) {
if ($name == $usernames[$count] && $pass == $passwords[$count]) {


$message = $messages[$count];
$matchFound = true;
}
}
if ($matchFound) {
print "&result=Okay&message=" . urlencode($message);
} else {
print "&result=Fail&errorMsg=" . urlencode("No match found for username/password");
}

?>



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#122002/11/3 15:54:08
有没有可能是 bug或者别的原因?
谁知道?教教我?!



Demon.S

职务:版主
等级:5
金币:10.0
发贴:2468
#132002/11/6 11:11:03
看起来没什么问题
当然这在flash5内绝对没问题
不过,在flash mx内有安全限制,对http://www.xxx.com/abcd.php这样的肯定访问不了,所以你要做的话一定要放在同目录里,即abcd.php?a=b&c=d


D:)S



reach

职务:普通成员
等级:1
金币:0.0
发贴:19
#142002/11/8 11:23:49
我现在的情况是php在 localhost/login.php?name=z&pass=z 的情况下
一直无法通过。
按理说,我现在这样是应该可以返回正确的信息的,但是总返回错误的东西。
T_T会不会是php配置有问题的原因?