李斯特 发表于 2018-9-27 13:33:01

Flash+PHP+MySQL留言板教程

  实例演示地址:http://www.52totem.com/test/liuyan.html(下面有附件下载)
  如果想问什么是PHP的话,百度一下吧,再百度一下“如何配置PHP环境”,满地都是教程。
  FLASH不能直接操作文件与数据库,于是就得通过PHP的行为来间接操作。留言板实现原理很表现了Flash做web开发的基本方式。动态脚本用JSP,ASP也都可以的,它们的功能就是从FLASH接收数据,然后写入文件或数据库,再将数据库给读取出来。这里以PHP为例。
  这个留言板的基本原理:FLASH里填入数据,然后执行对外发送脚本;PHP即接收FLASH发送来的数据,经过整理加工,写入数据库,然后将数据库里的数据读取出来,输出成XML格式文档;FLASH再动态加载这个XML格式的PHP。
  那么开始吧→_→【ps:下面的代码是基于对AS3有相对扎实了解的,可能还需要读者认真阅读,我已经尽量写了注释了】
  首先是PHP,PHP从FLASH里一次接收这三个变量:inputName,inputContact,inputMessage。
  这个是PHP文档,文件名是comments.php。需要确定已经建立好数据库,这里示例数据库是totem,表是comments,表规格是这样:(ID SMALLINT, SHIJIAN DATETIME, IP CHAR(15), NAME CHAR(20), CONTACT CHAR(20), MESSAGE CHAR(100), REPLY CHAR(100))。
  


[*]
  

  接下来是AS3的脚本,有附件,是FLASH CS5 的。没有写文档类,代码写在幁上了
  


[*]import flash.net.URLRequest;
[*]import flash.net.URLLoader;
[*]import flash.events.MouseEvent;
[*]import flash.events.Event;
[*]
[*]var url:URLRequest = new URLRequest("http://www.hyieq.com/phps/comments.php");
[*]//上面的new URLRequest里就是要连接的php文件的位置,注意协议http,上面的只是示例位置。
[*]var loader:URLLoader = new URLLoader;
[*]sendBtn.addEventListener(MouseEvent.CLICK,sendClick);
[*]var forbidChar:RegExp = new RegExp("[#&|*]");
[*]//这里用正则表达式来过滤一些不被允许的特殊字符
[*]function sendClick(e:MouseEvent)
[*]{
[*]    //这个函数事先判断一下用户输入的是否含有非法字符
[*]    if (inputName.text.match(forbidChar))
[*]    {
[*]      warning.text = "称呼含有非法字符,请重输";
[*]    }
[*]    else if (inputName.text=="")
[*]    {
[*]      warning.text = "称呼不能为空";
[*]    }
[*]    else if (inputContact.text.match(forbidChar))
[*]    {
[*]      warning.text = "联系方式含有非法字符,请重输";
[*]    }
[*]    else if (inputContact.text=="")
[*]    {
[*]      warning.text = "联系方式不能为空";
[*]    }
[*]    else if (inputMessage.text.match(forbidChar))
[*]    {
[*]      warning.text = "留言含有非法字符,请重输";
[*]    }
[*]    else if (inputMessage.text=="")
[*]    {
[*]      warning.text = "留言不能为空";
[*]    }
[*]    else
[*]    {
[*]      //如果都没问题了,则执行提交动作:
[*]      warning.text = "提交中......";
[*]      sendVars();
[*]    }
[*]}
[*]function sendVars()
[*]{
[*]    //这个函数就是执行发送任务了
[*]    System.useCodePage = true;
[*]    //关键句1:
[*]    var variables:URLVariables=new URLVariables();
[*]    variables.username = inputName.text;
[*]    variables.usercontact = inputContact.text;
[*]    variables.usermessage = inputMessage.text;
[*]    //关键句2:
[*]    url.method = "post";
[*]    url.data = variables;
[*]    //关键句3:
[*]    loader.load(url);
[*]    loader.addEventListener(Event.COMPLETE,loaded);
[*]    //上面这句其实是整个发送的配套动作,AS3里发送与读取是要一块执行的
[*]    pageNum = 1;
[*]}
[*]var myXML:XML;
[*]var pageNum:int = 1,pageTotal:int,pagePerNum:int;
[*]
[*]function loaded(e:Event)
[*]{
[*]    //等待完成加载动作后,其实就可以直接读取PHP里生成的XML格式文档了
[*]    showPage.text = pageNum + "/" + pageTotal;
[*]    inputName.text = "";
[*]    inputContact.text = "";
[*]    inputMessage.text = "";
[*]    warning.text = "完成!";
[*]    myXML = new XML(e.currentTarget.data);
[*]    pageTotal = int(myXML.zongyeshu);
[*]    pagePerNum = int(myXML.yetiaoshu);
[*]    showPage.text = pageNum + "/" + pageTotal;
[*]    loadList();
[*]}
[*]function loadList()
[*]{
[*]    //加载顺序留言列表
[*]    for (var i:int=0; i 1 ? pageNum--:0;
[*]    showPage.text = pageNum + "/" + pageTotal;
[*]    loadList();
[*]}
[*]function downclick(e:MouseEvent)
[*]{
[*]    pageNum < pageTotal ? pageNum++:0;
[*]    showPage.text = pageNum + &quot;/&quot; + pageTotal;
[*]    loadList();
[*]}
[*]function defaultLoad()
[*]{
[*]    //默认没发送数据的情况加载一次留言列表
[*]    System.useCodePage = true;
[*]    warning.text = &quot;加载中...&quot;;
[*]    loader.load(url);
[*]    loader.addEventListener(Event.COMPLETE,loaded);
[*]}
[*]defaultLoad();
  

  然后上传到自己的本地服务器测试一下吧,祝读者成功!
  下面是附件(这个附件是不能直接运行的,里面是写好的代码而已,还需要自己配置好环境和MySQL,按上例做的话才可测试):


页: [1]
查看完整版本: Flash+PHP+MySQL留言板教程