1.在启用会话时,经常会出现这样的提示:

1 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\xampp\htdocs\php\test\html\includes\header.html:1) in D:\xampp\htdocs\php\test\html\includes\header.html on line 2
2 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\xampp\htdocs\php\test\html\includes\header.html:1) in D:\xampp\htdocs\php\test\html\includes\header.html on line 2

(当然,文件路径和文件名可能会不同,但提示的本意是相同的,也就是说在发送会话前,已经有东西发送到浏览器中了)
原因:启用会话,要求在会话开启前,不能有任何内容发送到浏览器。但是在记事本中,似乎在启用会话前,没有什么内容啊!
如果在记事本中使用ANSI来保存文件,不会有什么问题。也就是说,如果是英文网页,没有问题。
但是如果使用utf-8来保存文件,则会在文件头上输入一个“锘?”字,但记事本是看不出来的。可以使用UltraEdit来查看。在UltraEdit中,编辑文件,去掉这个“锘?”字,再保存即可。即Utf-8 无BOM格式。
2.使用中文时,不能保存为ANSI格式,否则会显示乱码,此时应保存为utf-8 无BOM格式。
如果出现上述第1个问题,则在UltraEdit编辑器中去掉这个“锘?”字即可。
此外,还可以在EditPlus中打开这个文件,选择“文档——文件编码方式——更改文件编码方式”,在出现的“编码方式”对话框中选择“utf-8”即可。(注意)
或者,选择Zend Studio,打开这个文件,选择“Eidt-Set Encoding”,在“Set Encoding”中选择“Default(GBK)”此时,在文件头会显示“锘?”,去掉该字后,再保存,即可。
3.在头文件中,设置下面的行中的语言:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

一般不会对中文有什么影响。(中文lang=”chs”)
但下面这行:

<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

会对中文产生影响,即charset属性应设置成charset=gb2312,否则会是乱码。
或者,保存为utf-8 有BOM的格式,但此时会话功能会出错。
或者,不设置charset属性,而是由浏览器自行处置。
4.综上,虽然说记事本可以作为PHP的编辑器来开发网页,但在处理中文时,还是会遇到问题。因为要在网页上正确显示中文,不能将其保存为ANSI文件,而只能保存为大字符文件,此时记事本会隐藏地在文件头中加上一行。因此,会引发会话问题或其它问题。
5.因此,开发中文网页时,最好使用其它的编辑器。
(1)使用EditPlus时,保存时直接选择中文编码方式。
(2)使用UltraEdit时,选将文件保存为UTF-8-无BOM格式,然后再输入代码。
(3)使用Zend时,必须在头文件中包括字符集:

<meta http-equiv="content-type" content="text/html;charset=gb2312" />

或者:

charset=gbk。

解决乱码问题的总结
1.编码要保持一致,即服务器数据库编码、PHP文件编码与网页编码三者要一致,否则会出现乱码
2.可以在PHP数据库连接代码中插入代码,例如:

mysql_query("set names 'gb2312'");

将提取的数据库数据转换为gb2312码。
3.在网页头文件中,插入设置中文字符集的代码,例如:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

4.如果还不行,则在代码文件开头,放置下面的代码:

header("Content-Type: text/html; charset=gb2312");

使网页以指定的编码呈现。
当然,上面是以gb2312为例,如果是utf8,则作相应的修改。
5.最后,还是有乱码,则重头开始吧,这是因为如果数据库中已有数据,那么所作的修改一般是无效的。这可能是在本机上调试很好,但传到服务器中后,出现了乱码,而怎么也解决不成功的情形。在服务器中按指定的编码重新创建表,然后重新上传代码文件,重新插入数据进行测试。

由于时间紧,此文有点乱,请谅解。

posted @ 2010-05-24 13:24 fanjy 阅读(252) 评论(1) 编辑

使用COM,可以在PHP中控制Excel。下面通过一个简单的示例来演示PHP如何与Excel相交互(示例中有详细的注释):

 1 <?php
 2     //指定页面编码,防止出现中文乱码的情形
 3     header('Content-type: text/html; charset=gb2312');
 4  
 5     //启动Excel
 6     $ms_excel=new COM("excel.application") or die("不能打开Excel应用程序");
 7  
 8     //在网页中显示当前的Excel版本
 9     echo "Excel版本:{$ms_excel->Version}\n";
10  
11     //新建一个工作簿
12     $ms_excel->Application->Workbooks->Add() or die("不能添加新工作簿");
13  
14     //在工作簿的工作表Sheet1中单元格A1中输入文本
15     $ms_excel->Worksheets("Sheet1")->Range("A1")->Value="测试";
16  
17     //保存工作簿,如果没有指定路径,则默认保存在我的文档中
18     $ms_excel->Workbooks(1)->SaveAs("php_excel_test.xls");
19  
20     //关闭工作簿
21     $ms_excel->Quit();
22  
23     //清空对象
24     $ms_excel=null;
25 ?>

在htdocs文件夹中将该文件保存为“excelsample.php”。打开浏览器,在地址栏中输入:

http://localhost/excelsample.php

此时,将会在页面中显示当前的Excel版本,同时创建名为php_excel_test.xls的工作簿并在工作表Sheet1单元格A1中输入“测试”。
打开工作簿php_excel_test.xls,在单元格A1中将会看到已经输入了“测试”。
注:为防止出现乱码,在代码开始设置了编码格式,同时在保存文件时选择保存为gb2312格式。

posted @ 2010-04-29 08:06 fanjy 阅读(525) 评论(1) 编辑

一般进行网站开发时,都是在本机上进行开发和调试,功能和界面都符合要求后,再上传到服务器。因此,首先要在本地构建PHP+MySQL的开发环境。
这里,首先推荐使用XAMPP,其官方网站为:

http://www.xampp.org或http://www.apachefriends.org/zh_cn/xampp.html

正如其网站上的介绍:XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版。XAMPP 的确非常容易安装和使用:只需下载,解压缩,启动即可。
按照网站上的提示,下载最新版本。对于Windows来说,其最新版本为1.7.3版。
例如,我将其解压缩到D盘,其文件夹默认为xampp。启动控制面板,如下图所示。

确保Apache和MySql模板运行。
将自已开发的网站代码文件保存到xampp文件夹的htdocs目录中。例如,下图中的mylibrary文件夹,为正在开发的图书管理系统代码所放置的文件夹。

打开浏览器,输入:

http://localhost/mylibrary/library/index.php

即可看到代码在网页中的效果。
另一个推荐的集成工具是AppServ,是一个PHP环境的集成软件,它集成了APACHE,MYSQL,PHP,PHPMYADMIN于一体。安装简单方便,不用过多的设置。同上,在其官网上下载最新版本:

http://www.appservnetwork.com/

安装完成后,将开发的网站文件放置在其目录下的www文件夹中,然后在浏览器中输入:

http://localhost/<路径>

即可看到本地开发的网页效果。
编码工具
无需专门的编辑环境,可以使用记事本来编辑代码,方便简单,但容易出错,且不方便调试,更重要的是,保存中文时,它往往会自动保存为BOM格式,也就是说,它会在文件头中加入一些隐藏的字符。正是这些字符,使得在一些情况下,会导致网站出现问题。(以后会详细讲解出现的问题及解决方法)
首推使用Zend Studio,强大的集成开发环境,方便易用。
其次是可以代替记事本使用的简易文本编辑器EditPlus,特别是针对PHP的Editplus4PHP。
还有一款较好的文本编辑器UltraEdit,其中有一个选项可以用来检测utf-8文件,从而可以看到记事本中隐藏的字符,将其去除。

posted @ 2010-04-20 14:03 fanjy 阅读(210) 评论(0) 编辑

自已很喜欢学习,只要是感兴趣的东西,条件一具备,就想学,并且想马上就能掌握,成为自已的一项技能。在追求知识和技能的过程中,使自已深刻地体会到,好书的重要性。毫不夸张地说,在学习任何知识时,如果有一本能够引领自已入门并不断深入的图书,一定能够起到事半功倍的效果。
下面是我在学习PHP开发时,觉得非常不错的书,与大家分享。如果大家还有什么好书的话,也可以推荐。让我们共享这些优秀的资源,尽快提升自已的Web开发技能。

英文书名:《PHP and MySQL for Dynamic Web Sites(Second Edition)》
中文书名:《PHP与MySQL基础教程(第2版)》
Larry Ullman著 陈宗斌 等译
绝对值得一读的PHP开发图书,特别是想学PHP但不得要领的人。这本书通过实用的示例程序,详细剖析了初学PHP开发的人员应该了解的方方面面以及思路,很容易理解,看完之后,基本上就拥有开发简单PHP网站的能力了。
本书已推出第3版,并已经由人民邮电出版社出版。

英文书名:《Practical PHP and MySQL Building Eight Dynamic Web Applications》
中文书名:《PHP+MySQL八大动态Web应用实战》
Jono Bacon著 吴连河 李剑 译

书如其名,通过实现在现实网站中常见的功能作为例子,演示如何通过PHP开发Web应用。在书中,作者反复提倡实践,在实践中学习,在实践中提高,这确实是金玉良言。

英文书名:《Beginning CSS Web Development》
中文书名:《CSS基础教程》
Simon Collison 著 刘志忠 等译
非常优秀的CSS读物,首先逐一讲解了CSS的核心要素,然后讲述布局和模板的实现。浅显易懂,重点突出,篇幅得当,非常适合希望了解和熟悉CSS的读者细心阅读。

posted @ 2010-04-19 14:04 fanjy 阅读(203) 评论(0) 编辑
很喜欢Excel,尤其是使用VBA开发Excel功能,因此开了好几个博客,在上面分享自已的所学所得,也自得其乐。后来,总觉得免费得来的博客不好使,要不就是发表文章受限制,要不就是自定义功能有限,经常遇到贴子和附件无法发表的情况,影响自已的心情,也影响自已写作的灵感。再后来,干脆自已注册了域名购买了空间,搭建起了真正属于自已的博客——完美Excel
在搭建“完美Excel”的过程中,我知道了WordPress,了解其便利性、强大的开源支持和不断发展的功能,于是就使用了WordPress。进一步,我又知道了PHP脚本语言和MySQL数据库。初步接触后,才知道它们也是比较简单易学,并且功能强大,但苦于一直没有时间研究。终于,前不久,为了完善分部网站的功能,也就是要开发出一套分部图书管理系统,使用PHP+MySQL搭设,才开始边学习边进行网站的功能开发。利用空闲的时间,经过近一个月,网站的基本功能都已实现,剩下的就是完善了。
在这个过程中,我觉得PHP确实比较容易学习,也比较容易上手,再加上MySQL的配合,在短时间内就能够开发出简单实用的站点。当然,要想掌握并精通PHP+MySQL,开发出安全可靠、功能丰富、界面设计优美的网站,还需要坚持不懈地逐步深入学习和实践。
在这个过程中,自已感觉到越来越喜欢PHP,也开始着迷于Web开发的研究,并且也学习了很多PHP和Web开发的基础知识。为了更深入地研究这方面的知识,与Excel一样,我将其纳入到自已的个人基本知识库中,以后将继续加强研究和实践。
在这里,我将自已这段时间学习实践PHP+MySQL的知识进行初步整理,以《PHP+MySQL开发基础分享》为系列的标题,辑录于此,一是总结前阶段的所学,为下阶段的进一步学习和开发实践整理思路;二是方便以后查阅参考,同时也给喜欢PHP+MySQL的朋友提供借鉴和参考。
下一阶段,自已将会适当作些调整,除继续在学习过程中巩固已有的学习成果,开发并完善图书管理系统,及时分享经验外,重新再回到Excel中来。
[一点感受] 在学习过程中,我愈加觉得实践的重要性,无论多么基础的知识,你都要付诸实践,这样才能更深刻地体会到知识的内涵,也能通过在实践中发生的错误并找出原因来达到真正理解基础知识巩固基础知识的目的。
例如,PHP的语法很简单,很容易入门,MySQL的基本查询语句也很容易理解,在看书学习时,觉得自已都看懂了,也似乎都能理解了。然而,一上机操作,就发现会不经意见造成许多错误,要么是引号的问题、要么是没加上空格,等等。
并且,拿着别人的程序来架构站点,觉得很方便,一旦自已从头开始架构站点,虽然是很基本的东西,看起来相当容易实现的功能,也需要花很多时间来组织、编写代码、调试和修改。
在做这些的过程中,会遇到很多问题,甚至是莫名其妙的问题(例如有时明明什么都正确,但仍出错),此时,不气馁,认真查找和分析,从而解决问题,这是一个进步的过程,也是知识积累的过程。
posted @ 2010-04-15 13:46 fanjy 阅读(43) 评论(0) 编辑
摘要: 最近正在利用空闲时间为分部开发一套图书管理系统,主要使用PHP+MySQL开发,使用CSS进行页面设计布局。下面是自已很少的一点心得,留存于此,也与大家分享。学好一种语言后,转到另一种语言,很快,很方便。我之前潜心研究过Excel及VBA,虽不深入和透彻,但对其也算是略为熟悉。转而使用PHP后,觉得很快就能上手了,参考书上的很多知识都能够较好地理解。PHP是一种好的网络编程脚本语言,容易学习,很灵...阅读全文
posted @ 2010-03-30 11:42 fanjy 阅读(521) 评论(0) 编辑