这段时间学习php的总结
Monday, March 31st, 2008刚开始学php,虽然还是不断的查手册,不过学习还是比较快的,而且是一边学习一边做项目,以前一直用asp写程序,我是尽量是MVC模式写的,所以转到php也是这样这样写。我学php是这样开始的,公司有一个人才招聘的项目,已经在进行之中,是用FLEAPHP框架作为基础的,为了开发的方便我一开始就使用FLEAPHP来写项目,在看源代码的基础上结合PHP手册就已经开始写了,碰到的问题有很多:
连接符号,在asp我是用jscript写的,连接的符号是用“+”,但是php里面连接符是“.”,开始的时候不适应,写完后一大推错误。
编码问题,到现在我还没有完全解决,程序用的是UTF-8,遍历文件目录得到的文件名是GBK的,要转成UTF-8才能存入数据库,用iconv函数转,据说不能用在linux服务器上,手头上没有 linux所以不能验证是不是真的。
文件下载问题,用php实现文件的强制下载,我估计也是编码的原因,用FLEAPHP自带的SendFile类一直不能成功,最后自己另外写个小程序搞好的。
不知道是什么问题在IIS环境下,FLEAPHP的fileupload类不能上传文件,我估计这和权限有关,在APMServ下就可以。
还有很多很多的问题,可能是我不太熟吧,要比别人花更多的时间去解决。
用FleaPhp做开发
Thursday, February 21st, 2008刚开始接触Fleaphp这个php框架,看了一下,发现挺容易入手的,而且同事也正在用这个做开发,大家统一一下也挺好的,这段时间公司发生了很多事,由于某些原因,又要做一下开发了,项目不太,刚好可以用fleaphp练习一下。
看了几天教程,有了大概的了解,项目暂地还没有一下正式的名称,所以我起了个代号,最近kira很受欢迎,所以项目我起名叫Project Kira,show一下暂定的目录结构:
开发的工具,包括自家hp笔记本一台、APMServ运行环境、MySql5、Zend Studio 5.5、Firefox、还有IE7,暂时还没到网页的调试,不需要多个浏览器测试,这样随时想到就可以做了,不过最好就是有网络啦,租的地方只有一户有宽带,还是电信512M三、四个人分,速度不敢恭维,正在托朋友找2M 300个小时的,才120块,加上电话停机5块钱,才125块。
在开发上遇到的问题,以后会在这里和大家分享一下。
vista下搭建php+mysql环境
Friday, January 25th, 2008本本不能装xp,而且觉得vista挺好用了,为了调试程序方便所以配置了个php+mysql的环境,因为vista的安全关系apache始终不能运行,在网上找了很多文章还是不能配置成功,最后试用了APMServ一次过就可以了,简单说说方法,下载解压后直接右击以管理员身份运行程序目录下的APMServ.exe,注意:程序文件夹不能有中文,最好就是放在根目录下就可以了。这样就能打开程序控制面版,点启动APMServe即可开启,如果端口被占用直接在右边改端口就可以了。
下载地址:
[中国电信①] http://apmserv.s135.com/apmserv/down.php?ver=5.2.0&net=ct
[中国网通①] http://apmserv.s135.com/apmserv/down.php?ver=5.2.0&net=cnc
[中国教育网] http://apmserv.s135.com/apmserv/down.php?ver=5.2.0&net=cernet
简介:
APMServ 5.2.0 是一款拥有图形界面的快速搭建Apache 2.2.3、PHP 5.2.0、MySQL 5.0.27&4.0.26、SQLite、ZendOptimizer、OpenSSL、phpMyAdmin、SQLiteManager,以及ASP、CGI、Perl网站服务器平台的绿色软件。无需安装,具有灵活的移动性,将其拷贝到其它目录、分区或别的电脑时,均只需点击APMServ.exe中的启动按钮,即可自动进行相关设置,将Apache和MySQL安装为系统服务并启动。APMServ集合了Apache稳定安全的优点,并拥有跟IIS一样便捷的图形管理界面,同时支持MySQL 5.0 & 4.0两个版本,虚拟主机、虚拟目录、端口更改、SMTP、上传大小限制、自动全局变量、SSL证书制作、缓存性能优化等设置,只需鼠标一点即可完成。
1、注意事项:APMServ程序所在路径不能含有汉字和空格。
2、MySQL默认用户名:root,密码为空
3、MySQL数据库文件存放目录:MySQL5.0\data或MySQL4.0\data
4、网站根目录[HTML,PHP]www\htdocs [ASP]www\asp [CGI,Perl]www\cgi-bin
5、访问本机请用http://127.0.0.1/或https://127.0.0.1/ (如果开启SSL)
6、非默认端口,网址为http://127.0.0.1:端口/或https://127.0.0.1:端口/
7、APMServ集成了以下软件:
Apache 2.2.3 [HTTP服务器]
NetBox 2.8 Build 4128 [HTTP服务器+ASP脚本解释引擎]
PHP 5.2.0 [PHP脚本解释引擎]
MiniPerl 5.8 [Perl脚本解释器]
MySQL 5.0.27 [MySQL数据库服务器]
MySQL 4.0.26 [MySQL数据库服务器]
SQLite 3.3.8 [SQLite数据库服务器]
phpMyAdmin 2.9.1.1 [MySQL数据库在线管理工具]
SQLiteManager 1.2.0 [SQLite数据库在线管理工具]
ZendOptimizer 3.2.0 [PHP脚本加速引擎]
OpenSSL 0.9.8d [HTTPS(SSL)安全传输协议]
CSS 书写顺序建议
Friday, November 30th, 2007来自Mozilla的CSS书写规范建议:
//显示属性
display
list-style
position
float
clear
//自身属性
width
height
margin
padding
border
background
//文本属性
color
font
text-decoration
text-align
vertical-align
white-space
other text
content
浏览器 Hack:
test:791px!important; /*FF Hack*/
*test:785px!important; /*IE7 Hack*/
test:777px; /*IE7以下*/
CSS 属性表 (简表)
Thursday, September 13th, 2007属性名称 属性含义 属性值
字体属性(Font)
font-family 使用什么字体 所有的字体
font-style 字体是否斜体 Normal、italic、oblique
font-variant 是否用小体大写 Normal、small-caps
font-weight 字体的粗细 Normal、bold、bolder、lithter等
font-size 字体的大小 Absolute-size、relative-size、length、percentage等
颜色和背景属性
Color 定义前景色 颜色
Background-color 定义背景色 颜色
Background-image 定义背景图案 路径
Background-repeat 重复方式 Repeat-x、repeat-y、no-repeat
Background-attachment 设置滚动 Scroll、Fixed
Background-position 初始位置 Percentage、length、top、left、right、bottom等
文本属性
Word-spacing 单词之间的间距 Normal <length>
Letter-spacing 字母之间的间距 Normal <length>
Text-decoration 文字的装饰样式 None|underline|overline|line-through|blink
Vertical-align 垂直方向的位置 Baseline|sub|super|top|text-top|middle|bottom|text-bottom
Text-transform 文本转换 Capitalize|uppercase|lowercase|none
Text-align 对齐方式 Left|right|center|justify
Text-indent 首行的缩进方式 <length>|<percentage>
Line-height 文本的行高 Normal|<number>|<length>|<percentage>
边距属性
Margin-top 顶端边距 Length|percentage|auto
Margin-right 右侧边距 Length|percentage|auto
Margin-bottom 底端边距 Length|percentage|auto
Margin-left 左侧边距 Length|percentage|auto
填充距属性
Padding-top 顶端填充距 Length|percentage
Padding-right 右侧填充距 Length|percentage
Padding-bottom 底端填充距 Length|percentage
Padding-left 左侧填充距 Length|percentage
边框属性
Border-top-width 顶端边框宽度 Thin|medium|thick|length
Border-right-width 右侧边框宽度 Thin|medium|thick|length
Border-bottom-width 底端边框宽度 Thin|medium|thick|length
Border-left-width 左侧边框宽度 Thin|medium|thick|length
Border-width 一次定义宽度 Thin|medium|thick|length
Border-color 设置边框颜色 Color
Border-style 设置边框样式 None|dotted|dash|solid等
Border-top 一次定义顶端 Border-top-width|color等
Border-right 一次定义右侧 Border-top-width|color等
Border-bottom 一次定义底端 Border-top-width|color等
Border-left 一次定义左侧 Border-top-width|color等
Width 定义宽度属性 Length|percentage|auto
Height 定义高度属性 Length|auto
Float 文字环绕 Left|right|none
Clear 哪一边环绕 Left|right|none|both
分级属性
Display 定义是否显示 Block、inline、list-item、none
White-space 怎样处理空白 Normal、pre、nowrap
List-style-type 加项目编号 Disc、circle、square等
List-style-image 加图案 <url>|none
List-style-position 第二行起始位置 Inside、outside
List-style 一次定义列表 <keyword>|<position>|<url>
鼠标 ( Cursor ) 属性
Auto 自动
Crosshair 定位“十”字
Default 默认指针
Hand 手形
Move 移动
e-resize 箭头朝右方
Ne-resize 箭头朝右上方
Nw-resize 箭头朝左上方
n-resize 箭头朝上方
Se-resize 箭头朝右下方
Sw-resize 箭头朝左下方
s-resize 箭头朝下方
w-resize 箭头朝左方
Text 文本“I”形
Wait 等待
Help 帮助
背景层自适应高度
Wednesday, September 12th, 20071
<div style=”overflow:hidden; _height:1%; border:1px#333 solid; width:600px; margin:auto;”>
<div style=”width:300px; float:left; height:100px; background:#f60;”></div>
<div style=”width:300px; float:left; height:300px; background:#ccc;”></div>
</div>
2
<div class=”m clear”>
<div>左</div>
<div>右</div>
</div>
.clear:after {
content: “.”;
display: block;
height: 0;
clear: both;
visibility: hidden;
}
关于after可以参考:http://www.blueidea.com/tech/web/2005/3065.asp
IE6.0、IE7.0 与FireFox CSS兼容的解决方法
Wednesday, July 4th, 20071.DOCTYPE 影响 CSS 处理
2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行
3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中
4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width
5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式
6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以
8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。
9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法: div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样: div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;
11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义 ul{margin:0;padding:0;}就能解决大部分问题
注意事项:
1、float的div一定要闭合。
例如:(其中floatA、floatB的属性已经设置为float:left;) <#div id=”floatA” ></#div>
<#div id=”floatB” ></#div>
<#div id=”NOTfloatC” ></#div>这里的NOTfloatC并不希望继续平移,而是希望往下排。
这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。
在 <#div class=”floatB”></#div>
<#div class=”NOTfloatC”></#div>之间加上 <#div class=”clear”></#div>这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。
并且将clear这种样式定义为为如下即可: .clear{
clear:both;}此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;
当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。
例如某一个wrapper如下定义: .colwrapper{
overflow:hidden;
zoom:1;
margin:5px auto;}
2、margin加倍的问题
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;
例如:
<#div id=”imfloat”></#div>
相应的css为
#IamFloat{
float:left;
margin:5px;/*IE下理解为10px*/
display:inline;/*IE下再理解为5px*/}
3、关于容器的包涵关系
很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。在IE中,外层的宽度会被内层更宽的div挤破。一定要用Photoshop或者Firework量取像素级的精度。
4、关于高度的问题
如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事)
5、最狠的手段 - !important;
如果实在没有办法解决一些细节问题,可以用这个方法.FF对于”!important”会自动优先解析,然而IE则会忽略.如下 .tabd1{
background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/
background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过
IE7.0出来了,对CSS的支持又有新问题。浏览器多了,网页兼容性更差了,疲于奔命的还是我们 ,为解决IE7.0的兼容问题,找来了下面这篇文章:
现在我大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没按要求显示!搜索了一下,找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。
现在写一个CSS可以这样:
#example { color: #333; } /* Moz */
* html #example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7 */
那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999.
ie6不能设背景图片最小高度的bug
Wednesday, June 27th, 2007刚刚遇到一个问题,在设定一个div的背景图片的时候不能设定最小高度,只是在ie6下才有这个问题,在ie7和ff下都没有这个问题,无论我设多高都好,背景图片总是在repeat,开始以为是repeat的问题,设了 background-repeat: no-repeat; ,但还是不行,最后只有Google.com了,不过网上好像没有相关的问题,难道是我的问题。问了朋友才知道,原来是font-size的问题,只要把font-size设小一点就行了,以后遇到图片高度很小的时候,记得要把font-size设小一点,不然背景就会一直repeat。
梁紫丹&唐笑@广州正佳广场
Monday, October 23rd, 2006梁紫丹&唐笑两个我都不太认识,不过受人所托做了两个视频上来,第一次使用Premiere做视频,第一次成功了,梁紫丹那个是直接出avi然后用软件转rm的,唐笑的是用Premiere直接出rmvb的,效果差不多,不过直接出rmvb方便一点。
梁紫丹 http://www.isorange.com/vedioplayer.asp?url=movftp/suter20061022.rm
唐笑 http://www.isorange.com/vedioplayer.asp?url=movftp/tangxiao20061023.rmvb
安全设置 IIS 中的权限
Saturday, June 3rd, 2006虽然 Apache 的名声可能比 IIS 好,但我相信用 IIS 来做 Web 服务器的人一定也不少。说实话,我觉得 IIS 还是不错的,尤其是 Windows 2003 的 IIS 6(马上 Longhorn Server 的 IIS 7 也就要来了,相信会更好),性能和稳定性都相当不错。但是我发现许多用 IIS 的人不太会设置 Web 服务器的权限,因此,出现漏洞被人黑掉也就不足为奇了。但我们不应该把这归咎于 IIS 的不安全。如果对站点的每个目录都配以正确的权限,出现漏洞被人黑掉的机会还是很小的(Web 应用程序本身有问题和通过其它方式入侵黑掉服务器的除外)。下面是我在配置过程中总结的一些经验,希望对大家有所帮助。
IIS Web 服务器的权限设置有两个地方,一个是 NTFS 文件系统本身的权限设置,另一个是 IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上。这两个地方是密切相关的。下面我会以实例的方式来讲解如何设置权限。
IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上有:
读取
写入
浏览
记录访问
索引资源
6 个选项。这 6 个选项中,“记录访问”和“索引资源”跟安全性关系不大,一般都设置。但是如果前面四个权限都没有设置的话,这两个权限也没有必要设置。在设置权限时,记住这个规则即可,后面的例子中不再特别说明这两个权限的设置。
另外在这 6 个选项下面的执行权限下拉列表中还有:
无
纯脚本
纯脚本和可执行程序
3 个选项。
而网站目录如果在 NTFS 分区(推荐用这种)的话,还需要对 NTFS 分区上的这个目录设置相应权限,许多地方都介绍设置 everyone 的权限,实际上这是不好的,其实只要设置好 Internet 来宾帐号(IUSR_xxxxxxx)或 IIS_WPG 组的帐号权限就可以了。如果是设置 ASP、PHP 程序的目录权限,那么设置 Internet 来宾帐号的权限,而对于 ASP.NET 程序,则需要设置 IIS_WPG 组的帐号权限。在后面提到 NTFS 权限设置时会明确指出,没有明确指出的都是指设置 IIS 属性面板上的权限。
例1 —— ASP、PHP、ASP.NET 程序所在目录的权限设置:
如果这些程序是要执行的,那么需要设置“读取”权限,并且设置执行权限为“纯脚本”。不要设置“写入”和“脚本资源访问”,更不要设置执行权限为“纯脚本和可执行程序”。NTFS 权限中不要给 IIS_WPG 用户组和 Internet 来宾帐号设置写和修改权限。如果有一些特殊的配置文件(而且配置文件本身也是 ASP、PHP 程序),则需要给这些特定的文件配置 NTFS 权限中的 Internet 来宾帐号(ASP.NET 程序是 IIS_WPG 组)的写权限,而不要配置 IIS 属性面板中的“写入”权限。
IIS 面板中的“写入”权限实际上是对 HTTP PUT 指令的处理,对于普通网站,一般情况下这个权限是不打开的。
IIS 面板中的“脚本资源访问”不是指可以执行脚本的权限,而是指可以访问源代码的权限,如果同时又打开“写入”权限的话,那么就非常危险了。
执行权限中“纯脚本和可执行程序”权限可以执行任意程序,包括 exe 可执行程序,如果目录同时有“写入”权限的话,那么就很容易被人上传并执行木马程序了。
对于 ASP.NET 程序的目录,许多人喜欢在文件系统中设置成 Web 共享,实际上这是没有必要的。只需要在 IIS 中保证该目录为一个应用程序即可。如果所在目录在 IIS 中不是一个应用程序目录,只需要在其属性->目录面板中应用程序设置部分点创建就可以了。Web 共享会给其更多权限,可能会造成不安全因素。
例2 —— 上传目录的权限设置:
用户的网站上可能会设置一个或几个目录允许上传文件,上传的方式一般是通过 ASP、PHP、ASP.NET 等程序来完成。这时需要注意,一定要将上传目录的执行权限设为“无”,这样即使上传了 ASP、PHP 等脚本程序或者 exe 程序,也不会在用户浏览器里就触发执行。
同样,如果不需要用户用 PUT 指令上传,那么不要打开该上传目录的“写入”权限。而应该设置 NTFS 权限中的 Internet 来宾帐号(ASP.NET 程序的上传目录是 IIS_WPG 组)的写权限。
如果下载时,是通过程序读取文件内容然后再转发给用户的话,那么连“读取”权限也不要设置。这样可以保证用户上传的文件只能被程序中已授权的用户所下载。而不是知道文件存放目录的用户所下载。“浏览”权限也不要打开,除非你就是希望用户可以浏览你的上传目录,并可以选择自己想要下载的东西。
例3 —— Access 数据库所在目录的权限设置:
许多 IIS 用户常常采用将 Access 数据库改名(改为 asp 或者 aspx 后缀等)或者放在发布目录之外的方法来避免浏览者下载它们的 Access 数据库。而实际上,这是不必要的。其实只需要将 Access 所在目录(或者该文件)的“读取”、“写入”权限都去掉就可以防止被人下载或篡改了。你不必担心这样你的程序会无法读取和写入你的 Access 数据库。你的程序需要的是 NTFS 上 Internet 来宾帐号或 IIS_WPG 组帐号的权限,你只要将这些用户的权限设置为可读可写就完全可以保证你的程序能够正确运行了。
例4 —— 其它目录的权限设置:
你的网站下可能还有纯图片目录、纯 html 模版目录、纯客户端 js 文件目录或者样式表目录等,这些目录只需要设置“读取”权限即可,执行权限设成“无”即可。其它权限一概不需要设置。
好了,我想上面的几个例子已经包含了大部分情况下的权限设置,其它情况根据这些例子,我想你一定可以想到该如何设置了吧。
转自:http://www.coolcode.cn/?p=176
作者andot
