PHP实习报告

信 息 工 程 学 院

WEB技术及应用 实习报告

学院:信息工程学院 班级:信息082 姓名:熊朝军 学号:09208046 成绩:

一、实习题目 : PHP程序设计

二、实习过程

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。

【2】Win32下apache2 用get方法传递中文参数会出错:

test.php?a=你好&b=你也好

传递参数是会导致一个内部错误

解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好) .............

【3】win32下的session不能正常工作

php.ini默认的session.save_path = /tmp

这显然是linux下的配置,win32下php无法读写session文件导致session无法使用,把它改成一个绝对路径就可以了,例如session.save_path = c:windows emp

【4】显示错误信息

当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽。

例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo

【5】Win32下mail()不能发送电子邮件

在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件,修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)

php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。

【6】初装的mysql如果没有设置密码,应该使用update mysql.user set password="yourpassword" where user="root" 修改密码

【7】header already sent

这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。!

【8】更改php.ini后没有变化

重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置。

【9】php在20xx上面安装(ISAPI的安装方法恳请高手指教)

PHP4的php4isapi.dll好像和20xx有些冲突,只能用CGI模式安装 步骤一,先www.php.net 下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。安装好以后,在默认网站-->应用程序配置。

步骤二:点击 web服务扩展 -->新建web服务扩展。

步骤三: 扩展名-->php,然后添加

步骤四:找到php.exe的路径添加上去。

步骤五: 确定就可以了!

步骤六: 选择php的服务扩展,然后点击允许。

【10】有时候sql语句不起作用,对数据库操作失败,最简便的调试方法,echo那句sql,看看变量的值能得到不。

【11】include和require的区别

两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出。

据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许*nux下情况不同,暂时还没测试。

如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据。

function r($file_name) {

$filenum=@fopen($file_name,"r");

@flock($filenum,LOCK_SH);

$file_data=@fread($filenum,filesize($file_name));

@fclose($filenum);

return $file_data;

}

function w($file_name,$data,$method="w"){

$filenum=@fopen($file_name,$method);

flock($filenum,LOCK_EX);

$file_data=fwrite($filenum,$data);

fclose($filenum);

return $file_data;

}

【12】isset()和empty()的区别

两者都是测试变量用的,但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。

如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示,如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。

要注销一个变量,可以用 unset($foo)或者$foo=NULL

【13】mysql查询语句包含有关键字

php查询mysql的时候,有时候mysql表名或者列名会有关键字,这时候查询会有错误。例如表名是order,查询时候会出错,简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,例如select * from `order`

【14】通过HTTP协议一次上传多个文件的方法

有两个思路,是同一个方法的两种实现。具体程序还需自己去设计。

1、在form中设置多个文件输入框,用数组命名他们的名字,如下: <form action="" method=post>

<input type=file name=usefile[]>

<input type=file name=usefile[]>

<input type=file name=usefile[]>

</form>

这样,在服务器端做以下测试:

echo "<pre>";

print_r($_FILES);

echo "</pre>";

2、在form中设置多个文件输入框,但名字不同,如下:

<form action="" method=post>

<input type=file name=usefile_a>

<input type=file name=usefile_b>

<input type=file name=usefile_c>

</form>

在服务器端做同样测试:

echo "<pre>";

print_r($_FILES);

echo "</pre>";

三、实习总结

通过本次实习,我对PHP设计编程有了大致了解,还知道了PHP的大致设计思路。虽然在实习中存在问题,但是在参考资料后得到了解决。

 

第二篇:PHP实习报告

1.入职第一天

入职第一天要求熟悉公司的开发环境,以及代码风格。

公司的开发环境是windoes+apache+mysql,开发工具是Eclipse+navicat。

原本以为如今公司开发都会在linux系统下,这才清楚开发环境全凭个人喜好以及熟悉程度。其实同样是做架构,同样是写代码,环境不重要。只是因为最后的服务器是linux系统,为了避免上线以后出问题,所以对常见的linux的特点要求熟悉。

Apache并不要求掌握多少,因为服务器维护有专职人员做,而且做的更专业更好,我们只是简单能使用就好。

Eclipse是一套很强大的IDE,有各种版本适合各种语言开发,如java、php等。其附带的功能强大而又方便,是大中型项目的开发利器。因为在大中型项目开发时,项目内部结构错乱复杂,各个文件之间存在个各种各样的依赖关系,这时候一个好的IDE可以省下很多使用notepad开发时的劳力。

Navicat是一套数据库管理工具,用它来连接mysql比命令行操作更方便,比phpmyadmin更快捷,因为C/S的系统有更快的响应速度以及处理速度。

代码风格是影响团队开发的一个很重要因素,这一点在我们后面进行开发的时候给我带来相当深刻的感触。

从简单的代码缩进、留白,到更深入的数据处理方式,处理环节,每个人都有自己的理解和想法,因为每个人都有自己的经验。

代码格式还好说,在公司见识到了很方便的代码美化工具,可以方便的转化为自己赏心悦目的格式。但是数据的处理方式、流程、环节,却是项目整合的关键。比如关键字过滤的处理,重复处理会影响效率,比如某显示值的变换,万万不能重复处理。所以在一开始就必须规定好入口参数、出口参数的格式,并且将数据处理流程规定好!即有一套精确的数据流图!

2.关于数据库架构——理论和实践

该单位的官网是由一个经验丰富的架构师、还有几个专职人员带领我们几个实习生一起做。在数据库架构的问题上我第一次感受到经验和书本的矛盾关系。

在看到该官网的数据库架构时,我不禁觉得其有问题。按着书上关于数据库范式的讲解,毫无疑问该网站的数据库存在数据冗余等诸多问题,难道这个架构师和这些工程师们不懂数据库范式?事实证明我猜对了一半,当我满怀疑惑提出数据库的问题后,才发现有一个工程师真的不清楚数据库范式是什么,甚至连这个概念都没听过。另外一个工程师带着我分析这个网站的用途和需求,并讲解了这样设计的优点和缺点,以及按着规范的范式要求去设计的优点个缺点。最终我了解到,数据库范式是一个规范,它在理想程度上解决了数据冗余,删除出错等诸多问题,但是当我们完全按着数据库范式去设计的时候就发现并没有想象中的好。因为有一些冗余或删除出错很可能一年才遇到一次,而且在人为提醒的状况下完全可以避免,但是为了避免冗余所耗费的劳力,所付出的代价却是相当巨大的。

3.关于注释

开发的时候被一再强调注释的重要性。并且就连注释的格式都规范的死死的。这就是团队开发。每一个文件都必须有文件注释,每一个函数都必须有功能注释以及参数注释,甚至就连每一个变量都必须有注释,必须清清楚楚标明用途,哪怕它的标识符很清楚表示它只是个password。

如今的开发语言都有其相应的自动生成API帮助文档的小软件,每一个软件都规定了注释的规范,以方便生成帮助文档,好在这些文档规范大致相同。刚开始很惊讶,因为注释

的内容居然能占一半,甚至更多,这在以前都未曾遇到。

4.如何解决问题

官网开发到一半遇到两个问题:一个是视频播放上传,再有一个就是自动绘制图表。 视频上传在土豆,优酷上屡见不鲜,可是真正到了自己开发的时候才发现并不像想象的那么容易。我只要一想到上传时网络状况、断点续传、视频格式这些技术问题,头就大了。自动图表就更不必说,根本不知道从哪里下手,更不能接受的是架构师经理和两个工程师居然也没遇到过类似问题。

当时我觉得这件事或许解决不了,因为项目已经分好时间,工期只有这么多,即便能解决怕也是要超工期。最后向上级反映一下改一下需求然后可能就不了了之了。事实证明了我的想法很愚蠢,因为经理根本就没向上反映,只是相当淡定地给了一句话:上网找找方法,肯定能实现。没想到真让经理说中了。

最后大家齐心合力,首先把问题分析,难关一个一个克服,经历了整夜守着谷歌翻译看帮助文档,经历了整夜手工输入连接下载flash接口,经理了整夜调试修改别人的代码??经历了一个又一个不眠之夜,工作居然提前完成了!

事后一次聚餐的时候大家说根本没想到这个可能实现,经理说:“类似的状况我之前就遇到很多回了。最开始也是想着该需求,后来才认识到,公司招人来是解决问题的,工作就要尽责!有需求就必须满足!即便满足不了也得尽全力去做。最重要的是:事情都是人做的,别人能做,自己为什么不能,即便不能自创,抄也可以抄来”。

实习心得:

1.关于公司的开发环境和代码规范

公司的环境和规范,都是长期以来根据实践经验慢慢总结出来的,很适合当前规模项目的开发,因此必须及时熟悉。这就如生产力和生产关系之间的联系,毫无疑问当前的生产关系是适应生产力的。

规范包括代码规范和架构规范,它制定了数据处理流程的规范,以及考虑因素。然而不同的项目对应不同的需求,应当考虑的因素也是不同的。比如一个普通公司的内网只允许内部员工访,这样的话对安全系数的要求就不高,但大流量大负载的状况就得多加考虑!换过来如果是一个机关部门的网站,问显然不会有大流量大负载的情况出现,因此在这上面便可以少考虑,而安全系数就是不得不考虑的致命因素!

2.关于理论和实践

最开始的数据库问题让我明白了书上的理论在面对实现中的硬伤时表现得是那么苍白,那更多的只是理论上的完美,而实际工作中是不存在完美的!

后来的代码实现工作让我认识到,即便是理论上掌握了,实践的话却不一定成功。且不说无数次调试后才能保证语句的正确,单单是逻辑错误出现的频率就几乎让人崩溃。原本在脑海中那么清晰地思路,到实现的时候才发现居然有那么多问题没想到!

公司实习这段时间我清楚了什么叫:纸上得来终觉浅,绝知此事要躬行!

3.注释——责任心的体现

在公司开发,最开始被迫写N多注释,到后期整合项目的时候才发现多亏有这些注释。它们使得我们可以很方便地回想起自己当时的想法,更使得我们可以毫无障碍地读懂别人的代码,以后即便是换了一批人员进行二次开发或者维护都会很方便。

注释,既是对自己作品的信心,也是对自己作品的负责!

4.公司招人是需要解决问题

官网遇到的两个问题最终被解决,我清楚地知道问题解决的每一个过程。从最开始的毫无头绪,到后来的稍有眉目,再到后来思路清晰,然后一步一步实现!经理那句话给我印象

很深刻:公司招人是要来解决问题的!我想我以后都不会轻易说不行了。

5.实习感受

通过本次实习,我基本了解了公司的开发流程,以及一些开发时的注意事项,同时也使自己的代码水平上升了一个层次。然而更多的收获在于了解到工作是什么样的状态,工作中的问题以及遇到问题怎么做。经过这次实习,工作于我不再是想象中的那个空洞的名词,我深深地感受到它的存在!深深地体会到它和学校的区别!

相关推荐