(最近机房在改造上不了课,有时间构思下,Flash指法练习的网络打字比赛)
设想是每个学生机每隔1秒钟将自己的姓名、打字的个数信息发送到同一个php页面,
然后从php页面接收其他学生机发送到这个php页面上的信息,接收来的信息显示在舞台上,从而可以看到其他人的打字进度
碰到的问题是:假如有多个学生同时进行(人数不确定),php里怎么生成多个变量存放这些学生传来的信息,另一个学生访问php页面的时候,能够获得其他人的信息?
请教:多个终端与一个php页面通信,怎么存储这些终端的数据?
- TeliuTe
- 论坛版主
- 帖子: 7668
- 注册时间: 2007-11-25 13:29
- 系统: 16/18/20/w7
- 来自: 新疆博乐
- 联系:
- TeliuTe
- 论坛版主
- 帖子: 7668
- 注册时间: 2007-11-25 13:29
- 系统: 16/18/20/w7
- 来自: 新疆博乐
- 联系:
Re: 请教:多个终端与一个php页面通信,怎么存储这些终端的数据?
--
想着用socket,php服务端不会写,貌似要单独运行命令,我想在lampp的discuz里用
数组似乎也挺好,as3怎么接收php的数组?
--
php用特殊字符当分隔符把几个参数合并到一个变量,然后传回as3再切开
怎么固定标识各个学生,每次学生数据存放到固定变量,php session可以存放变量
--
学生在as里点“比赛”时传给php一个自己的什么来标记自己,用dz的uid只能在dz里用
可用的唯一uid,机号,mac,IP,用swich来区分各个学生传来的数据
想着用socket,php服务端不会写,貌似要单独运行命令,我想在lampp的discuz里用
数组似乎也挺好,as3怎么接收php的数组?
--
php用特殊字符当分隔符把几个参数合并到一个变量,然后传回as3再切开
怎么固定标识各个学生,每次学生数据存放到固定变量,php session可以存放变量
--
学生在as里点“比赛”时传给php一个自己的什么来标记自己,用dz的uid只能在dz里用
可用的唯一uid,机号,mac,IP,用swich来区分各个学生传来的数据
- TeliuTe
- 论坛版主
- 帖子: 7668
- 注册时间: 2007-11-25 13:29
- 系统: 16/18/20/w7
- 来自: 新疆博乐
- 联系:
Re: 请教:多个终端与一个php页面通信,怎么存储这些终端的数据?
本机发送一个用户测试通过,效率有点问题,
没有用数组,而是将数据串在一起发送和接收,多个用户的多个数据切割还没找出方法
--
cur2.php
没有用数组,而是将数据串在一起发送和接收,多个用户的多个数据切割还没找出方法
--
代码: 全选
var php_array:Array; //数组,存放从php接收来数据,被分割的小段文本
var uid:int =2;//dzx里的uid
var myname:String ="teliute";//dzx里的用户名
var myline:int =1;//打到第几行,初始化第一行
//为复制新标志元件做准备
var mcBoard:Sprite = new Sprite();//放置按钮的容器
addChild(mcBoard);//容器放入舞台
var mycur_1:mycur1 = new mycur1();//mycur是库里影片剪辑mycur的链接名称(类名)
mcBoard.addChild(mycur_1);//生成库中的剪辑,并放入容器
var rect:Rectangle;
stage.focus = in_txt;
in_txt.addEventListener(KeyboardEvent.KEY_UP,onChanged);
function onChanged(e:Event):void//将标志放在光标左边字符的上边
{
rect = in_txt.getCharBoundaries(in_txt.caretIndex - 1)
//rect测出当前光标所在字符的位置
if (rect==null) return;//如果文本框为空了就跳出函数
var postLoader:URLLoader=new URLLoader();
var request:URLRequest=new URLRequest();
var vars:URLVariables=new URLVariables();
vars.s1=String(uid)+"|"+myname+"|"+String(myline)+"|"+String(rect.x);
request.url="http://192.168.0.102/cur2.php";
request.method=URLRequestMethod.POST;
request.data=vars;//这里的data可以是一个Object,或者Array
postLoader.load(request);//下一行监听发送是否完成
postLoader.addEventListener(Event.COMPLETE,completeFun);
}
function completeFun(e:Event):void//发送完成后,接收数据
{
var mssLoader:URLLoader=new URLLoader();
mssLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
mssLoader.load(new URLRequest("http://192.168.0.102/cur2.php"));
//这里就是php文件的地址;下一行监听是否接收完成
mssLoader.addEventListener(Event.COMPLETE,completeRecv);//接收完成
}
function completeRecv(e:Event):void
{//接收php返回的信息。。
var loadData:URLVariables=URLVariables((e.currentTarget as URLLoader).data);
php_array = loadData.content1.split("|"); //把字符串分割成行,每一行一个数组元素字符串,
mycur_1.x = Number(php_array[3]);//左上角是0,0坐标
mycur_1.y = in_txt.y - in_txt.textHeight;
mycur_1.curname.text=php_array[1];//元件里面的姓名文本框,显示姓名
mycur_1.cur_txt.textColor=0xffffff * Math.random();
mycur_1.curname.textColor=mycur_1.cur_txt.textColor;
}
代码: 全选
<?php
$content1 = $_POST["s1"];//."?"; //获取flash传递过来的参数,问号先不加,就传一个人的过去
$state1="ok";
//用一个占位符保证回传的格式
$returnstr="send=ok";
//用占位符保证回传尾部没有冗余
$returnstr.="&content1=".$content1."&state1=".$state1;
echo $returnstr;
?>