首页 > 编程技术 > php

PHP开发利器-PRADO 1.6范例

发布时间:2016-11-25 16:15

第三章 范例:the Hangman Game


  这一章将会讲一下开发一个基于Web的Hangman Game(猜词游戏)。这里面会用到一些PRADO的组件。这个游戏说明了显示状态使PRADO页面具有很强的交互性。
  这个游戏只包括了一个页面来实现以下的功能:当用户第一次访问的时候,允许用户选择三种不同难度来开始这个游戏,不同的难度对应着不同的可以猜错的次数。游戏开始后,页面的上半部分会显示要猜得单词,没有猜中的字母用下划线显示。页面的下半部分列出了26个字母,用户可以点击对应字母来选择要猜的字母。如果用户放弃游戏或者错误次数超过了难度限制,会显示失败信息;如果猜对了,会显示成功信息。任何时候用户都可以重新开始游戏。
 

  范例中会使用的 PRADO 组件包括:

TRadioButton: 显示一个单选框。
TPanel: 显示 <div> 元素。
TLabel: 显示文本。
TButton: 显示一个提交按钮。
TLinkButton: 显示一个提交操作的超链接。
TForm: 显示 <form> 元素。
 

  这些定义好的组件通过属性和事件已经封装好了很多功能。比如,可以设置TPanelVisible
属性来控制整个<div>元素是不是可见。可以给TButton 组件的OnClick 事件指定一个响应函数,这样当用户点击按钮的时候就会自动调用响应函数。请参考PRADO API文档中关于这些组件更详细的信息。
  游戏中的一些数据在游戏过程中需要一值保持着的。因为这里只用了一个页面,所以可以使用显示状态而不需要使用session来保存这些数据。下面这些数据需要保存在显示状态中:

Word:要猜得单词。
GuessWord: 正在猜的单词(没有猜中用下划线显示)。
Level:游戏的难度级别。
Misses: 猜错的次数。
 

  他们都被定义在页面的属性中(当然也可以不这么做)。
 
  我们需要创建6个文件。假定这个应用放在Web服务器的根目录下,这些文件是:

hangman.php : 应用的主入口;
WEB-INF/hangman.spec: 应用的配置文件;
WEB-INF/hangman/HomePage.php: 页面类文件;
WEB-INF/hangman/HomePage.spec: 页面规格文件;
WEB-INF/hangman/HomePage.tpl: 页面模板文件;
WEB-INF/data/hangman.txt: 包含要猜得单词的文本文件。
1,要下载2个php的安装包:一个是install版本的,另一个是zip版本的 。
2,运行install版本,按照标准模式安装就可以了,安装过程中注意正确选择你的iIS版本。
2000server 选iis4或更高版本 ,2003server选择iis 6.
关联.php,.phtml.php3等文件类型。这里设定d:php作为安装目录
3,别着急,现在还不能马上用.把zip版的解压缩,到d:php5zip文件夹下面,copy目录下所有的文件和目录,然后粘贴到d:php,覆盖下面的所有文件.
4,C:PHPext下面的dll扩展文件复制到c:windowssystem32下面,*给guests用户组(我的机器上,每个站点设置了用不同的匿名用户,这些用户都属于guests组,如果你只有一个ISUR_你的机器名,则只需要设置ISUR_你的机器名的权限)这些关于PHP5的dll文件读取和运行的权限。
5,*给guests用户组php.exe,php-cgi.exe,php5isapi.dll读取和运行的权限。
6,*设置c:windowsphp.ini 或者 c:winntphp.ini为guests用户组可以:读取.
7,最后,别忘记在IIS里面给站点属性--〉文档里增加index.php或者default.php
8,MySQL的启用:
需要去掉c:windowsphp.ini 或者 c:winntphp.ini里面关于php_mysqli.dll扩展的注释
另外增加extension=php_mysql.dll
9,好了,如果要增加图形或其他功能,修改php.ini 里面的extension,并且把相关的dll文件复制到c:windowssystem32下面,并给guests用户组这些关于PHP5的dll文件读取和运行的权限。


  对于已经熟悉Apache+PHP+MYSQL的安装配置的开发人员,或者是不想涉及开发而只是想建立PHP应用程序的人来说,使用Apache/PHP/MYSQL安装套件来配置PHP的WEB环境会方便不少,但是选择合适的套件还是需要的。个人把曾经使用过的,以及比较知名的安装套件总结如下:
  WAMP
  一直在用的,带有phpMyAdmin和SQLiteManager ,提供了很多Add-on插件,如PHP版本切换、ZEND OPTIMIZER 、WEBALIZER等,站长推荐!
  http://www.wampserver.com/
  TSW
  比较完整,支持PERL,FTPServer,还提供有Tomcat和wordpress插件
  http://sourceforge.net/projects/yawamp/
  GREENAMP
  国产的套件,无删除功能
  http://chin.blogchina.com
  VertrigoServ
  内置了ZendOptimizer
  http://vertrigo.sourceforge.net/
  XAMP
  很不错,提供了丰富的插件,如perl、python、tomcat和cocoon
  http://www.apachefriends.org/de/xampp-windows.html
  WAPM
  国产的,支持Tomcat和Turck MMCahe、ZendOptimizer
  http://w.yi.org/
  Appserv
  也整合了Zend Optimizer
  http://www.appservnetwork.com/
  Apache2Triad
  包含了Perl , Python
  http://apache2triad.sourceforge.net
  EasyPHP
  安装比较简单
  http://www.easyphp.org/
  LiteWeb
  支持Perl和虚拟域名
  http://www.cmfperception.com/liteweb.html
  phpHome
  http://phphome.sourceforge.net/


<?php
//多文件上载系统完整版
//功能强大,可任意控制上载文件数,是否覆盖
//叨叨
//信箱:pjzhp@263.net
include("../include/common.inc");
$title = "多个文件的上载程序";
include("../include/header.inc");
//定义允许上载文件的数目
define("UPLOAD_NO", 10);
echo("<p align="center"><font size="4" color="#000080">欢迎您!<br>一次可以最多上载".UPLOAD_NO."个文件<br><HR>n");
if($REQUEST_METHOD!="POST"){
echo("<form enctype="multipart/form-data" method=post>n");
echo("<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="3000000">n");
for($i=1;$i<=UPLOAD_NO;$i ){
echo("<input type=file name=infile$i>");
if($i%2==0)
echo("<br>n");
}
echo("<br><br><input type="checkbox" name="overload" value="ON"></font> <font color="#ff0000">是否覆盖已经存在的文件?</font>");
echo("<br><br><input type=submit value=上载></form>n");
}
else{
//处理上载
$noinput = true;
for($i=1;$noinput&&($i<=UPLOAD_NO);$i ){
if(${"infile".$i}!="none") $noinput = false;
}
if($noinput){
echo("<font size="4" color="#000080">没有选定的文件,返回重试</font>");
exit();
}
echo("<p align="center"><font size="4" color="#000080">您选中的文件已经成功地上载到服务器的临时目录!</font><br>");
echo("<table border="1" width="84%" height="52" bordercolorlight="#008080" bordercolordark="#008080">
<tr>
<td width="14%" bgcolor="#008000" height="21"><font color="#FFFFFF">文件号</font></td>
<td width="52%" bgcolor="#008000" height="21"><font color="#FFFFFF">文件名称</font></td>
<td width="34%" bgcolor="#008000" height="21"><font color="#FFFFFF">文件大小</font></td>
  最近对google的PageRank比较感兴趣,一直想知道如何不用google toolbar来获取pr值。用嗅探工具获得google toolbar发出请求的url为:http://toolbarqueries.google.com//search?client=navclient-auto&ch=64170410360&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:http://www.ugia.cn,其中的关键部分为ch=64170410360,即CheckSum,不知道这个是用的什么算法得出来的。
  苦苦搜索之后,找到如下代码:
  转自: http://meese.ath.cx/google via 思路(http://silu.spirezone.com)
<?php
/**
This code is released unto the public domain
*/
//header("Content-Type: text/plain; charset=utf-8");
define('GOOGLE_MAGIC', 0xE6359A60);
//unsigned shift right
function zeroFill($a, $b)
{
$z = hexdec(80000000);
if ($z &#038; $a)
{
$a = ($a>>1);
$a &#038;= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
}
else
{
$a = ($a>>$b);
}
return $a;
}
function mix($a,$b,$c) {
$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a< <8);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));
return array($a,$b,$c);
}
function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
if(is_null($length)) {
$length = sizeof($url);
}
$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;
while($len >= 12) {
$a = ($url[$k 0] ($url[$k 1]< <8) ($url[$k 2]<<16) ($url[$k 3]<<24));
标签:[!--infotagslink--]

您可能感兴趣的文章: