用PHP输出静态页面的两种方法

        用PHP输出静态页面的方法,就我所知道的,有2种,一种是利用模板技术,另一种是用ob系列函数。两种方法,看起来都差不多,但是实际上,却是不同的。

第一种:利用模板。目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。它们每一种模板,都有一个获取输出内容的函数。我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。

这里我用smarty做例子,说明如何生成静态页

<?php
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了
$fp = fopen("archives/2005/05/19/0001.Html", "w");
fwrite($fp, $content);
fclose($fp);
?>
第二种方法:利用ob系列的函数。这里用到的函数主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打开浏览器缓冲区的意思,打开缓冲后,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区,直到你使用了ob_end_flush().而这里最重要的一个函数,就是ob_get_contents(),这个函数的作用是获取缓冲区的内容,相当于上面的那个fetch(),道理一样的。代码:

<?php
ob_start();
echo "Hello World!";
$content = ob_get_contents();//取得php页面输出的全部内容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

把o-blog的编码转换为utf8的过程

        前几天我把我使用的o-blog转换为utf8了。现在我整理了一下资料,把转换的过程记录下来,与大家分享一下经验,希望o-blog的新版本中可以出现utf8版本。我现在使用 o-blog 的版本为2.6如果版本不对,请你下载2.6版本.
       在转换之前,我有必要提醒你一下,你必须要把所有的网页和数据库的内容备份一下,万一转换的过程失败,你也可以迅速恢复数据或者可以重新转换。
如果你备份好数据了,那我们开始吧。我转换的思想是:将所有的文本文件的编码改为utf8,再建立新的charset为utf8的数据库。
        首先,要把o-blog使用的所有文本文件的编码改为utf8,这里所说的文本文件包括o-blog所有的php和模板文件中的html、css文件。上网搜索了一下,可以选择的工具有UltraEdit和EditPlus。不过我使用的是EditPlus。将一个打开,再选择另保存为,再覆盖原来的文件就可以了。在此过程,可能有些文件的编码无法保存为utf8,可以先不管。   
      下面开始修改文件。
       打开 admin/class/mysql.php,找到下面的这一行
      mysql_select_db($dbname);
     在其前面加入以下代码:   
      if($this->version() > '4.1') {
   mysql_query("SET NAMES 'utf8'");
          mysql_query("SET CHARACTER_SET_CLIENT=utf8");
          mysql_query("SET CHARACTER_SET_RESULTS=utf8");
  } else        
if($this->version() > '5.0.1') {
      mysql_query("SET sql_mode=''");
}  
        使用EditPlus菜单“查找”下的“在文件中查找”对话框查找charset=gb2312,其中文件夹选择o-blog所在的目录,这样可以省很多的功夫.找到后把charset=gb2312替换为charset=utf-8.      
        其次要修改原来install.php文件
        把 TYPE=MyISAM 替换为 ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci。
        然后在你的空间中运行install.php,进行新的安装,如果你使用的数据库和原来的那个相同,我特别要提醒你,使用的表的前缀必须要和原来的不同,要不然会造成数据库里面原来的数据被覆盖。
       安装结束后你可以打开o-blog来看看页面上是否出现乱码,如果出现了乱码,你得查看你使用php文件和模板文件的编码是否为utf8. 如果显示的文字,还未算转换成功。由于o-blog里面使用的切割字符串函数并不是用来切割utf8字符集,在切割得出的字符串中最后一个汉字的编码很有可能不完全,这样在网页的源代码中看到的所有中文是乱码。下面要打开admin/functions.php查找 “cn_substr”函数,大概在272行,在其前面加入以下函数:
// 用来避免 utf8 乱码
function utf8_trim($str) {
    $len = strlen($str);
    for($i=strlen($str)-1;$i>=0;$i-=1){
        $hex .= ' '.ord($str[$i]);
        $ch   = ord($str[$i]);
        if(($ch & 128)==0)    return substr($str,0,$i);
        if(($ch & 192)==192)return substr($str,0,$i);
    }
    return($str.$hex);
}
前往 291 行,就会看到 return $s."...";
在前面一行加入调用utf8_trim的以下代码
$s = utf8_trim($s);
这样的做法存在冗余的代码,不过这样做是最为简单的,希望风色可以进行改进。
      按照网上的说法,还要修改函数htmlspecialchars,把原来的用法
      $s=htmlspecialchars($s);
      改为 $s = htmlspecialchars($s,ENT_QUOTES,"UTF-8");
      我修改了一部分就没有修改了,因为我发现blog已经没有乱码问题了,查看数据库里面的内容,挺很正常。所以我也不知道那个修改有没有用了,有兴趣的网友可以试试看。
不知道你们转换怎么样了呢?我的可以正常运行了。
       下面还有一个问题,怎么样把原来的数据导入到里面去。我想到了两个解决的方向。
第一、后台里面的数据的导入导出。导入的数据会转换为gb2312,这是与现在使用utf8冲突的,这就需要修改现在代码,把原来备份的数据导进去。我没有深入了解那部分的代码,所以我不知道怎么修改,解决了导入,还要解决导出的问题。
第二、在另外一个博客程序cblog中,有把o-blog转换为cblog的程序,可以把gb2312编码的数据转换为utf8并插入到现在使用的数据库里面去。可能修改一下代码就可以拿来用了。可是这部分我也没有研究,我的日志比较少,基本上已经手动输入到现在使用的博客里面去了。
        希望风色或者longbill研究一下,怎么处理好数据的导入导出这部分,更加希望拥有新版本的o-blog。
        如果文章中还有遗漏的地方,请提出来,我边修改边测试的,当时没有作记录,现在也是考记忆来写这篇文章了。
        我在写这篇文章的时候,longbill也处理好转换为utf8的问题了,呵呵,恭喜!

编写autorun病毒免疫工具

autorun病毒的危害相信中过招的人都有体会。其最大的特点就在于很难清除干净,现在可以提前对系统分区做一次免疫工作,而那些已经中了autorun病毒的用户也能顺便将病毒清除。  
    
有人曾经使用系统组策略的方法,不过对于初学者来说有点复杂。现在复制以下代码到文本文件中,保存为bat文件即可。
    @echo off
cls
echo          按 S 键删除Autorun.inf并进行免疫
echo.
echo          按 D 键删除免疫程序
echo.
echo          按其他任意键退出
echo.
echo.
SET Choice=
SET /P Choice=        请选择要进行的操作:  
IF /I ’%Choice:~0,1%’==’s’ GOTO setup
IF /I ’%Choice:~0,1%’==’d’ GOTO Delset
IF /I ’%Choice:~0,1%’==’q’ GOTO Exit
exit
:Setup
taskkill /im explorer.exe /f
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @(
    if exist %%a: (
        rd %%a:\autorun.inf /s /q
        del %%a:\autorun.inf /f /q
        mkdir %%a:\autorun.inf
        mkdir %%a:\autorun.inf\"病毒免疫勿删除../" 
        attrib +h +r +s %%a:\autorun.inf
        
    ) 
)
start explorer.exe
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist %%a:\nul (
    >1.vbs echo msgbox^ "%%a:免疫成功",64,"提示:"
    1.vbs
  )
)
del 1.vbs
echo.
echo.
echo                        按任意键退出...
pause>nul
exit
:delset
For %%a In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do @(
    If Exist %%a: (      
        rd %%a:\autorun.inf /s /q
                
    ) 
)
echo.
echo.
echo                        操作完毕,按任意键退出...
pause>nul
exit

    具体原理为通过检测autorun.inf和删除相应文件达到直接消灭病毒的目的。操作比较简单,只要按两个键就可以了。

U盘(auto病毒)类病毒分析与解决方案

一、U盘病毒简述: 
  U盘(自动运行)类病毒(auto病毒)近来非常常见,并且具有一定程度危害,它的机理是依赖Windows的自动运行功能,使得我们在点击打开磁盘的时候,自动执行相关的文件。目前我们使用U盘都十分频繁,当我们享受U盘所带来的方便时,U盘病毒也在悄悄利用系统的自动运行功能肆意传播,目前流行的U盘病毒文件大家甚至耳熟能详了,比如经常有网友问的SSS.EXE SXS.EXE如何查杀这类的,下面我们将对U盘病毒极其特性和防范办法进行分析总结。
  
二、特性分析:
  所谓的自动运行功能是指Windows系统一种方便特性,使当光盘、U盘插入到机器自动运行,而这种特性的实现就是通过磁盘跟目录下的 autorun.inf文件进行。这个文件保存在驱动器的根目录下(一般会是一个隐藏属性的系统文件),它保存着一些简单的命令,告知系统新插入的光盘或 U盘应该自动启动什么程序等。
  常见的Autorun.inf文件格式大致如下:
  [AutoRun]    //表示AutoRun部分开始,必须输入
  icon=C:\C.ico  //指定给C盘一个个性化的盘符图标C.ico
  open=C:\1.exe  //指定要运行程序的路径和名称,只要在此放入病毒程序就可自动运行;
  在Windows系统有允许和阻止自动运行的键值的方法:
  在注册表中找到如下键:
  键路径:[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Exploer]
  在右侧窗格中有 "NoDriveTypeAutoRun"这个键决定了是否执行Autorun功能.其中每一位代表一个设备,不同设备用以下数值表示:
  设备名称 第几位 值 设备用如下数值表示 设备名称含义
  DRIVE_UNKNOWN 0 1 01h 不能识别的类型设备
  DRIVE_NO_ROOT_DIR 1 0 02h 没有根目录的驱动器
  DRIVE_REMOVABLE 2 1 04h 可移动驱动器
  DRIVE_FIXED 3 0 08h 固定的驱动器
  DRIVE_REMOTE 4 1 10h 网络驱动器
  DRIVE_CDROM 5 0 20h 光驱
  DRIVE_RAMDISK 6 0 40h RAM磁盘
  其中: 保留 7 1 80h  未指定的驱动器类型
  以上值"0"表示设备运行,"1"表示设备不运行。
  从上面可以看出,对应的DRIVE_NO_ROOT_DIR、DRIVE_FIXED、DRIVE_CDROM、DRIVE_RAMDISK是可以自动运行的。所以要禁止硬盘自动运行AutoRun.inf文件,就必须将DRIVE_FIXED这些键的值设为1,由于DRIVE_FIXED代表固定的驱动 器(即硬盘)。如果仅想禁止软件光盘的AutoRun功能,但又保留对CD音频碟的自动播放能力,这时只需将“NoDriveTypeAutoRun”的键值改为:BD,00,00,00即可。
  U盘病毒就是利用这种系统特性,一般在感染后会修改系统的注册表,将显示所有文件的选项设置为禁止。甚至修改磁盘关联,杀毒软件一般会只把病毒文件清除,但对残余的文件不会处理。这也是常见的杀毒软件为什么常常无法清除干净,或者清除后双击无法打开磁盘的原因。
  
三、解决方案:
  1、使用超级巡警套装来全面解决U盘病毒问题(推荐!):
  ①超级巡警对U盘病毒检测进行了特别的处理,可以快速的监测和定位U盘病毒,并清除它们。
  ②超级巡警同时还提供对注册表关联修复和自动运行阻止的处理。
  2、手动解决办法:
  ①根据上面的原理,自己修改注册表禁止磁盘的自动运行特性。
  ②把文件夹选项中隐藏受保护的操作系统文件钩掉,选中显示所有文件和文件夹,点击确定。这样可以在感染病毒的移动存储设备中会看到几个文件(包括autorun.inf和病毒文件),删除后,病毒就清除了。

利用 hotspot shield 访问你想访问的站点

hotspot shield 是一个在访问 wi-fi 热点时让你处于匿名状态、保护你隐私的工具,它通过在你的计算机和无线路由间创建一个 VPN,可以将你在互联网上的所有活动自动加密并通过 wi-fi 进行传输。attachments/200710/4395408838.png
我们要关注的是,利用 hotspot shield,能够将我们的 ip 地址伪装成美国的,这样一来,很多由于
不可抗力因素不能访问的站点都能够轻轻松松的进行浏览了。相比@无&界@和@自&由#门@,它的速度还是比较快的,并且没有浏览器种类的限制。
另外,一些 web 2.0 站点在测试时的注册有国家限制,比如说只对美国和加拿大开放,通过 hotspot shield 现在你也可以很轻松的注册了。

XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件

XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件发布!

软件名称:XmiServer_v2.4.2
软件版本:v2.4.2
软件授权:免费软件
使用平台:WinNT/XP/2000/2003

下载地址
  1.  下载文件XmiServer_v2.4.2 ASP+CGI+PHP+JSP+MySQL 全能服务器套件.rar (0 Byte , 下载:285次)  (推荐!高速下载!)
  2. http://pickup.mofile.com/cn/index.do (MoFile) 请在左上角输入文件提取码: 6376342876538358  (有时效!!!)

简介:
XmiServer_v2.4是一款基于Apache+Tomcat的全能服务器套件,
拥有安装简单、便捷、绿色、免配置等特点,
可以快速搭建 ASP+CGI+PHP+JSP+MySQL 全能网站服务器平台,
方便您调试和开发ASP、CGI、PHP、JSP 等程序。

目录简要说明:
XmiServer
├─Links 各组件快捷链接
├─Server 程序主目录
│ ├─Apache Apache程序目录
│ ├─Database MySQL 数据库目录
│ │ ├─Database_MySQL5 MySQL5 数据库目录
│ │ └─Database_MySQL4 MySQL4 数据库目录
│ ├─JAVA JAVA程序目录
│ ├─MySQL4 MySQL4 程序目录
│ ├─MySQL5 MySQL5 程序目录
│ ├─PHP PHP程序目录
│ ├─phpMyAdmin phpMyAdmin目录
│ ├─TempLogs 临时文件及日志文件目录
│ ├─Tomcat Tomcat程序目录
│ └─Zend Zend Optimizer 程序目录
└─wwwRoot 虚拟主机网站根目录
├─asp ASP程序目录
├─cgi-bin CGI程序目录
└─webapps JSP程序目录

使用程序版本:
Apache v2.2.4
Tomcat v5.5.20
Netbox v2.8.4128
PHP v5.2.0
MySQL5 v5.0.27
MySQL4 v4.0
MiniPerl v5.8
JDK v1.5.0_07
Zend v3.2.0
phpMyAdmin v2.9.1.1