| ρεйg's profile简洁的想法PhotosBlogLists | Help |
|
|
2/14/2006 PHPMore Vol6《PHPMore》Vol6 终于在情人节发布了,祝More的编辑们节日快乐。 11/22/2005 自己编写的一个PHP单文件或多文件上传类看到网上有很多大虾写了PHP上传类,我综合了一下,写了一个自己喜欢的,提供出来给大家分享。附带了调用代码。
提醒: Form部分要注意,第一记得添加enctype="multipart/form-data",另外input的name=在上传多文件时要定义为数组,即:uploadinput[],如果只上传一个文件可以写为name="uploadinput"。 因为MSN Spaces中的Blog有字数限制,所以我把代码放在另一个Blog了,大家有兴趣可以点这里http://blog.neten.de/ 11/19/2005 火星文字下面这段代码(也就是某些人形容的火星文字)可以用来生成一个竖直方向可展开的菜单,兼容IE,Firefox,Oprea。写这段小小的代码,我可是走了不少弯路。 1,关于javascript: eval()函数在Firefox中居然不起作用,而且它对onclick()事件也不能很好支持。还好程序员都有共享精神,在网上我找到了一段讲述类似问题的代码,虽然不能直接解决我的问题,但毕竟知道问题出在onclick()和eval()函数上。接下来,调试了半天还是点不动菜单,我几乎要放弃了,后来,凭一点直觉,小改了一下代码,居然成功了。要点一个是event,一个是getElementById,大家可以看代码。 另外打开页面时加载的javascript函数也要特殊处理,一是调用函数的代码位置要在定义函数的代码位置之后,二是要用window.onload=function(){showsubmenu(0);}的形式调用,如果写window.onload=showsubmenu(0);是会没有反应的。 2,关于CSS: 我觉得自己不是一个完美主义者,但为了符合W3C的网页标准,我花了几乎是平时几倍的时间和精力在IE,Firefox,Oprea上调试,看看是不是有相同的显示效果。在CSS的leftnav类中,我开始定义了高度,也就是背景图片的高度。结果点开菜单的时候,在IE正常,在Firefox中展开的部分居然和下面的内容重合。后来在一个不起眼的网页上发现了这个heigh的定义是要不得的。此外我还添加了overflow:hidden;这样改动过后,在所有浏览器都OK了。 程序员也许就是这样在痛苦中长大的吧。 下面是代码,作为菜单的背景图片可以下载后放在images目录下。 图片名称:menuup.gif 图片名称:menudown.gif <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">10/1/2005 防止网页在刷新时重复提交做法是这样的,首先在SESSION会话中定义一个变量refresh,使它在每次加载网页时自增1.
提交表单时,加入参数$_SESSION[’refresh’]:
在处理表单的函数部分,加入一个条件,如果 $_GET[’refresh’]== $_SESSION[’refresh’] - 1,则继续。 这样在浏览器地址栏的refresh=后面的值在按刷新按钮的时候是不会变的,而加载一次网页 $_SESSION[’refresh’] 则会加1,在这种条件下,$_GET[’refresh’] 是不会等于 $_SESSION[’refresh’] - 1的,防刷功能成功实现。 7/17/2005 PHP 中的 addslashes 函数addslashes -- 字符串加入斜线。 语法: string addslashes(string str); 内容说明 本函数使需要让数据库处理的字符串中引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符 NUL (the null byte)。 1,表单提交中addslashes的表现。 <html><head><title>test</title></head> 输入:include('/home/me/myfile');
输出:1 A include(\'/home/me/myfile\'); B include('/home/me/myfile'); 总结:get_magic_quotes_gpc()等于1的情况下,如果不输入数据库,那你得到的结果是加了斜线的。 ================================================================ 2,提交输入数据库时addslashes的表现。 例子: <html><head><title>test</title></head> 输入:include('/home/me/myfile'); 输出:1 A include(\'/home/me/myfile\'); B include('/home/me/myfile'); 总结:get_magic_quotes_gpc()等于1的情况下,如果输入数据库后,再从数据库直接读取的时候,你不做任何修改就可以得到输入的字符串。 ================================================================
3, get_magic_quotes_gpc() function my_addslashes( $message ){
简单的解释就是,如果get_magic_quotes_gpc()等于 1 (服务器默认设置为 1 ),那我们的字符串是可以直接入库的,不修改。不然,我们才用addslashes函数。
================================================================
大家没有看错,我写了半天,就是告诉大家,addslashes() 一般是不起作用的。倒是在不连数据库的情况下,要用到stripslashes()函数,也就是把那讨厌的斜线去掉。 6/23/2005 多国语言的尴尬我正在开发一个多国语言的网站,理所当然的,我首选 utf-8 作编码,但结果让我大跌眼镜: 在网页中我要用到session,最好的解决方案当然是存在数据库里面。 当我把一大堆代码写好之后,保存为 utf-8 格式,然后运行,出错是少不了的,我一一耐心排除。到了最后,只剩下一个关于 session 的 Fehlermeldung,大喜,胜利就在眼前了,可是我仔细看了代码,在session_start();之前并没有半点输出,但却一直报错:Cannot send session cookie - headers already sent by... 我昏 最后,我建了一个空文件,只写入session_start();一个函数,保存为utf-8 格式,报错相同。保存为ANSI 格式,正常。 我百度,哈!和我一样的人还真不少,但没有解决方案。原来,编辑器在utf-8文档前加了一点点信息,方便打开时区分格式。这一点点信息恰巧就加在<?php 的前面,造成了输出。 昏啊 我只好把代码重新转换,欣喜的是,对欧洲来说,iso-8859-1 也是个不错的选择。 看来我对完美的追求在某种程度上是一厢情愿的 ======================== 6月25号新发现 ======================== Emeditor 很不错 5/9/2005 实现更方便的日志编辑编辑Blog的时候,可以通过下面的代码,实现更多的编辑选项。 用法是将红色代码拷贝到网页浏览器的地址栏,然后回车。简单吧。 javascript:if%20(navigator.userAgent.indexOf("MSIE")>0%20&&%20document.all.rtebox!=null)%20{EditBox.setToolbar("tbmode",true);EditBox.setToolbar("tbfontstyle",true);EditBox.setToolbar("tbfontsize",true);EditBox.setToolbar("tbcut",true);EditBox.setToolbar("tbcopy",true);EditBox.setToolbar("tbpaste",true);EditBox.setToolbar("tbbar1",true);EditBox.setToolbar("tbbar2",true);void(document.all.rtebox.style.height="400");void(document.all.EditBox.style.height="400")} 另一种方法是loadmemory提供用网站:http://www.siteexperts.com/blogging/editit.htm,网页上有详细的说明。大家一看就明白了。。。
|
|
|