请教:多个终端与一个php页面通信,怎么存储这些终端的数据?

新手涉及到的教学或入门贴,推荐新手必看,版主维护
回复
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

请教:多个终端与一个php页面通信,怎么存储这些终端的数据?

#1

帖子 TeliuTe » 2016-11-30 17:37

(最近机房在改造上不了课,有时间构思下,Flash指法练习的网络打字比赛)

设想是每个学生机每隔1秒钟将自己的姓名、打字的个数信息发送到同一个php页面,
然后从php页面接收其他学生机发送到这个php页面上的信息,接收来的信息显示在舞台上,从而可以看到其他人的打字进度

碰到的问题是:假如有多个学生同时进行(人数不确定),php里怎么生成多个变量存放这些学生传来的信息,另一个学生访问php页面的时候,能够获得其他人的信息?
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 请教:多个终端与一个php页面通信,怎么存储这些终端的数据?

#2

帖子 TeliuTe » 2016-12-02 9:18

--
想着用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页面通信,怎么存储这些终端的数据?

#3

帖子 TeliuTe » 2016-12-03 22:25

本机发送一个用户测试通过,效率有点问题,
没有用数组,而是将数据串在一起发送和接收,多个用户的多个数据切割还没找出方法
--

代码: 全选

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;
}
cur2.php

代码: 全选

<?php
$content1 = $_POST["s1"];//."?"; //获取flash传递过来的参数,问号先不加,就传一个人的过去
$state1="ok";

//用一个占位符保证回传的格式
$returnstr="send=ok";

//用占位符保证回传尾部没有冗余
$returnstr.="&content1=".$content1."&state1=".$state1;
echo $returnstr;
?>
回复