amfphp
① amfphp安装问题,打开browser文件夹后是目录形式的
请参考
② amfphp 和php两者是什么关系,有什么不同
amfphp可以理解成一个php框架,http://ke..com/view/1919457.html
php就是语言,而amfphp这个框架的编写使用的是php语言。。。不懂这样你能理解不= =
③ 公司升级php5.5和amfphp交互的,我想问下版本兼容性的问题
最近我开始东西发现公司的主机php版本不够用
后来分析了很多不同版本,
发觉5.4.2x 是比较好的,已正在使用5.4.28
如果有什么特别的需要,那没办法只能升上php5.5,再想别的办法解决你AS4
的问题
但如果没特别需要,那就可以考虑别上5.5,先用5.4
我要求公司升上去有2原因
1. PHP5.4比5.2/5.3支援pdo更好
2. PHP5.4 的确比其他的快
5.5差别太大,没信心去修改兼容性
④ 关于flash里用amfphp的问题
你好像写难了点。
看看
flash影片与Mysql数据库的链接方法,读取信息桥梁是php5脚本链接的Amfphp模块。
php的安装要全的版本有4个文件。设置支持mysql和amfphp模块安装。
再Apache2的环境服务器系统里做flash cs3 文档,和php文档。
先建数据库和表。在php用语言来建比较直观一点。
$hostname = "localhost";
$username = "root";
$password = "123";
$con = mysql_pconnect($hostname, $username, $password);
if($con){echo "连接mysql服务器成功!<br>";}else{echo "连接mysql服务器出现错误,请检查。<br>";}
// 数据库名称:phpFlash
// 数据表名: wenZhang
// 字段名有: id feiLei biaoTi neiRong yongHu yue laiYuan fBriqi
// 编号 分类 标题 内容 用户 阅读数 来源地 发表日期
$sqlku = "CREATE DATABASE phpFlash;";
$inretku = mysql_query($sqlku);
if($inretku){echo "创建了一个phpFlash数据库成功!<br>";}else{echo "创建数据库出现错误,请检查。<br>";}
$strsqlBiao = "CREATE TABLE `wenZhang` (
`id` int(11) NOT NULL auto_increment,
`feiLei` varchar(26) character set utf8 COLLATE utf8_general_ci NOT NULL,
`biaoTi` varchar(60) character set utf8 COLLATE utf8_general_ci NOT NULL,
`neiRong` text character set utf8 COLLATE utf8_general_ci NOT NULL,
`yongHu` varchar(26) character set utf8 COLLATE utf8_general_ci NOT NULL,
`yue` int(4) NOT NULL,
`laiYuan` varchar(60) character set utf8 COLLATE utf8_general_ci NOT NULL,
`fBriqi` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;";
mysql_select_db("phpFlash", $con);
$inretbiao = mysql_query($strsqlBiao);
if($inretbiao){echo "创建了一个文章表成功!<br>";}else{echo "创建表出现错误,请检查。<br>";}
建好了表和库就有插入数据记录,还是用php来插入数据,目的是检查数据的正确性,有时出现中文乱码现象好及时处理。
先做一张表单见图;
插入数据表的php代码;
if(($_POST['button2'] == '提交')&&($_POST['biaoti'] != "")){
require_once('connfig.php');
// 字段名有: id feiLei biaoTi neiRong yongHu yue laiYuan fBriqi
// 编号 分类 标题 内容 用户 阅读数 来源地 发表日期
$a1 = $_POST['fenLei'];
$a2 = $_POST['biaoti'];
$a3 = $_POST['neirong'];
$a4 = $_POST['yonghu'];
$a5 = $_POST['yue'];
$a6 = $_POST['laiyuan'];
$a7 = $_POST['fbriqi'];
$sqlRs = "INSERT INTO `wenzhang`(feiLei, biaoTi, neiRong, yongHu, yue, laiYuan, fBriqi) VALUES ('$a1', '$a2', '$a3', '$a4', '$a5', '$a6', '$a7');";
$Rs = mysql_query($sqlRs, $con) or die(mysql_error());
}
测试插入数据,成功。然后还有做一张是显示表的php文档看看结果。
require_once('connfig.php');
$query_Rs = "SELECT * FROM wenzhang";
$Rs = mysql_query($query_Rs, $con) or die(mysql_error());
$row_Rs = mysql_fetch_assoc($Rs);
$totalRows_Rs = mysql_num_rows($Rs);
<?php do { ?>
<tr>
<td height="28" align="center"><?php echo $row_Rs['id']; ?></td>
<td><?php echo $row_Rs['feiLei']; ?></td>
<td><?php echo $row_Rs['biaoTi']; ?></td>
<td align="center"><?php echo $row_Rs['yue']; ?></td>
<td align="center"><a href="c_XiugaiBiao.php?xgid=<?php echo $row_Rs['id']; ?>">修改</a> 删除</td>
</tr>
<?php } while ($row_Rs = mysql_fetch_assoc($Rs)); ?>
结果出来了。
我的文档/显示记录结果图结果.jpg
现在应该来做flashcs3的插入数据和显示数据影片。
flash的界面图片效果图。
下面是As3脚本。
var tf:TextFormat = new TextFormat();///- 设置字符 -
tf.color = 0x000000;// 黑色
tf.size = 12;
tf.font = "Arial Baltic,宋体";
biaoti.setStyle("textFormat",tf);
fenLei.setStyle("textFormat",tf);
neirong.setStyle("textFormat",tf);
fabu.setStyle("textFormat",tf);
////====="AspVBScript","phpMysql","FlashFlex","FlashAs3游戏","数据库服务器"<=====下拉列表内容
fabu.addEventListener(MouseEvent.CLICK, fabuCK);///侦听按钮
function fabuCK(event:MouseEvent) {
//trace("标题的按钮"+ event.currentTarget.name);
/*trace(fenLei.text);
trace(biaoti.text);
trace(neirong.text);
trace(faburen.text);
trace(laiyuan.text);*/
var s1:String= fenLei.text;
var s2:String= biaoti.text;
var s3:String= neirong.text;
var s4:String= faburen.text;
var s5:String= laiyuan.text;
//trace (s1);
//--连接PHP的主文件gateway.php解释处理
var gateway_url:String = "http://localhost/amfphp/gateway.php";
var geteway_conn:NetConnection = new NetConnection();
geteway_conn.connect(gateway_url);
geteway_conn.call("phpFlashXinXi.chaRu", new Responder(onResult, onFault),s1,s2,s3,s4,s5);
}
function onResult(result:String):void{
trace ("插入信息成功!");
}
function onFault(result:String):void{
trace("出现错误哦。");
}
还不要忙去测试,还有php的脚本没有写,在C:\Apache2\htdocs\amfphp\services写脚本文件。
phpFlashXinXi.php
//--添加信息--插入记录---
// 字段名有: id feiLei biaoTi neiRong yongHu yue laiYuan fBriqi
// 编号 分类 标题 内容 用户 阅读数 来源地 发表日期
class phpFlashXinXi
{
function chaRu($fl,$bt,$nr,$yh,$ly)
{
$aarq = date("Y-m-d");
mysql_pconnect("localhost","root","123");
mysql_select_db("phpFlash");
$sqlRs = "INSERT INTO wenzhang(feiLei, biaoTi, neiRong, yongHu, yue, laiYuan, fBriqi) VALUES ('$fl','$bt', '$nr', '$yh', '1', '$ly', '$aarq');";
$Rs = mysql_query($sqlRs);
if($Rs){
return "ok";
}
}
}
现在就可以flash影片测试了,看看结果用前面的php文档来显示,就知道结果是不是插入了数据。
插入数据是很重要的,读出数据更重要。
读出数据要显示在影片的什么地方,有很多的方法。用组件是最简单的,我是用的文本方式显示在影片里。
///读取数据库信息======直接用的按钮在属性实例名写上按钮名加上侦听===
AspVBScript.addEventListener(MouseEvent.CLICK, ddhmcCk);
FlashFlex.addEventListener(MouseEvent.CLICK, ddhmcCk);
phpMysql.addEventListener(MouseEvent.CLICK, ddhmcCk);
function ddhmcCk(event:MouseEvent):void {
///trace(event.currentTarget.name);
var ss:String = event.currentTarget.name;
callAmfPHP(ss);
}
//--连接PHP的主文件gateway.php解释处理
var gateway_url:String = "http://localhost/amfphp/gateway.php";
var geteway_conn:NetConnection = new NetConnection();
////调PHP连接的数据库
function callAmfPHP(str:String):void {
geteway_conn.connect(gateway_url);
geteway_conn.call("phpFlashXinXi.xianShiLei", new Responder(onRok, onFerr),str);
}
//正确获得数据方法一onResult是有数据获取成功---onFault没有数据Object
function onRok(resu:Array):void {
///trace(resu[0]["biaoTi"]);
var cktxt:Array = new Array();// 窗口里的文字
for (var i:int = 0; i<resu.length; i++) {
cktxt[i] = new TextField();
cktxt[i].text =resu[i]["biaoTi"];
cktxt[i].x = 10;
cktxt[i].y = 10 + 22 * i;
cktxt[i].width = 130;
cktxt[i].height = 22;
changk_Mc.addChild(cktxt[i]);// 加入到影片里显示
}
}
function onFerr(resu:Object):void {
trace("amfphp-error");
}
php文档在同上一章的情况一样。加在phpFlashXinXi.php文件里。
function xianShiLei($LeiMing){
$conn = mysql_pconnect("localhost","root","sa");
mysql_select_db("phpFlash", $conn);
$chalei = "SELECT * FROM wenzhang WHERE feiLei = '".$LeiMing."' ORDER BY id DESC";
$jieG = mysql_query($chalei, $conn);
$arrjieg = array();
if ($jieG) {
while($data = mysql_fetch_array($jieG, MYSQL_ASSOC))
{
array_push($arrjieg,$data);
}
return $arrjieg;
}else{
return "SQL-error!";
}
}//xianShiLei
是我写的看看在http://www.cqphpnet.com/Flex/liuyanben.html 留言本
在“重庆职教网”有我写的教程就是上面的。
⑤ 谁有解决amfphp 1.2 支持中文的方法,0.9c的不好使啊!
朋友,你真是好心,,,直接关了,确是浪费!!!
修改io/的
AMFInputStream.php和AMFSerializer.php
去掉utf8_encode和utf8_decode即可!
AMFPHP是PHP平台实现类似于Macromedia的产品Flash Remoting的开源组件,但因为其开发还未完善,使用中会出现无法显示汉字的情况,究其原因就在于字符编码转换过程中出现问题。
网上曾有人提出过解决方法,就是去掉utf8编码和解码的过程。但我发现只是解决了从Flash到AMFPHP再回到Flash的字符串传递过程,这中间数据都是以unicode的形式传递的,所以没有出现问题,例如AMFPHP自带的例子中那样。但是从service到Flash仍然无法实现正常的显示。
所以必须正确编/解码才可以完整解决显示汉字的问题。
解决方法(以简体汉字为例):
为PHP安装好iconv模块,然后做如下修改。
修改utf8的编码(即utf8_encode函数)过程为:iconv("GB2312","UTF-8",$string)
修改utf8的解码(即utf8_decode函数)过程为:iconv("UTF-8","GB2312",$string)
需要修改的文件有:
\flashservices\io\AMFInputStream.php' :
\flashservices\io\AMFSerializer.php' :
\flashservices\sql\adodbRecordSet.php' :
\flashservices\sql\mssqlRecordSet.php' :
\flashservices\sql\mysqlRecordSet.php' :
\flashservices\sql\odbcRecordSet.php' :
\flashservices\sql\postgresRecordSet.php' :