October 24, 2007
CSS技巧DIV为空时占据空间的解决办法
"\u003cp\u003e如果给div元素设置了宽度时,比如width:100%,此时div在IE中(IE6,IE7)将占据物理空间,而在FF中不占据物理空间(正确理解)。为了表述直观,将样式直接写在元素标签内:\u003c/p\u003e\n\u003cp\u003e此时在IE中到底是什么在影响着最终的显示,又是如何解析的呢?\u003c/p\u003e\n\u003cp\u003e可能的影响因素:字体大小(font-size),字体行高(line-height),高度(height),溢出(overflow)\u003c/p\u003e\n\u003cp\u003e我们对上面的代码逐一添加过滤属性(具体的过程有兴趣的朋友,可以私下里实验一下,“自己动手,丰衣足食”!)\u003c/p\u003e\n\u003cp\u003e在测试的过程中,你会发现IE6和IE7的解析也不尽相同,比如在给div设置了line-height:0; height:0; 的样式后,IE7中显示正常了,不再占据物理空间了,而IE6却依然我行我素,亦或是悲!\u003c/p\u003e\n\u003cp\u003e最终的测试结果,最简单的方法是,给div设置高度(height)和溢出(overflow)属性:\u003c/p\u003e"
October 19, 2007
用PHP的ob_start();控制您的浏览器cache
"\u003cp\u003e Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 \u003ca href=\"/?tag=php\"\u003ePHP\u003c/a\u003e 代码的数据块有作用。\u003c/p\u003e\n\u003cp\u003e我们先举一个简单的例子,让大家对Output Control有一个大致的印象:\nExample 1.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eob_start(); //打开缓冲区\necho “Hellon”; //输出\nheader(“location:index.php”); //把浏览器重定向到index.php\nob_end_flush();//输出全部内容到浏览器\n?\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错。如果我们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:”Header had all ready send by”!但是加 …\u003c/p\u003e"
October 13, 2007
PHP让页面马上过期
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eheader(\u0026#34;Expires: \u0026#34;.gmdate(\u0026#34;D, d M Y H:i:s\u0026#34;,time()-1).\u0026#34; GMT\u0026#34;);\nheader(\u0026#34;Last-Modified: \u0026#34;.gmdate(\u0026#34;D, d M Y H:i:s\u0026#34;).\u0026#34; GMT\u0026#34;);\nheader(\u0026#34;Cache-Control: no-cache, must-revalidate\u0026#34;);\nheader(\u0026#34;Pragma: no-cache\u0026#34;);\n\u003c/code\u003e\u003c/pre\u003e"
October 12, 2007
利用ajax实现同步通信
"\u003cp\u003e1。创建ajax 对象, 可以用以下通用代码, 此代码适合各种浏览器\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003efunction newXMLHttpRequest()\n{\n var xmlreq = false;\n if (window.XMLHttpRequest)\n {\n xmlreq = new XMLHttpRequest();\n }\nelse\n { if (window.ActiveXObject)\n { try\n { xmlreq = new ActiveXObject(\u0026#34;Msxml2.XMLHTTP\u0026#34;);\n }\n catch (e1)\n {\n try\n {\n xmlreq = new ActiveXObject(\u0026#34;Microsoft.XMLHTTP\u0026#34;);\n }\n catch (e2)\n { }\n }\n }\n }\n return xmlreq;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e2。发送数据,ajax有2种方处理数据,同步和异步\u003c/p\u003e\n\u003cp\u003e同步:\u003c/p\u003e\n\u003cp\u003efunction get_xmlhttp()\u003c/p\u003e\n\u003cp\u003e{ var …\u003c/p\u003e"
September 27, 2007
unix 查找文件
"\u003cp\u003e 如果你用的是linux,首先可以考虑用locate方法,一般够用了,而且速度很快,当然在用这个命令之前要生成文件数据库[execute updatedb in console],下面的是关于find的用法,具有通用性,在unix下也可以用\n每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。\u003c/p\u003e\n\u003cp\u003e 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通 …\u003c/p\u003e"
September 27, 2007
freebsd6.2的gnome2桌面安装配置手记
"\u003cp\u003e1、安装\u003ca href=\"/?tag=freebsd\"\u003efreebsd\u003c/a\u003e6.2。\n这里我选择的是最小化安装。\u003c/p\u003e\n\u003cp\u003e2、安装xorg。\npkg_add -r xorg\u003c/p\u003e\n\u003cp\u003e3、安装gnome2。\npkg_add -r gnome2\u003c/p\u003e\n\u003cp\u003e4、生成、测试相关的配置文件\u003c/p\u003e\n\u003cp\u003eXorg -configure\n将生成xorg.conf.new文件在/root/目录下。\nXorg -configure /root/xorg.conf.new(6.2做这步时似乎必须加上/root/)\n这里测试下生成的配置文件,会出现1个布满小格子的大方框,并且应该有一个鼠标箭头。\n然后ctrl+alt+backspace返回文字符界面。\n然后编辑一下xorg.conf.new文件,然后拷贝至/etc/X11/xorg.conf\u003c/p\u003e\n\u003cp\u003e5、配置窗口管理器\n在/etc/rc.conf里加入gdm_enable=”YES”\n然后重新启动,就可以自动进入GUI界面了。\u003c/p\u003e"
September 27, 2007
在FreeBsd中安装ports
"\u003cp\u003e在\u003ca href=\"/?tag=freebsd\"\u003eFreeBsd\u003c/a\u003e中安装ports\n一.首先进入要安装的port的目录\n#cd /usr/ports/www/apache22\n二.执行make命令进行编译\n#make\n会出现一些提示信息,一旦编译完,就会回到命令行,下一步是安装port,只要在make后面添加一个单词install即可.\n三.安装port\n#make install\n会出现一些提示信息,完毕后会回到提示符,您就可以运行您安装的程序了\n四.清除安装时产生的一些临时信息:\n#make clean\n清理工作目录是个好注意,这个目录中包含了全部在编译过程中用到的临时文件,这些文件不公会占用宝贵的磁盘空间,而且可能给升级port时带来麻烦.\u003c/p\u003e\n\u003cp\u003e至此,安装ports的步骤基本已经完成.\u003c/p\u003e\n\u003cp\u003e注:以上三个命令make,make install,make clean可以使用组合命令make install clean来代替.\u003c/p\u003e"
September 25, 2007
ADODB中GetOne($sql)与GetRow($sql)的区别
"\u003cp\u003e**GetOne($sql)**Executes the SQL and returns the first field of the first row as an array. The recordset and remaining rows are discarded for you automatically. If an error occur, false is returned. 执行SQL指令,并且以阵列的方式回传第一笔记录的第一个栏位。资料集及其余的记录将会被自动清除,如果发生错误,就回传 false 值。译者注:这个功能在验证某笔记录在不在特别有用,可以减少系统记忆体及资源的用量。\u003c/p\u003e\n\u003cp\u003e**GetRow($sql)**执行SQL指令,并且以阵列的方式回传第一笔记录。资料集及其馀的记录将会被自动清除,如果发生错误,就回传 false 值。其中GetOne($sql)为了检测某一条记录是否存在时,特别有用,(如,用户在注册前,可以检测用户名是否已经被占用,比较适合GetOne($ql)).如果此时需要除检测该记录是否存在,并保存该记录的信息,就要用 …\u003c/p\u003e"
September 19, 2007
修改MySQL的默认密码
"\u003cp\u003e对于windows平台来说安装完mysql后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_install_db脚本来生成帐户和相应权限许可表。\u003c/p\u003e\n\u003cp\u003e但是如果不是用MSI格式来安装MySQL的话,就需要在安装完以后,手动给 root帐户添加新密码,因为默认情况下的root没有开启密码保护功能,如果不重新赋予root帐户密码,那么许多非本机的连接将 无法成功。具体更新密码步骤如下:\u003c/p\u003e\n\u003cp\u003ec:\u0026gt;mysql -u root\u003c/p\u003e\n\u003cp\u003emysql\u0026gt;set passWord for ‘root’@’localhost’=password(‘newpasswd’);\u003c/p\u003e\n\u003cp\u003emysql\u0026gt;set password for ‘root’@’%’=password(‘newpasswd’); //本条可选\u003c/p\u003e\n\u003cp\u003e通过以上设置,root的密码将变为newpasswd这样就完成了根用户root密码的设置工作。\u003c/p\u003e"
September 18, 2007
php上传大文件注意事项
"\u003cp\u003e 最近用php传大文件的时候,总是传不上,起始只是看了一下php.ini里的max_post_size的值,默认是8M,一直没有搞清楚到底是怎么回事,后来在一篇文章上看到还有一个upload_max_filesize 参数,这时才明白怎么回事,结果把默认的2M改成8M,重新上传,结果ok,上传成功了!\u003c/p\u003e\n\u003cp\u003e 以下是常见的一些上传附件时的一些问题,大家可以参考一下:\u003c/p\u003e\n\u003cp\u003e用php上传文件,问题最多的就是上传大体积文件时出现错误。\n这就涉及到php的配置文件:php.ini\u003c/p\u003e\n\u003cp\u003e在此配置文件中,有这么几个值是跟文件上传有密切关系的:\nfile_uploads = on //是否允许系统支持文件上传\n;upload_tmp_dir //临时文件的存储路径,linux下为系统默认路径,win32下需要指定\nupload_max_filesize = 2m //允许文件上传最大体积\u003c/p\u003e\n\u003cp\u003epost_max_size = 2m //通过post方法给php时,php所能接受的最大数据容量\u003c/p\u003e\n\u003cp\u003e如果你上传的文件体积在8m一下(通常情况),那修改以上设置就可以满足你的要求了。。\u003c/p\u003e\n\u003cp\u003e但要 \u0026gt;8m,那除了上面几 …\u003c/p\u003e"
September 17, 2007
Smarty中类的继承
"\u003cp\u003e\u003cstrong\u003eExtended Setup\u003c/strong\u003e\nThis is a continuation of the basic installation, please read that first!\nA slightly more flexible way to setup Smarty is to extend the class and initialize your Smarty environment. So instead of re-\npeatedly setting directory paths, assigning the same vars, etc., we can do that in one place. Lets create a new directory /\nphp/includes/guestbook/ and make a new file called setup.php. In our example environment, /php/includes is in\nour include_path. Be sure you set this up too, or …\u003c/p\u003e"
September 15, 2007
PHP fsockopen 简单抓取网页内容
"\u003cp\u003e 这几天在做采集的东东,\u003ca href=\"/?tag=php\"\u003ephp\u003c/a\u003e提供了很多访问远程计算机内容的方法,文件系统的函数些都支持读取远程文件,而fsockopen是争对于socket接口的编程函数,在网上搜了一下发现用这个函数来读取http内容也比较多,但是没有一个比较完善和适合我的,在某个小偷程序上改改,轻而易举的完善fsockopen请求http协议内容,从而获取请求内容.代码如下:\u003c/p\u003e\n\u003cp\u003efunction get_page_content($url){\u003c/p\u003e\n\u003cp\u003e$url = eregi_replace(‘^http://’, ”, $url);\u003c/p\u003e\n\u003cp\u003e$temp = explode(‘/’, $url);\u003c/p\u003e\n\u003cp\u003e$host = array_shift($temp);\u003c/p\u003e\n\u003cp\u003e$path = ‘/’.implode(‘/’, $temp);\u003c/p\u003e\n\u003cp\u003e$temp = explode(‘:’, $host);\u003c/p\u003e\n\u003cp\u003e$host = $temp[0];\u003c/p\u003e\n\u003cp\u003e$port = isset($temp\u003ca href=\"/?tag=php\"\u003e1\u003c/a\u003e) ? $temp\u003ca href=\"/?tag=php\"\u003e1\u003c/a\u003e : 80;\u003c/p\u003e\n\u003cp\u003e$fp = @fsockopen($host, $port, \u0026amp;$errno, \u0026amp;$errstr, 30);\u003c/p\u003e\n\u003cp\u003eif …\u003c/p\u003e"
September 15, 2007
用PHP写mail时的注意事项
"\u003cp\u003e今天看书,看到mail函数,就自己练着写了个简单的程序。\u003c/p\u003e\n\u003cp\u003e要注意的一点是,mail函数的使用,需要在php.ini里边配置。\n[mail function]\n; For Win32 only.\nSMTP = localhost\nsmtp_port = 25\u003c/p\u003e\n\u003cp\u003e; For Win32 only.\n;sendmail_from = \u003ca href=\"mailto:[email protected]\"\[email protected]\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e配置后\n[mail function]\n; For Win32 only.\nSMTP = smtp.tom.com //指定你的邮箱smtp\nsmtp_port = 25\u003c/p\u003e\n\u003cp\u003e; For Win32 only.\nsendmail_from = \u003ca href=\"mailto:[email protected]\"\[email protected]\u003c/a\u003e //你所使用的邮箱\u003c/p\u003e\n\u003cp\u003e配置好后要记得重启apache啊!\u003c/p\u003e\n\u003cp\u003e不过真是怪了,在单位写的就发送成功了,在家写一样一样的就没成功,大家来看看~~\u003c/p\u003e"
August 31, 2007
在windows2003系统里的administrator账号禁用后的解决方法
"\u003cp\u003e在windows2003里!administrator账号禁用了,如何启用此账户呢,就只有这一个用户的,其实方法很简单的,我们可能通过重新启动服务器,按下F8键,在出现的dos菜单时,我们选择进入到安全模式下,用原来的用户名和密码登陆(在安全模式下被禁用的账户可以照常登陆的)。我们进去后,把账户重新启用即可。\u003c/p\u003e"
August 31, 2007
LINUX下加载U盘的方法
"\u003cp\u003e 首先,进入 ROOT 方式(指当前用户采用非root用户登陆时):\n 敲击命令 su root\n 成功后\n 显示 PASSWORD: 这时应该键入 用户 root 的登陆密码.\u003c/p\u003e\n\u003cp\u003e 第二步,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令:\n md /mnt/usb\n 成功后进行下一步。\u003c/p\u003e\n\u003cp\u003e 第三步, 载入 u 盘,需键入以下命令:\n mount /dev/sda1 /mnt/usb\n 成功后,即可使用 u 盘了\n u 盘里的文件 就在目录 /mnt/usb 下。\u003c/p\u003e\n\u003cp\u003e 第四步,卸载u盘\n 在使用完u盘后,在拔出前需要先键入卸载U盘命令\n 命令如下:\n umount /mnt/usb\u003c/p\u003e"