1 实践目的与任务
(1)PHP编辑编译环境安装与配置;
(2)PHP变量定义、语法、语句的使用;
(3)PHP页面的编写;
(4)PHP页面提交数据的采集、处理;
2 使用的工具、环境配置、知识点等
(1)Eclipse for PHP等PHP编辑工具、phpStudy等网页运行集成环境;
(2)安装以上软件的计算机;
3 实践内容及要求
(1)
配置phpStudy测试Web服务器正常运行,配置Eclipse for PHP编辑环境,使用phpStudy环境在Eclipse for PHP上运行调试PHP代码。调试配置参考如下:
[XDebug]
zend_extension="C:\phpStudy\PHPTutorial\php\php-5.4.45\ext\php_xdebug.dll"
;函数调用跟踪信息输出文件目录,默认值为/tmp
xdebug.trace_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.auto_trace = On
;性能分析文件的存放位置,默认值为/tmp
xdebug.profiler_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.profiler_enable=On
;是否允许Xdebug跟踪函数参数,默认值为0
xdebug.collect_params = On
;是否允许Xdebug跟踪函数返回值,默认值为
xdebug.collect_return = On
;是否收集指定作用域中的变量信息,利用xdebug_get_declared_vars()函数,那么就需要开启该设置了
;xdebug.collect_vars = On
;在异常出现时甚至是该异常被捕捉也会显示其堆栈跟踪信息
xdebug.show_exception_trace = On
;远程调试设置
xdebug.remote_enable = On
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
;任何运行情况下都开启调试
xdebug.remote_autostart = Off
(2)
在Web服务器下编写包含如下form标签的完整网页input.html,输入多个十进制正整数:<form action="calculate.php"method="post" enctype="multipart/form-data">输入操作数:<br/>数1:<inputtype="text" name="operands[]" value="输入运算数" /><br/>数2:<inputtype="text" name="operands[]" value="输入运算数" /><br/>数3:<inputtype="text" name="operands[]" value="输入运算数" /><br/>数4:<input type="text"name="operands[]" value="输入运算数"/><br/>数5:<inputtype="text" name="operands[]" value="输入运算数" /><br/>提交按钮:<input type="submit" name="submit1"value="普通提交按钮"/><br/>图片按钮:<input type="image" name="submit2"src="http://www.google.cn/intl/zh-CN/images/logo.gif"height="40" /><br/>重置按钮:<input type="reset" name="cancel"value="重新填写"/></form>
(3)
在Web服务器下编写文件calculate.php,在其中能够获取浏览器端访问input.html页面时在form标签中提交的信息,上传文件,并正确返回浏览器以下结果:数1的逆序,数2和数3的最小公倍数,数4的二进制,数5的十六进制;
4 需求分析和功能描述
4.1 数据结构表示与存储需求分析
用“指针”与“数组”来存储用户在form表单中提交的数据信息。
在input.html文件中,用数组来存储用户输入的5个数字信息,然后提交form表单后,用“指针”来存储数据信息。
用foreach(array as $value)来遍历数组比较方便,其功能如下:
foreach(array as $value)
使用该方法循环遍历给定的数组array,每次循环中,“当前指针”所指元素的“值”赋给变量$value,然后移动数组array“当前指针”,使“当前指针”指向下一个元素,周而复始,直至数组array最后一个元素,此时“当前指针”为空。
4.2 操作与功能分析
编写好input.html文件后,需要将用户输入的信息“传输”至calculate.php文件中,然后在calculate.php文件编写相关的代码,对数1、数2、数3、数4、数5进行操作。
5 系统总体设计
5.1 输入与流程顺序
用form表单及相关标签接收用户输入的信息。如,<input />标签,通过设置<input />标签中的name值,将用户输入的数据组成一个数组,然后统一提交至calculate.php文件中。
5.2 系统功能模块设计
系统功能有:处理用户输入的数据,如:返回数字1的逆序数、求数字2与数字3的最小公倍数、将数字4转化为二进制数字输出、将数字5转化为十六进制数字输出。重置表单信息、点击图片按钮提交表单。
表单按钮部分较为简单,直接设置<input />标签的相关属性就可以了。
数据处理部分较为困难,需要新建数组,然后逐个对数据进行处理。
5.3 数据结构和流程设计
在input.html文件中,用“数组”存储用户输入的数据;用户提交表单后,在calculate.php文件中用“链表”来存储数据。创建新数组,用来存储用户输入的数据,然后遍历新建数组,对数据进行处理。
6 详细设计和实现过程
(具体功能实现等,可自由添加其它内容、部分源代码等)
6.1 学生信息等结构设计与描述(写出你所设计的数组或链表等其他形式的变量)
foreach ()函数 循环遍历给定的数组
implode() 函数 把数组元素组合为字符串。
array_reverse()函数以相反的元素顺序返回数组。
str_split()函数 把字符串分割到数组中。
max()函数 返回一个数组中的最大值,或者几个指定值中的最大值。
decbin()函数 把十进制数转换为二进制数。
dechex() 函数 把十进制转换为十六进制。
6.2 主要函数设计(列出你所设计的函数声明语句,每个声明后需有注释,表明该函数功能)
foreach ()函数 循环遍历给定的数组
implode() 函数 把数组元素组合为字符串。
array_reverse()函数以相反的元素顺序返回数组。
str_split()函数 把字符串分割到数组中。
max()函数 返回一个数组中的最大值,或者几个指定值中的最大值。
decbin()函数 把十进制数转换为二进制数。
dechex() 函数 把十进制转换为十六进制。
7 功能展示
(功能展示图,说明等)
8 实践收获
此次实验,难度较大。在实验的过程中,收获了很多知识,解决了很多疑惑。在浏览器地址栏中输入文件所在位置,就可以运行此文件,感到PHP语言十分灵活。
在实验过程中,遇到的最大的困难就是:将form表单中的5个数据提交后,如何遍历数组,使得程序人员可以逐个对数据进行处理。困扰了我好长时间。参考课本98页对foreach语言结构的讲述以及127页具体运用foreach数据结构的代码,我还是没有想到逐个遍历数组的方法。在百度上搜寻了foreach语言结构的相关知识后,我渐渐对foreach语言结构有了更深的理解。foreach($_POST['operands']
as $a[]) {}语句,可以将数组中的数据元素逐个存放在一个新的数组中,非常容易遍历数组、对数组中的各个数据进行处理。
在实验中还有很多疑惑。比如,汉字乱码。为什么我在PHP文件中加入了“header("Content-Type:
text/html;charset=utf-8");”语句,依旧无法完全解决乱码问题?在我编写的其它PHP文件中,加入“header("Content-Type:
text/html;charset=utf-8");”语句后,乱码问题得到了很好的解决。在百度上搜了很多篇文章,都没有解决我的疑惑!我准备问问老师或同学们。
我认为我的程序还有很多可以改进的地方。例如,在calculate.php文件中对数组进行遍历的操作。我认为可以用for()循环对数组进行遍历。在for()循环语句中,加上限制条件,如:判断当前数字是数组的第几个元素,根据元素所处序号选择不同的操作方法对数据进行处理。我认为这样会令程序更加灵活、更具可读性。
此外,我认为还可以在用户输入数据的时候,对数据进行验证。验证用户所输入的内容是不是数字。这在一定程度上可以解决乱码的问题。
9 附录
9.1 关键性代码
(可加部分关键性代码,不超过3页;说明等)