网上有很多JavaScript编写的日历,这种日历读取的是本地的时间,可能会不准确。所以想找一个用php编写的,能读取服务器时间的日历,但是一直都找不到合适的,于是我自己尝试着写了一个。
代码
<?php
$mnow=(isset($HTTP_GET_VARS['month']) && intval($HTTP_GET_VARS['month'])>0 && intval($HTTP_GET_VARS['month'])<13)?intval($HTTP_GET_VARS['month']):date("m");
$ynow=(isset($HTTP_GET_VARS['year']) && intval($HTTP_GET_VARS['year'])>1969 && intval($HTTP_GET_VARS['year'])<2038)?intval($HTTP_GET_VARS['year']):date("Y");
$mtime=mktime(0,0,0,$mnow,date("d"),$ynow);
$f=date("w",mktime(0,0,0,$mnow,1,$ynow))-1;
echo "<table id="calendar" border="0" cellpadding="2" cellspacing="1">";
echo "<tr><td colspan="4" align="center" class="calendartitle"><a href="?".($mnow!=date("m")?"month=".intval($mnow)."&":"")."year=".(intval($ynow)==1970?"1970":intval($ynow)-1).""><</a>".$ynow."<a href="?".($mnow!=date("m")?"month=".intval($mnow)."&":"")."year=".(intval($ynow)==2037?"2037":intval($ynow)+1)."">></a></td><td colspan="3" align="center" class="calendartitle"><a href="?month=".(intval($mnow)==1?"12":intval($mnow)-1).($ynow!=date("Y")?"&year=".intval($ynow):"").""><</a>".date("M",$mtime)."<a href="?month=".(intval($mnow)==12?"1":intval($mnow)+1).($ynow!=date("Y")?"&year=".intval($ynow):"")."">></a></td></tr>";
echo "<tr><td class="calendartop">S</td><td class="calendartop">M</td><td class="calendartop">T</td><td class="calendartop">W</td><td class="calendartop">T</td><td class="calendartop">F</td><td class="calendartop">S</td></tr>";
for($i=0;$i<date("t",$mtime)+$f+1;$i++){
if($i%7==0)echo "<tr>";
echo "<td".(($i-$f==intval(date("d")) && $mnow==date("m") && $ynow==date("Y"))?" id="calendartoday"":"").(($i%7==0 || $i%7==6)?" class="calendarw"":"").">";
if($i>$f)echo $i-$f;
echo "</td>";
if($i%7==6)echo "</tr>";
}
if($i%7<6 && $i%7>0)echo "<td colspan="".(7-$i%7).""></td></tr>";
if($i%7==6)echo "<td></td></tr>";
echo "</table>";
?>
PHP-GTK 介绍及其应用
1. PHP-GTK介绍
1.1 PHP-GTK
PHP-GTK是PHP的延伸模组,它可以让程式设计师写出在客户端执行的、且独立的GUI的程式。这个模组不允许在浏览器上显视GTK+的程式,它一开始就是开发来写独立的GUI程式的。
1.2 GTK
GTK原本是为GIMP,一个GUI的影像处理软体而开发的。GTK+是GIMP的套装工具。GTK+从这里开始发展,直到现在已经成为Gnome的中心(Gnome是一个桌面环境)。後来GTK+也已经被推广到BeOS和Win32,使得它成为PHP延伸模组的最佳选择,维持PHP可以跨平台并可以用PHP为Linux,BeOS,Windows等平台开发视窗介面的程式。
2. PHP-GTK概念
2.1 前言
接下来就要教各位一点点比较观念性的东西罗┅因为这章的概念都是非常重要的,所以就算不懂,也还是要慢慢的看懂它,不然┅以後就┅。还有,接下来的内容不建议没有程式设计经验的读者阅读,因为有很多的观念很容易会搞不清楚。还有,接下来该用英文的部分我都会用英文,这样大家在看国外文件的时候才不会不知所措,加油吧!!如果对本章有任何不懂之处,请自行查阅
PHP-GTK Manual:http://gtk.php.net/manual/en/
2.2 Widget(s)
Widget是一个GUI程式中基本的functions和forms。最常用的几个Widget是:label、button、window、frame和text box。所有的widget都是来自於一个抽象的基本class─GtkWidget。每个widget都是一个class
一个Widget一生大概都有五个时期:
1. 建立(Creation):宣告一个物件(declaring an object)
2. 放置(Placement):将它加入一个容器中(adding it to a container)
3. 信号连接(Signal Connection):接收信号以及进行动作(the action it will perform)
4. 显示(Display):它是否是可见的(whether it is viewable or not)
5. 删除(Destruction):关闭程式(closing of a program)
2.3 Container(s)
Container是一个可以包含其他widget的widget。大部分的widget都是container,例如:GtkWindow、GtkTable和GtkBox。除了这点之外,container跟其他的widget没两样,也可以被放到其他container去。而所有的container都是来自於一个class─GtkContainer,本身来自於GtkWidget的class。所以container也是widget的一种。
2.4 Signal(s)
当程式设计师在程式中做了一个动作时,程式需要有一个动作来回应使用者的动作。Signals使程式可以知道使用者做了动作并可以触发适合的回应。
例如,当使用者按了一个可以开新视窗的按钮(GtkButton),程式认出这个请求,於是就开了一个新的视窗。这件事可以经由signal来做到。当按钮按下去之後,会使widget发出一个signal,接着再由该signal触发callbacks,产生一个新的视窗(GtkWindow)。
关于PHP中的Class的几点个人看法
以我的观点来说说PHP中的Class,用于表达的语言都是非正式的语言,也不能确定是否正确。
建立一个类很简单:
class my_class {}
类到底干什么呢?很多人都说是什么黑匣子,我在这里称它为一个独立的整体。我们只知道类名,而不知道里面有什么东西。那么,该如何使用这个类呢?
首先:要知道它里面是否定义了公共的变量--专业术语上称它为“属性”。
其次:要知道它里面定义了什么函数--专业术语中称它为“方法”。
我都被这些专业术语搞糊涂了,所以干脆不理它了。
类中的如何定义公共变量,它有什么作用呢?
很简单,我们来扩充 my_class 类:
class my_class
{
var $username;
}
看上面很简单,我们定义了一个公共的变量,只是用 var+空格+普通变量名 构成。它有什么用呢?考虑一下函数中,如果我们要访问函数外的变量,是不是要先 global 一下呢?这个想实现的效果也是如此,它是想让这个类中的所有函数都能访问它,而它区别于函数的一个地方,是类的外部也可以随时访问和控制这个变量,我随后再讲外部如何访问它。还有一个区别,不能用复杂的语句给这个变量赋值(具体的等理解了类以后自己去看规则)。
给它一个默认值:
class my_class
{
var $username = "深空";
}
OK,定义了一个公共的变量了,接下来定义一个函数(也就是所谓的“方法”):
class my_class
{
var $username = "深空";
function show_username()
{
}
}
这个定义函数跟普通的定义函数形式上没什么区别了。简单就好,定义一个打印 $username 的函数:
class my_class
{
var $username = "深空";
function show_username($username)
{
echo $username;
}
}
到这里可能某些人开始迷糊了,呵呵,最关键的就是这里了,看清楚了。现在有三个 $username 了。到底哪个是哪个啊~~
函数所带的形参,不用解释了吧?这个函数功能就是打印形参所接收的值,也就是如果:
show_username("猪头深空");
那么它将打印 “猪头深空” ,就这么简单。
怎么样访问这个函数?肯定不是我上面说的那样直接 show_username("猪头深空"); 了,别急,类有类的一套。如下:
$Name = new my_class();
PHP中创建并处理图象
在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了。事实上,你也不需要很多几何学知识——因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像!
在使用基本的图像创建函数之前,需要安装GD库。要使用JPEG相关的图像创建函数还需要安装jpeg-6b。在图像中使用Type 1字体的时候还必须安装t1lib。asdf
在这里,你还需要对你的系统设置进行进一步地调整。首先安装t1lib并结束,然后是jpeg-6b。第三步安装GD函数库。确保以上三部分按顺序安装,原因是你需要编译GD库才能使用jpeg-6b库。如果首先安装jpeg-6b,编译就会出错,这会让你不知所措够上一段时间。
在三函数库之后,重新配置PHP。这是在轻松安装PHP的DSO版本时的典型方法。然后执行make clean,命令,并在当前配置提示中加入以下代码:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
最后执行make、make install完成配置。重新启动 Apache,并运行phpinfo()函数以检查新功能是否正常运行,然后就可以开始了。
取决于安装的GD库版本,你可能具有创建GIF或者PNG图像的能力。关键是如果你已经安装了gd-1.6或者早期版本,则可处理GIF文件,但不能处理PNG文件;如果安装了gd-1.6或者以后版本,你可以处理PNG文件却又不能处理GIF文件。
创建一个简单的图像需要几个函数。我将按步骤演示如下。
输出包含你所创建图像MIME类型的文件头,本例中为PNG。
header ("Content-type: image/png");
使用ImageCreate()创建一变量存放空白图像。该函数需要一个图片像素尺寸。格式为ImageCreate(x_size, y_size),对250*250像素的图片,如下:
$newImg = ImageCreate(250,250);
由于此时你的图像还是空白,所以需要用某些色彩填满它。但首先需要用ImageColorAllocate()函数按照颜色的RGB值为每种颜色确定名字。函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如是天蓝色,应使用:
$skyblue = ImageColorAllocate($newImg,136,193,255);
接着,用ImageFill()函数为图像填充以上颜色。实际上ImageFill()函数有多个版本,如ImageFillRectangle(), ImageFillPolygon()等等。为简单起见,采用ImageFill()函数进行颜色填充,格式如下:
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$skyblue);
php注入1
本文主要是为小菜们服务的,如果你已经是一只老鸟呢,可能某些东西会感觉比较乏味,但只要你仔细的看,你会发现很多有趣的东西哦。
阅读此文你只要明白下面的这点东西就够了。
1.明白php+mysql环境是如何搭建的,在光盘中我们收录搭建的相关文章,如果您对搭建php+mysql环境不是很清楚,请先查阅此文,在上一期的专题中也有所介绍。
2.大概了解php和apache的配置,主要用到php.ini和httpd.conf
而此文我们主要用到的是php.ini的配置。为了安全起见我们一般都打开php.ini里的安全模式,即让safe_mode = On,还有一个就是返回php执行错误的display_errors 这会返回很多有用的信息,所以我们应该关闭之,
即让display_errors=off 关闭错误显示后,php函数执行错误的信息将不会再显示给用户。
在php的配置文件php.ini中还有一个非常重要的配置选项magic_quotes_gpc,高版本的默认都是magic_quotes_gpc=On,只有在原来的古董级的php中的
默认配置是magic_quotes_gpc=Off,可是古董的东西也有人用的哦!
当php.ini中magic_quotes_gpc=On的时候会有什么情况发生哩,不用惊慌,天是塌不下来的啦!它只是把提交的变量中所有的 ' (单引号), " (双引号), (反斜线) 和 空字符会自动转为含有反斜线的转义字符,例如把'变成了',把变成了。
就是这一点,让我们很不爽哦,很多时候我们对字符型的就只好说BYEBYE了,
但是不用气馁,我们还是会有好方法来对付它的,往下看咯!
3.有一定的php语言基础和了解一些sql语句,这些都很简单,我们用到的东西很少,所以充电还来的及哦!
我们先来看看magic_quotes_gpc=Off的时候我们能干些啥,然后我们再想办法搞一搞magic_quotes_gpc=On的情况哈
一:magic_quotes_gpc=Off时的注入
ref="http://hackbase.com/hacker" target=_blank>攻击
magic_quotes_gpc=Off的情况虽然说很不安全,新版本默认也让
magic_quotes_gpc=On了,可是在很多服务器中我们还发现magic_quotes_gpc=Off的情况,例如www.qichi.*。
还有某些程序像vbb论坛就算你配置magic_quotes_gpc=On,它也会自动消除转义字符让我们有机可乘,所以说
magic_quotes_gpc=Off的注入方式还是大有市场的。
下面我们将从语法,注入点 and 注入类型几个方面来详细讲解mysql+php注入
A:从MYSQL语法方面先
1。先讲一些mysql的基本语法,算是给没有好好学习的孩子补课了哦~_~
用 PHP 实现的简单线性回归:(一)
数据库在 PHP 中的重要性
PHP 领域中缺少了一个功能强大的工具:基于语言的数学库。在这个由两部分组成的系列文章中,Paul Meagher 希望通过提供一个如何开发分析模型库的示例来启发 PHP 开发人员去开发和实现基于 PHP 的数学库。在第 1 部分中,他演示了如何使用 PHP 作为实现语言来开发和实现简单线性回归(Simple Linear Regression)算法包的核心部分。在第 2 部分中,作者在该包中添加了一些功能:针对中小规模数据集的有用的数据分析工具。
简介
与其它开放源码语言(比如 Perl 和 Python)相比,PHP 社区缺少强有力的工作来开发数学库。
造成这种状况的一个原因可能是由于已经存在大量成熟的数学工具,这可能阻碍了社区自行开发 PHP 工具的工作。例如,我曾研究过一个功能强大的工具 S System,它拥有一组令人印象深刻的统计库,专门被设计成用来分析数据集,并且在 1998 年由于其语言设计而获得了 ACM 奖。如果 S 或者其开放源码同类 R 仅仅是一个 exec_shell 调用,那么为何还要麻烦用 PHP 实现相同的统计计算功能呢?有关 S System、它的 ACM 奖或 R 的更多信息,请参阅参考资料。
难道这不是在浪费开发人员的精力吗?如果开发 PHP 数学库的动机是出自节省开发人员的精力以及使用最好的工具来完成工作,那么 PHP 现在的课题是很有意义的。
另一方面,出于教学动机可能会鼓励对 PHP 数学库的开发。对于大约 10% 的人来说,数学是个值得探索的有趣课题。对于那些同时还熟练应用 PHP 的人来说,PHP 数学库的开发可以增强数学学习过程,换句话说,不要只阅读有关 T 测试的章节,还要实现一个能计算相应的中间值并用标准格式显示它们的类。
通过指导和训练,我希望证明开发 PHP 数学库并不是一项很难的任务,它可能代表一项有趣的技术和学习难题。在本文中,我将提供一个 PHP 数学库示例,名为 SimpleLinearRegression,它演示了一个可以用来开发 PHP 数学库的通用方法。让我们从讨论一些通用的原则开始,这些原则指导我开发这个 SimpleLinearRegression 类。
指导原则
我使用了六个通用原则来指导 SimpleLinearRegression 类的开发。
1.每个分析模型建立一个类。
2.使用逆向链接来开发类。
3.预计有大量的 getter。
4.存储中间结果。
5.为详细的 API 制定首选项。
6.尽善尽美并非目标。
7.让我们更详细地逐条研究这些指导方针。
每个分析模型建立一个类
每种主要的分析测试或过程应当有一个名称与测试或过程名相同的 PHP 类,这个类包含了输入函数、计算中间值和汇总值的函数和输出函数(将中间值和汇总值用文本或图形格式全部显示在屏幕上)。
PHP教程.应用实例11
PHP应用提速面面观
PHP最大的优点之一显然在于它的快速度。一般情况下PHP总是具有足够的速度支持Web内容动态生成,许多时候你甚至无法找出比它更快的方法。然而,当你不得不面对庞大的访问量、高负荷的应用、有限的带宽以及其他各种带来性能瓶颈的因素时,你可能会问问自己是否可以做点什么让网站运行得更好。或许只要加上一个很不起眼的免费模块,你的PHP应用性能以及Web服务器响应速度就会有显著的改善。本文讨论的就是如何进一步提高php应用的性能,给用户以更美妙的浏览感受。本文分三个方面(代码优化、缓存、内容压缩)阐述提高PHP应用性能的各种技术,并介绍各个领域的知名产品。
代码优化
首先我们来看看代码优化。注意,这里的代码优化可不是指把代码写得更加美观漂亮,因为这恐怕已经是众所周知没有必要继续讨论了;另外,如果你已经考虑到了速度问题,很可能你早就对PHP的源代码作了一些优化。不过,有些工具却能够自动地帮助我们完成这些繁杂的工作,如Zend Optimizer就是这样一个工具。Zend Optimizer可以从Zend Technologies免费得到,但你必须同意它的许可约定,注意它不是以GPL方式发行。Zend Optimizer获取由Zend Engine运行时编译生成的中间代码,并对它进行优化,从而使得中间代码具有更快的执行效率。
Zend Optimizer的安装方法非常简单,你只需下载为自己所用平台提供的预编译版本,把下面两行代码加入到php.ini,然后重新启动Web服务器即可:
zend_optimizer.optimization_level=15
zend_extension="/path/to/ZendOptimizer.so"
zend_loader.enable=Off
这里额外增加的第三行代码是可选的。禁止zend_loader似乎能够让Zend Optimizer的速度更快一点,所以在php.ini中加上这行代码是值得的。注意:只有当你不使用Zend Encoder Runtime时,你才可以禁用zend_loader。
缓存
如果你想要让自己庞大的PHP应用有更好的性能表现,采用缓存也是一种很好的方法。现在已经有许多缓存方案可供选择,其中包括:Zend Cache,APC,和Afterburner Cache。
所有这些产品都属于“缓存模块”。当第一次出现对.php文件的请求时,它们会在Web服务器内存中保存PHP的中间代码,此后就用“经过编译”的版本响应后继的请求。这种方法确实能够改善应用的性能,因为它使得磁盘访问量减低到了最少的程度(代码已经读取和解析),代码直接在内存中运行使得服务器响应请求的速度大大提高。当然,缓存模块还会监视PHP源文件的变化,必要时重新缓存页面,从而防止了用户得到的页面仍旧由过时的PHP代码生成。由于缓存模块能够明显地降低服务器的负载、提高PHP应用的响应效率,因此它们非常适合于负载较大的网站使用。
让你不再恐惧--轻松接触 PHP专题
曾几何时,php之火在中国的大地燃烧,那熊熊烈火,至今也不因 .net 而熄灭!有理由相信,php 的高效运行效率,它的丰富免费资料,可以让它继续生存。
介绍 php 又怎么会忘记 php 的老换档 mysql 数据库呢,此两者常常成双成对,出双入对,就像影子一样,你不离开我,我不离开你!
小编辑为此整理了下面的专题教程,为 php 入门者提供方便。
php
PHP入门速成
PHP的安装
变量的变量,PHP 和 你
通过PHP连接MYSQL的两种方法
建立灵巧结构的PHP程序
mysql
在服务器上安装、使用MySQL的注意事项
MySQL数据库备份
PHP中类的理解和应用[二]
PHP中类的理解和应用[二]
许多PHP的爱好者在学习过程中感到对PHP中类的概念较难理解和掌握,虽然知道类既然存在就有其存在的道理,但是由于平时接触和使用的机会较少,也就一略而过。其实,只要我们理解变量和函数这些PHP基本概念的话,掌握类的含义就不成问题。鉴于类在PHP的重要作用,本文将结合具体事例介绍PHP中类的概念和应用。
(一)
所谓类就是指由变量和作用于变量的函数组成的集合。类提供了一种对现实世界中事物的描述方式。通过有效的使用类,我们可以将描述同一对象的多个变量和函数组合在一起,作为一个整体使用,从而使编写出来的程序更直观,更合理,更易于维护。
举一个比较通俗的例子,我们可以创建一个名为Bike的类来描述现实生活中的一辆自行车。首先,我们设定该类中的变量包括踏板$pedals,链条$chain,前轮$front wheel,后轮$rear wheel,刹车$brakes, 以及手柄$handle。然后,我们创建停车Stop(), 加速Accelerate(), 左转TurnLeft()和右转TurnRight()等函数。这样,我们就有了一个可以描述自行车这一对象所有行为和属性的类。例如,我们可以将$front wheel 和$rear wheel变量传入TurnLeft()函数,从而得到某种输出结果。
也许有人会问上述例子虽然有趣,但是我们完全可以使用常规的变量和函数实现同样功能,为什么一定要坚持使用这么烦琐的类呢?当然,如果我们在脚本中只需要描述一辆自行车话,定义一个类似乎没有什么特殊的价值。但是,如果当脚本需要涉及多辆自行车时呢?如果我们还是采用常规的为每量自行车都定义变量和函数的方法,那么光是跟踪每个变量,确保正确的变量输入正确的函数就是一项相当复杂的工作。相反,如果采用类的方式,就可以有效的减少所需变量的数量。此外,一个已经定义的类还可以被包含在其它文件或脚本中,从而实现代码的重复利用。
(二)
对PHP类的概念有所了解之后,我们就来具体看一下如何在脚本中创建和使用类。
给大家一个点子:利用MySQL的一个特性实现MySQL查询结果的分页显示
在mysql中利用select语句的一个特性就可以很方便地实现查询结果的分页,select语句的语法:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO OUTFILE 'file_name' export_options]
[FROM table_references
][WHERE where_definition]
[GROUP BY col_name,...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} ][ASC | DESC] ,...]
[LIMIT ][offset,] rows]
[PROCEDURE procedure_name] ]
LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数,
第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行
数。例如:
select * from table LIMIT 5,10; #返回第6-15行数据
select * from table LIMIT 5; #返回前5行
select * from table LIMIT 0,5; #返回前5行
linux下apache+mysql+php开发环境纯源代码编译搭建
记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过程
通常安装一台服务器当然使用rpm是最方便的,不需要考虑太多配置的问题,就可以轻松获得需要的环境了。不过rpm包互相关联的问题也不是这么容易解决。
apache,mysql,php这三个应用从源代码编译安装还是比较简单的,配置参数不算复杂,而且没有太多的依赖关系,从源码编译出来的系统也比较稳定一些,方便未来打补丁和升级工作。
编译安装的前提是,系统已经安装了相应的编译工具,一般我的习惯是在安装系统的时候,选择自定义系统并且只选择开发工具包这一项,其他所有软件包均不安装。如果您没有选择安装所有的开发工具,那么之前您至少需要安装下面的rpm包
autoconf-2.57-3.noarch.rpm
automake-1.7.8-1.noarch.rpm
binutils-2.14.90.0.6-3.i386.rpm
bison-1.875-5.i386.rpm
byacc-1.9-26.i386.rpm
cpp-3.3.2-1.i386.rpm
flex-2.5.4a-30.i386.rpm
gcc-3.3.2-1.i386.rpm
gcc-c++-3.3.2-1.i386.rpm
glibc-devel-2.3.2-101.i386.rpm
glibc-headers-2.3.2-101.i386.rpm
glibc-kernheaders-2.4-8.36.i386.rpm
libstdc++-devel-3.3.2-1.i386.rpm
m4-1.4.1-14.i386.rpm
下面介绍步骤
1、mysql安装
下载一个目标版本
tar -xzvf mysql-4.0.xx.tar.gz
cd mysql-4.0.xx
./configure --prefix=/usr/local/mysql <--这个路径是我比较习惯的,您也可以选择其它安装路径
make
make install
在support-files目录中,选择一个适当的.cnf文件,cp到/etc/my.cnf
cd /usr/local/mysql/bin
./mysql_install_db
../share/mysql/mysql.server start
./mysqladmin -uroot password 'xxxx' <--修改默认的密码
./mysql -uroot -p 尝试登陆mysql,应该是没有问题的了
mysql.server这个文件可以copy到/etc/rc.d/init.d目录下,设置系统启动的时候自动启动mysql服务
2、apache安装
下载一个目标版本
tar -xzvf httpd-2.0.xx.tar.gz
cd httpd-2.0.xx
./configure --prefix=/usr/local/apache --enable-so <--模块化
make
make install
cd /usr/local/apache/conf
修改httpd.conf,因为一会儿还要配置php,这里可以暂时简单设置一下,主要配置User,Group,ServerName,DocumentRoot,DirectoryIndex这些参数就可以了
用 PHP 动态创建 Flash 动画
Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣。然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成。我们可以根据数据库里的数据创建出各种不同效果的动画。
Ming 动画库最初出现在PHP4.05版本里,替代了以前版本的LibSwf模块。Ming 库采用C编写,支持多种语言,下面先看一下如何利用PHP来制作动画。该库使用简单,和 PHP 紧密集成,但是,该库仍然处于实验阶段,目前的版本是0.2a,在线的教程、例子、和帮助手册可以让我们方便地学习,Ming里的函数组织的很有条理,方便PHP和Flash开发者查找。使用 PHP和Ming库,不但让我们的网站有华丽的装饰,而且可以减少开发Flash动画的费用和繁复的劳动。
使用Ming库有两种方式,我们可以内嵌到PHP里(对Unix平台而言),也可以把它作为一个PHP模块来运行,里面的函数支持所有的平台,使用时也无需实例化。如果我们把Ming库作为PHP模块来运行的话,我们必须明确地调用Ming库,和使用其他模块一样,然后使用该库里的函数。由于使用前必须先加载模块,与把Ming作为内部函数编译的方式相比,要有一点性能的下降。
Ming库是完全免费的,我们可以到创作者的网站下载,地址是:http://www.opaque.net/ming/,该网站....php.net/ming。
一旦我们正确安装和配置了Ming库,我们可以创建一个PHP对象,从PHP里调用Ming的函数,通过调用函数和属性,就可以定义我们的动画了。在PHP模块里有13个对象,提供了Flash的一些功能,也有几个命令可以来控制发行时的参数设定。下面就看看如何利用它来创建动画。
使用Macromedia Flash创建SWF格式的动画,我们先创建一些符号,Flash有三种类型的符号:图形、动画剪辑、按钮。一旦我们创建了这些符号,我们就可以把它们复制到场景里,每一个拷贝称为一个实例,可以放任意多的实例到我们的场景里。接下来就可以定义这些对象的行为了,也就是定义动作和运动轨迹,也可以定义动画的参数,如尺寸大小和背景颜色,如果需要,可以保存成.SWF文件。
利用PHP的Ming库创建Flash动画,和Macromedia Flash一样,必须先创建一些符号,这些符号就是PHP对象的实例,然后定义这些对象在动画场景里的位置和相互关系,接着定义对象在每一帧里的动作,最后定义动画自己。我们可以直接把SWF直接输出到浏览器,也可以保存成SWF格式的文件,以备后用。Flash的优点就是图形化的用户接口,利用Ming库不但可以更加简单的控制对象,而且具有无限的扩展性和再用性。