以下转载自(http://hi.baidu.com/lueson/blog/item/200215018b500109728da529.html)

虽然不知道原创作者是谁了,超级感谢这位大仙,要不是他,恐怕我硬盘的数据会很麻烦。

-----------------------------------------------------------------------------------------

硬盘变动态的数据恢复,常见原因有重新安装操作系统,导致原本联机状态的动态分区,变成不可用的状态了,还有就是从基本磁盘转换成动态磁盘,比较容易也不丢失数据,但是要转换回来,在windows下就转不回来了,本文将介绍这两种情况的恢复方法。

有的朋友在升级硬盘的时候,老硬盘,有时会挂在电脑上做从盘,从盘初始化的时候有的初始化成动态磁盘,或者本来是基本磁盘,在好奇心的驱使下,转换成动态磁盘了,当你以后在拿这个动态磁盘挂在别的机器上用,就直接不能用了,或者在你重新装系统后,这个从盘直接就是动态外部的,不是联机状态。转动态磁盘容易,半分钟就完事了,动态转回基本磁盘,就不那么简单了。但是也用不了几分钟,方法有很多种,在这里介绍个和本站自己恢复《系统分区结构恢复修复数据恢复法》中恢复动态分区,稍微麻烦那么一点点的方法。但是那个是直接用软件,这个可是软件和手工恢复结合着用的哦,不信就往下看。

重装系统前第二块盘的状态,动态磁盘,联机,5个分区。

重装系统后,进入系统看到,原来的动态磁盘变成,外部了,分区全部不见了。
下面介绍恢复的方法,首先我们用分区表医生去重建分区表,但是当打开分区表医生,选了这个盘以后,工具栏竟然全部变成灰色不可用的状态,这个家伙,看到是动态分区,就吓的不敢动它了。
我们下面利用Winhex来帮帮这个家伙的忙。首先打开动态磁盘。
看到动态磁盘的0扇区,看下面红色框住的数字,那是动态分区的标志。我们只要把它改改,分区表医生就不会怕了。
我们这里把0扇区偏移量00000001C2的42改成07,改好以后,点击文件,保存。
然后打开分区表医生,这家伙,现在工具栏不是灰色了,好了。直接点重建分区表,自动,交互随便选一个。自动,软件智能做出选择
交互,会列出所有搜索到的分区信息,然后根据以前分区情况手动做出选择。
确认分区结构以后,直接点击保存。

前几天看到迅雷动漫主页上的幻灯片很有趣,抓下来研究一下。
全部代码下载
如有不妥请告知。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>动漫频道 - 迅雷看看</TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<style>
* {
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
HTML {
BACKGROUND: #ffffff
}
BODY {
FONT: 12px/20px Arial, Verdana, Lucida, Helvetica, simsun, sans-serif; COLOR: #313131
}
A {
COLOR: #016a9f; TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
img {border:0px;}
.kk-catalog .rbgx .content {
HEIGHT: 363px
}
.kk-catalog .kanguo .content {
HEIGHT: 363px
}
.kk-catalog .qqdy .content {
HEIGHT: 310px
}
.kk-catalog .rank .content {
HEIGHT: 310px
}
.kk-index .flash-box {
PADDING-BOTTOM: 5px; PADDING-LEFT: 9px; WIDTH: 450px; PADDING-RIGHT: 9px; MARGIN-BOTTOM: 8px; BACKGROUND: url(../img/flashBg.png) no-repeat 0px 0px; HEIGHT: 251px; OVERFLOW: hidden; PADDING-TOP: 5px
}
.kk-index .flash-box H2 {
LINE-HEIGHT: 20px; WIDTH: 448px; MARGIN-BOTTOM: 1px; HEIGHT: 20px; COLOR: #193b5f; FONT-SIZE: 13px
}
.kk-index .flash-box .big-pic {
WIDTH: 366px; FLOAT: left; HEIGHT: 188px; OVERFLOW: hidden; MARGIN-RIGHT: 2px
}
.kk-index .flash-box .big-pic IMG {
BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; WIDTH: 364px; DISPLAY: block; HEIGHT: 186px; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #fff 1px solid
}
.kk-index .flash-box .pic-list {
POSITION: relative; WIDTH: 81px; FLOAT: left; HEIGHT: 188px
}
.kk-index .flash-box .pic-list .pre {
POSITION: absolute; WIDTH: 81px; BACKGROUND: url(http://misc.web.xunlei.com/www_5_1/img/sprite.png) no-repeat; HEIGHT: 11px; TOP: 0px; LEFT: 0px
}
.kk-index .flash-box .pic-list .next {
POSITION: absolute; WIDTH: 81px; BACKGROUND: url(http://misc.web.xunlei.com/www_5_1/img/sprite.png) no-repeat; HEIGHT: 11px; TOP: 0px; LEFT: 0px
}

linux下有sync, windows下也有类似的软件,就是cwRsync,此软件分为服务器端/客户端。
目前能找到的最新的版本是4.0.1。下载地址:cwRsync下载

主服务器:A 192.168.0.10

从服务器:B 192.168.0.20

 

1、主服务器A安装

主服务器A安装cwRsyncServer_4.0.1_Installer.zip,server 包括了 client 的功能。

安装完后,会在 系统服务 中增加 RsyncServer 和 ssh 服务,进入服务管理,设置为自动启动。安装成功后,要备份的文件目录必须加上 SvcwRsync 这个用户可读权限。

2、主服务器A配置

进入cwRsync安装目录,配置 rsyncd.conf 如下。

程序代码:

port = 9999 #默认端口是873,做了端口限制的要开启cwRsync所使用的端口。

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log #LOG

pid file = rsyncd.pid

# Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

#

[web]

path = /cygdrive/d/web/test #注意格式,这说明是D盘WEB目录下的test目录

read only = true #只读

list = no

auth users = username  #指定用户名, 如果没有这行,则表明是匿名

secrets file=/cygdrive/d/rsyncd.secrets  这里指定了认证文件目录,名字叫 rsyncd.secrets,其内容是txt编辑为 username:123456 前面是用户名,后面是密码

transfer logging = no #是否记录详细的传输情况

rsyncd.conf相关解释:

use chroot = no        # 不使用chroot

max connections = 4    # 最大连接数为4

pid file = /cygdrive/d/rsyncd.pid

lock file = /cygdrive/d/rsync.lock

log file = /cygdrive/d/log/rsyncd.log    # 日志记录文件

[web]            # 这里是认证的模块名 client端需要根据此名字进行同步

path = /cygdrive/d/web/test    # 需要做镜像的目录

comment = BACKUP CLIENT IS SOLARIS 8 E250

ignore errors           # 可以忽略一些无关的IO错误

read only = yes         # 只读

list = no               # 不允许列文件

hosts allow=192.168.0.20         #允许连接IP,不限制则填写 *

auth users = username      # 认证的用户名,如果没有这行,则表明是匿名

secrets file = /cygdrive/d/rsyncd.secrets    # 认证文件名

IT行业日新月异,每年的技术和应用热点都会有所不同,导致IT培训和认证热点也不断变化。热门认证,意味着市场份额的优势,也意味着最容易得到用人单位的认可。

那么,哪些IT认证是最热门的呢?日前,美国权威IT认证杂志CERTMag针对中国市场推出“2008年度最热门的10大IT国际认证排行榜”,这是该杂志对国际IT认证在中国受欢迎度的首次排名。据了解,此次调查采访200多名IT专家,包括行业领袖、从业人员、人事经理、培训师、考试中心的专家和媒体。

我们邀请文华学院执行院长高骏来分析这张排行榜,希望对读者的选择有所帮助。

第1名:RHCE——Red Hat认证工程师
RHCE(RedHat认证工程师)是Linux业界首选的技术认证。RHCE认证考试基于Red Hat企业级Linux平台,证书持有者可以对运行操作系统的服务器进行网络服务和安全配置。该认证适合对操作系统感兴趣,欲在网络管理及网络安全相关行业发展的人士。

含金量点评:开源系统是未来的IT主流发展方向,而Linux操作系统恰是整个开源系统的基石。在Linux市场中,RHCE不仅因为它的市场地位,更因为它严格的考试系统和优异的培训质量,得到众多IT从业者和人力资源经理的认可。

走势预测:目前这个领域尚没有竞争对手能够对Red Hat认证提出挑战。作为整个开源系统的基础性认证,今后几年中,RHCE认证将继续保持在中国快速增长的势头。

第2名:SCJP——Sun认证Java软件工程师

SCJP是SUN公司国际认证的Java程序员,是目前全球最受重视、最受欢迎的程序员资格认证之一。SCJP是所有Sun Java认证的基础,对应的学习课程为SL-275,这门课程适合所有对学习Java技术感兴趣和有志于加入IT行业的人员。

含金量点评:目前Java已成为企业开发市场占有率最高的程序语言,这无疑使Sun公司主导的Java认证需求随之水涨船高。此外,根据Sun公司的规定,要获得更高层次的Java认证,之前必须先获得SCJP认证;甚至IBM、JBoss等公司的认证也要求考生先参加SCJP认证。可见该认证的公信力。

走势预测:考虑到中国软件开发行业持续的高速增长,以及每年大量大学生和软件职业培训学生涌入就业市场,预计今后,SCJP认证的市场需求依然高涨,会继续保持良好的发展势头。

第3名:OCP——Oracle认证专家
作为全球最大的数据库厂商,Oracle在行业中有着不容置疑的地位,因此Oracle认证一直被认为是最高等级的IT认证。Oracle 认证专家(OCP)是专家级技能及技术知识考试,参加对象为应用程序开发员和数据库管理员。

含金量点评:目前,全球有超过35万名Oracle认证专家。Oracle数据库的OCP(Oracle认证专家)认证一直是大家传说中获得高薪水的几大认证之一。不管这种传说是真是假,电信、银行、交通等行业对OCP求贤若渴以至高薪聘请却是不争的事实。

走势预测:随着9i认证的和11g认证的推出,新一轮的Oracle认证需求又将出现。据悉,Oracle新任中国区总经理对近几年OCP认证人数有所不满,认为没能很好地满足中国市场的需求。因此,Oracle的培训部门可能对现行的政策作一定的调整,预计这将导致久受压抑的认证需求集中爆发。

第4名:CCNA——Cisco认证网络管理员
Cisco认证是思科公司的证书体系,CCNA认证属于Cisco售后工程师认证体系的入门认证,也是Cisco各项认证中级别最低的技术认证。CCNA认证表示经过认证的人员具有为小型办公室/庭办公室(SOHO)市场联网的基本技术和相关知识。

这里介绍三种限制方式

1、限制局域网内每个用户的连接数为50

iptables -I FORWARD -p tcp -m connlimit --connlimit-above 50 -j REJECT

2、限制指定局域网用户XXX.XXX.XXX.XXX的连接数为50 (这里的XXX.XXX.XXX.XXX改成大家要限制的用户的IP)

iptables -I FORWARD -p tcp -s XXX.XXX.XXX.XXX -m connlimit --connlimit-above 50 -j REJECT

这里举个例子,比如要限制192.168.1.2这个用户的连接数为50

iptables -I FORWARD -p tcp -s 192.168.1.2 -m connlimit --connlimit-above 50 -j REJECT

3、限制除用户XXX.XXX.XXX.XXX以外的IP连接数为50 (也就是除了XXX.XXX.XXX.XXX用户不限制其它的都限,这个好吧,可以给自己开特权^_^)

iptables -I FORWARD -p tcp -s !XXX.XXX.XXX.XXX -m connlimit --connlimit-above 50 -j REJECT

这里也举个例子,比如要除了不限制192.168.1.2外,限制其它所有用户的连接数为50

iptables -I FORWARD -p tcp -s !192.168.1.2 -m connlimit --connlimit-above 50 -j REJECT

转载自http://blog.163.com/yangyi_402/blog/static/12937571320099452934146/

感谢博主ydows

----------------------------------------

鄙人对采用CULV系列处理器的轻薄本本心仪已久,终于忍不住在国庆当日从沃尔玛以4599元的价格吃进华硕UL30系列笔记本一台。(感觉挺划算的,中关村9月底对该本本的报价要4999元,而我所在的福州IT产品价格一般要比中关村报价高)该笔记本型号为UL30KU23A,属于该系列中最低端的一款,其搭配的正是我们今天评测的主角——SU2300处理器。(华硕的UL30系列还有搭配SU7300、SU3500等处理器)由于该处理器刚刚推出,搭配该处理器的机型在市场上也难得一见,因此当前主流IT媒体还未对SU2300进行一番详细评测。鄙人不才,抢先对SU2300做个简要评测,以期让大家对它有个初步的认识。不过事先声明:本次评测较为简单,仅在Windows xp sp3系统中测试了SU2300在CineBench R10、Super Pi、PC Mark05中的表现以及跟部分CULV处理器、主流中低端处理器作了对比,大家要更深入全面客观的了解它的性能还是要等到主流IT媒体对它的评测。此外本次测试中用以比较的评测数据除了SU2300由本人亲自测得外,其余数据皆来源于第三方(具体来源会在下面的评测中标明),因此其参考价值有待各位看官自己掂量。

在评测之前先介绍一下该本本的基本情况:该本本的配置很大众,除了搭配SU2300处理器外,其芯片组为英特尔的 GS45,显卡是GMA 4500MHD,内存单根2GB DDR3 1066(该本本还预留一个内存插槽方便升级),硬盘为250GB SATA/5400rpm/8MB。

附一份culv处理器参数对比列表:

                                            超低电压处理器参数列表

处理器名称

SU9400

SU3500

SU2700

SU2300

核心架构

Penyn

Penyn

Penyn

Penyn

核心数量

双核

单核

单核

双核

主频

1.4GHz

1.4GHz

1.3GHz

1.2GHz

前端总线

800MHz

800MHz

800MHz

800MHz

二级缓存

3MB

3MB

2MB

1MB

支持指令集

x86,x86-64,MMX,SSE,

SSE2,SSE3,

SSSE3,SSE4.1

x86,x86-64,MMX,SSE,

SSE2,SSE3,

SSSE3,SSE4.1

x86,x86-64,MMX,SSE,

SSE2,SSE3,

SSSE3

x86,x86-64,MMX,SSE,

SSE2,SSE3,

SSSE3

 

介绍完该本本的基本情况后让我献上国庆期间对SU2300的所做的简要评测(不知道这是不是第一份对SU2300的评测,激动中……)评测中请大家特别关注一下SU2300与SU3500的表现,据说SU2300的官方千颗单价为134美元而目前主流的SU3500单价为262美元。在价格差了近一倍的情况下双核SU2300与单核SU3500间的性能差距到底有多大,SU2300的性价比到底如何,这些疑问在下面的评测中将会初见端倪。

首先出场的评测软件是CineBench R10。CineBench使用针对电影电视行业开发的Cinema 4D特效软件引擎,可以测试CPU和显卡的性能。测试包括两项,分别针对处理器和显卡的性能指标。第一项测试纯粹使用CPU渲染一张高精度的3D场景画面,在单处理器单线程下只运行一次,如果系统有多个处理器核心或支持多线程,则第一次只使用一个线程,第二次运行使用全部处理器核心和线程。第二项测试则针对显卡的OpenGL性能。在该测试中SU2300的单核成绩为1288分,双核为2425分,值得注意的是单核的SU3500得分仅为1516分,成绩上不仅落后于双核的SU2300,即使和SU2300其中的一个核心比起来也不过领先约18%。具体测试结果见下表:

 622904123461533697[1]

(注:以上测试数据除SU2300为自己测得外,其余数据皆来源于中关村在线)

 

看过SU2300在CineBench R10中的表现,我们再请出大名鼎鼎的Super Pi,看看SU2300的计算表现。由于Super Pi对多核心并不敏感,在测评中SU3500单核的主频优势得以体现,在进行1M计算中其以36.422秒的成绩领先于SU2300的42.453秒。

 5387994004197009702[1]

(注:以上数据除SU2300为自己测得外,其余数据来源于《微型计算机》十月上期)

最后来谈一谈SU2300在PC MARK05中的表现,它的得分为3155分,而SU3500仅有2147分,SU2300的领先幅度达32%。联想到两者之间价格上的差距以及前面的测试我们可以得出一个初步的结论是:SU2300较之SU3500是一款极具性价比的处理器。当然,由于评测条件的限制以及自身评测能力的不足,更为严谨的结论还是各位通过自身的实践去得出吧。文章末了给各位提个醒,虽然CPU-Z 1.52版将SU2300标为Celeron系列处理器,但在本本机身上可是贴着Pentium的标签,具体原因鄙人不得而知,不过与同为Pentium系列的SU2700拥有2M二级缓存相比,SU2300的二级缓存只有1M,就产品规格而言确实应归属于Celeron系列。关于SU2300的评测就暂到这里,欢迎大家来补充、修正我的结论。

忽然想尝试着去申请个百度广告条,在填写网站描述的时候,竟然2了吧唧的写上感谢万能的Google,恐怕就算符合条件也难通过吧。

和去kfc说来一个麦辣鸡翅一样,还跟营业员描述了半天电视广告上的那个,人家没说是踢场子的就不错了。

关于session的问题集锦解决方案

1.
错误提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解决办法
这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。

2.
错误提示
Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session_save_path = c:\temp
session.cookie_path = c:\temp
然后在c:\目录下建立一个temp目录,即可

3.
错误提示
Warning: Trying to destroy uninitialized session in
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。

4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。

5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。

6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
答:最简单的方法是
session_start();
if(!session_registered('login') ││ $login != true) {
echo "你没有登陆";
exit;
}

7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
<?
session_start();
$ok = 'love you';
session_register('ok');
header("location : next.php");
?>

next.php
<?
session_start();
echo $ok;
?>

解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。

8.session如何传数组
session_register('data');
$data=array(1,2,3,4);

方法是先注册后赋值

9.问题9:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?

回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
<?php
session_start();
$username = 'stangly.wrong';
session_register('username');

echo $HTTP_SESSION_VARS['username'];
echo '<br>';
echo $_SESSION['username'];
?>
请参照此例程修改符合您自己的程序。

问题10:session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用$HTTP_SESSION_VARS或$_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。
而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来访问session.(译自于php.net)

例程:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}

转载。

POP协议简介

本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了使用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。

现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行交流,各大网站也几乎都推出了自己的基于WEB的免费邮件系统。在本文里,笔者将介绍一些Email实现的一些原理。同时我们假设你对于PHP的编程有一定的基础,对于TCP/IP协议也有一定的了解。

POP 协议简介
POP的全称是 Post Office Protoco ,即邮局协议,用于电子邮件的接收,现在常 用的是第三版 ,简称为 POP3。通过POP协议,客户机登录到服务器上后,可以对自己的邮件进行删除,或是下载到本地,下载后,电子邮件客户软件就可以在本地对邮件进行修改、删除等。另外一种用于接收信件的邮件是 IMAP 协议,现在发展很快,在本文中,我们暂不讨论。

POP服务器一般使用的是TCP的110号端口,如果你用的是Foxmail的话,在其收邮件的时候,你可以看到其信息提示窗口有这么一些命令:

“正在连接到 62.123.23.123:110";

"USER BOSS_CH";

"PASS..............";

下面让我们来看一段 与 POP3 服务器对话的实录:

telenet pop.china.com 110

+OK AIMC POP service (mail2.china.com) is ready.

USER boss_ch

+OK Please enter password for user .

PASS ******

+OK boss_ch has 1 messages (750 octets)

STAT

+OK 1 750

LIST

+OK 1 messages (750 octets)

1 750

RETR 1

+OK 750 octets

Received: from smtp2.ptt.js.cn([202.102.24.37]) by china.com(JetMail 2.5.3.0)

with SMTP id jm4839cc4227; Sat, 23 Sep 2000 05:31:21 -0000

Received: from chenjunqing ([61.155.120.6]) by smtp2.ptt.js.cn

(Netscape Messaging Server 4.15) with SMTP id G1BRHJ03.V07 for

; Sat, 23 Sep 2000 13:34:31 +0800

Date: Sat, 23 Sep 2000 13:34:18 +0800

From: =?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?=

To: boss_ch@china.com

Subject: =?ISO-8859-1?Q?=D3=CA=BC=FE=CA=BE=C0=FD?=

X-mailer: FoxMail 3.1 [cn]

Mime-Version: 1.0

Content-Type: text/plain; charset="GB2312"

Content-Transfer-Encoding: 8bit

Message-ID:

您好!

这是一个邮件的小示例

QUIT

+OK Pop server at signing off.

以下对几个常用的POP3命令作一个简单的介绍 :

命令    参数    状态    描述

------------------------------------------

USER    username  认可    此命令与下面的pass命令若成功,将导致状态转换

PASS    password  认可

APOP    Name,Digest 认可    Digest是MD5消息摘要

------------------------------------------

STAT    None    处理    请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

UIDL    [Msg#]   处理    返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的

LIST    [Msg#]   处理    返回邮件数量和每个邮件的大小

RETR    [Msg#]   处理    返回由参数标识的邮件的全部文本

DELE    [Msg#]   处理    服务器将由参数标识的邮件标记为删除,由quit命令执行

RSET    None    处理    服务器将重置所有标记为删除的邮件,用于撤消DELE命令

TOP    [Msg#]    处理    服务器将返回由参数标识的邮件前n行内容,n必须是正整数

NOOP    None    处理    服务器返回一个肯定的响应,不做任何操作。

------------------------------------------

QUIT    None    更新 退出

用PHP实现POP3收取邮件的类

现在让我们来用PHP实现一个通过POP3协议收取信件的类吧,这个类中所用到的一些sock操作的函数,不另做特殊说明,请参考php的有关资料。通过这个实例,相信你也会和我一样,感觉到PHP中对于sock操作的灵活、方便和功能的强大。

首先,我们来说明一下这个类中需要用到的一些内部成员变量:(这些变量应该都是对外封闭的,可是由于php对类的成员变量没有private与publice之类的分别,只好就这么直接定义了。这是PHP的一个令人遗憾的地方。)

1.成员变量说明

class pop3
{

var $hostname=""; // POP主机名

var $port=110; // 主机的POP3端口,一般是110号端口

var $timeout=5;  // 连接主机的最大超时时间

var $connection=0; // 保存与主机的连接

var $state="DISCONNECTED"; // 保存当前的状态

var $debug=0;  // 做为标识,是否在调试状态,是的话,输出调试信息

var $err_str='';  // 如果出错,这里保存错误信息

var $err_no;   //如果出错,这里保存错误号码

var $resp; // 临时保存服务器的响应信息

var $apop; // 指示需要使用加密方式进行密码验证,一般服务器不需要

var $messages; // 邮件数

var $size; //各邮件的总大小

var $mail_list; // 一个数组,保存各个邮件的大小及其在邮件服务器上序号

var $head=array(); // 邮件头的内容,数组

var $body=array(); // 邮件体的内容,数组;

2.当然,这其中的有些变量,仅通过这样一个简单的说明并不能完全了解如何使用,下面我就逐个来说明这个类实现中的一些主要方法:
Function pop3($server="192.100.100.1",$port=110,$time_out=5)

{$this->hostname=$server;

$this->port=$port;

$this->timeout=$time_out;

return true;
}

熟悉面向对象编程的朋友一看就会知道,这是这个类的构造函数,在初始化这个类时,可以给出这几个最基本的参数:pop3服务器的地址,端口号,及连接服务器时的最大超时时间。一般来说,只需要给出POP3服务器的地址就行了。

Function open()
{
if($this->hostname=="")

{$this->err_str="无效的主机名!!";

return false;
}

if ($this->debug) echo "正在打开 $this->hostname,$this->port,&$err_no, &$err_str, $this->timeout
";

if (!$this->connection=fsockopen($this->hostname,$this->port,&$err_no, &$err_str, $this->timeout))
{

$this->err_str="连接到POP服务器失败,错误信息:".$err_str."错误号:".$err_no;

return false;

}
else
{
$this->getresp();

if($this->debug)

$this->outdebug($this->resp);

if (substr($this->resp,0,3)!="+OK")

{$this->err_str="服务器返回无效的信息:".$this->resp."请检查POP服务器是否正确";

return false;
}

$this->state="AUTHORIZATION";

return true;

}

}

1,.htaccess要开放写权限,这样在自定义wp的永久链接时,wp会自动重写.htaccess。所谓删除或手动重写.htaccess就是因为没有开放它的写权限。
2,找到APACHE文件中的httpd.conf文件, 把#LoadModule rewrite_module modules/mod_rewrite.so 前的#去掉,加载rewrite模块。
3,查看APACHE文件中的httpd.conf文件是否默认设置了AllowOverRide为None,如果是,要改成All。或者修改wordpress所在的vhost段添加 < Directory /wp所在路径/> AllowOverride All < /Directory> 重启apache。