php数据库留言板视频教程,Flash+PHP+MySQL留言板教程

如果想问什么是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))。

//=========从FLASH读取变量,并写入数据库============

$name=$_POST['username'];

if($name!=""){

$contact=$_POST['usercontact'];

$message=$_POST['usermessage'];

$id=mysql_connect("localhost","root","123456");

mysql_select_db("totem",$id);

mysql_query("set character set gb2312");//防止读出数据出现乱码

$num=mysql_num_rows(mysql_query("select * from comments",$id))+1;//获取留言数量

//获取留言时间:

$cnunixtime=time()+8*60*60;

$gd=getdate($cnunixtime);

$cdt=$gd["year"]."-".$gd["mon"]."-".$gd["mday"]." ".$gd["hours"].":".$gd["minutes"].":".$gd["seconds"];

//获取留言者IP:

if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])

{

$ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];

}

elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])

{

$ip=$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];

}

elseif($HTTP_SERVER_VARS["REMOTE_ADDR"])

{

$ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];

}

elseif(getenv("HTTP_X_FORWARDED_FOR"))

{

$ip=getenv("HTTP_X_FORWARDED_FOR");

}

elseif(getenv("HTTP_CLIENT_IP"))

{

$ip=getenv("HTTP_CLIENT_IP");

}

elseif(getenv("REMOTE_ADDR"))

{

$ip=getenv("REMOTE_ADDR");

}

else

{

$ip="Unknown";

}

//向表info插入新数据:

$insert="insert into comments values($num,'$cdt','$ip','$name','$contact','$message','')";

mysql_query($insert,$id);

mysql_close($id);

}

//=========从数据库读取条目,并生成XML格式列表======

$id=mysql_connect("localhost","root","123456");

mysql_select_db("totem",$id);

mysql_query("set character set gb2312");

$readAll="select * from comments order by ID DESC";//DESC从大到小,ASC从小到大

$result=mysql_query($readAll,$id);

$totalnum=mysql_num_rows($result);//读取表comments总共数目

$pageIndexNum=3;//用于FLASH里加载用的每页显示数据条数

$pageTotalNum=(int)($totalnum/$pageIndexNum+1);

//----------------生成XML列表

echo"\n";

echo"".$totalnum."\n";

echo"".$pageIndexNum."\n";

echo"".$pageTotalNum."\n";

for($j=0;$j

echo"\n";

for($i=0;$i

$info=mysql_fetch_array($result,MYSQL_ASSOC);

echo"\n";

echo"".$info["ID"]."\n";

echo"".$info["SHIJIAN"]."\n";

echo"".$info["NAME"]."\n";

echo"".$info["CONTACT"]."\n";

echo"".$info["MESSAGE"]."\n";

echo"".$info["REPLY"]."\n";

echo"\n";

}

echo"\n";

}

echo"\n";

for($k=0;$k

$info=mysql_fetch_array($result,MYSQL_ASSOC);

echo"\n";

echo"".$info["ID"]."\n";

echo"".$info["SHIJIAN"]."\n";

echo"".$info["NAME"]."\n";

echo"".$info["CONTACT"]."\n";

echo"".$info["MESSAGE"]."\n";

echo"".$info["REPLY"]."\n";

echo"\n";

}

for($l=0;$l

echo"\n";

echo"\n";

echo"\n";

echo"\n";

echo"\n";

echo"\n";

echo"\n";

echo"\n";

}

echo"\n";

echo"\n";

//----------------------------

mysql_close($id);

?>

接下来是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("[#&<>|*]");

//这里用正则表达式来过滤一些不被允许的特殊字符

functionsendClick(e:MouseEvent)

{

//这个函数事先判断一下用户输入的是否含有非法字符

if (inputName.text.match(forbidChar))

{

warning.text ="称呼含有非法字符,请重输";

}

elseif (inputName.text=="")

{

warning.text ="称呼不能为空";

}

elseif (inputContact.text.match(forbidChar))

{

warning.text ="联系方式含有非法字符,请重输";

}

elseif (inputContact.text=="")

{

warning.text ="联系方式不能为空";

}

elseif (inputMessage.text.match(forbidChar))

{

warning.text ="留言含有非法字符,请重输";

}

elseif (inputMessage.text=="")

{

warning.text ="留言不能为空";

}

else

{

//如果都没问题了,则执行提交动作:

warning.text ="提交中......";

sendVars();

}

}

functionsendVars()

{

//这个函数就是执行发送任务了

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;

functionloaded(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();

}

functionloadList()

{

//加载顺序留言列表

for(var i:int=0; i

{

//先清空一次

this["showID"+(i+1)].text="";

this["showName"+(i+1)].text="";

this["showMessage"+(i+1)].text="";

this["showTime"+(i+1)].text="";

this["showContact"+(i+1)].text="";

if (myXML.page[pageNum - 1].record[i].xuhao !="")

{

this["showID"+(i+1)].text=myXML.page[pageNum-1].record[i].xuhao;

this["showName"+(i+1)].text="来自:  "+myXML.page[pageNum-1].record[i].xingming;

this["showContact"+(i+1)].text="联系方式:  "+myXML.page[pageNum-1].record[i].lianxi;

this["showTime"+(i+1)].text=myXML.page[pageNum-1].record[i].shijian;

this["showMessage"+(i+1)].text=myXML.page[pageNum-1].record[i].liuyan;

}

}

}

pageUpBtn.addEventListener(MouseEvent.CLICK,upclick);

pageDownBtn.addEventListener(MouseEvent.CLICK,downclick);

functionupclick(e:MouseEvent)

{

pageNum > 1 ? pageNum--:0;

showPage.text = pageNum +"/"+ pageTotal;

loadList();

}

functiondownclick(e:MouseEvent)

{

pageNum 

showPage.text = pageNum +"/"+ pageTotal;

loadList();

}

functiondefaultLoad()

{

//默认没发送数据的情况加载一次留言列表

System.useCodePage =true;

warning.text ="加载中...";

loader.load(url);

loader.addEventListener(Event.COMPLETE,loaded);

}

defaultLoad();

然后上传到自己的本地服务器测试一下吧,祝读者成功!

下面是附件(这个附件是不能直接运行的,里面是写好的代码而已,还需要自己配置好环境和MySQL,按上例做的话才可测试):

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值