LINUXQQ

十一月 4, 2010

ispcp 安装错误解决办法

Filed under: 乱7八糟 — admin @ 5:06 下午

Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 27 of /etc/httpd/conf.d/fcgid_ispcp.conf: Cannot load /etc/httpd/modules/mod_fcgid.so into server: /etc/httpd/modules/mod_fcgid.so: cannot open shared object file: No such file or directory

解决办法

wget http://labs.renren.com/apache-mirror//httpd/mod_fcgid/mod_fcgid-2.3.5.tar.gz

   ./configure.apxs
    make
    make install
就OK了啊

centos ispcp 目录结构

Filed under: 乱7八糟 — admin @ 9:55 上午
/etc
     /http
             /httpd.conf           #apache 主配置文件
             /conf.d/*               #附加配置文件
             /mods-*/*               #附加MOD配置文件
             /sites-*/*              #站点配置文件
             /ispcp                  #ISPCP各客户站点配置,这个目录实际上链接到了 /sites-*/* 目录下了
     /php5
             /cgi/php.ini            #php 主配置文件
             /cli/phpini             #php 的 cli 配置文件
             /conf.d/*               #PHP 附加配置文件
     /ispcp
             /ispcp.conf             #ispcp 主配置文件
             /apache/*               #apache 相关的配置文件模板
             /fcgi/*                 #php    相关的配置文件模板和脚本模板
             /*other                 #应该是其他一些相关配置的模板
/var/www
     /fcgi                           #各客户站点的PHP配置文件及FastCGI的PHP启动脚本
             /domain.com             #一个站点
                /php5/php.ini        #PHP 的站点配置文件
                /php5-fcgi-starter   #启动PHP 的FASTCGI脚本
     /ispcp                          #ispcp的运行文件
             /gui                    #管理站点文件
     /virtual/domain.com             #各个客户站点主目录
             /htdocs                 #网站根目录
             /errors                 #错误提示的相关文件HTML
             /cgi-bin                #脚本目录
             /backups                #备份文件,自动/手动
             /logs                   #这个不用说了吧,默认的这里放的是Apache的LOG文件
             /phptmp                 #脚本临时文件,默认的Session文件放这里的
/var/log
     /kern.log                       #系统核心
     /daemon.log                     #系统服务
     /mysql.err
     /mysql.log
     /mysql/*                        #Mysql想关的LOG
     /apache2/*                      #Apache的LOG(Combined,error,traf,suexec等到)还有各个站点,
                                     #这里的LOG和/var/www/virtual//domain.com/log

十一月 3, 2010

centos 5.4 安装ispcp

Filed under: 乱7八糟 — admin @ 6:03 下午

yum update 更新

su -c ‘rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm’

cd /etc/yum.repos.d
wget http://rpms.famillecollet.com/enterprise/remi.repo
wget http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm –import RPM-GPG-KEY-remi
rm -f RPM-GPG-KEY-remi

编辑/etc/yum.repos.d/remi.repo

在末尾添加

includepkgs=mysql* php* sqlite*

安装镜像包

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

编辑/etc/yum.repos.d/rpmforge.repo

vi  /etc/yum.repos.d/rpmforge.repo

末尾添加

includepkgs=postgrey clamav clamd amavisd-new clamav-data clamav-filesystem clamav-lib clamav-server-sysv zoo unrar lha ripole clamav-db

yum remove clamav-*   删除自带的包

yum install clamav clamd amavisd-new

mkdir -p /var/spamassassin/bayes
chown -R amavis. /var/spamassassin/bayes

编辑/etc/mail/spamassassin/local.cf 添加

use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 1
bayes_auto_learn_threshold_spam 7.5

bayes_path /var/spamassassin/bayes/bayes
bayes_file_mode 0777

score FH_DATE_PAST_20XX 0
score DNS_FROM_OPENWHOIS 0

ok_languages all
ok_locales all

yum install postfix

cd /etc/postfix
openssl req -x509 -nodes -days 1850 -newkey rsa:2048 -keyout privkey.pem -out cert.pem

chkconfig amavisd on
/etc/init.d/postfix restart
/etc/init.d/amavisd restart
启动服务

cd /tmp
wget http://www.thatfleminggent.com/packages/centos/5/i386/courier-authlib-0.63.0-1.el5.mf.i386.rpm
wget http://www.thatfleminggent.com/packages/centos/5/i386/courier-authlib-userdb-0.63.0-1.el5.mf.i386.rpm
wget http://www.thatfleminggent.com/packages/centos/5/i386/courier-imap-4.8.0-1.el5.mf.i386.rpm

关闭SELINUX 和防火墙

service iptables

vi /etc/sysconfig/selinux

SELINUX=disabled

reboot

cd /tmp
wget http://softlayer.dl.sourceforge.net/project/ispcp/ispCP%20Omega/ispCP%20Omega%201.0.7%20RC1/ispcp-omega-1.0.7-rc1.tar.bz2
 

yum install `cat ./docs/CentOS/centos-packages`

perl -MCPAN -e ‘install Term::ReadPassword’

cd /tmp
rpm -Uvh courier-* policyd-weight-*

yum -y remove sendmail

groupadd -g 3000 courier

useradd -u 3000 -c ‘Courier Mail Server’ -d /dev/null -g courier -d /bin/false courier

service mysqld start

mysql_fix_privilege_tables

mysql_secure_installation

mv /etc/httpd/conf.d /etc/httpd/conf.d-disabled

mv /var/named/data /var/named/data-disabled
ln -s /var/named/chroot/var/named/data /var/named/data
echo ‘include “/etc/named-ispcp.conf”;’ >> /var/named/chroot/etc/named.conf

yum remove perl-version

cd /tmp

wget http://packages.sw.be/perl-version/perl-version-0.82-1.el5.rf.i386.rpm

wget http://packages.sw.be/perl-version/perl-version-0.82-1.el5.rf.x86_64.rpm

cd /tmp/ispcp-omega-1.0.7
make -f Makefile.centos

cd /var/www/ispcp/engine/setup
perl ispcp-setup

touch /etc/sasldb2
mkdir -p /var/spool/postfix/etc
cp /etc/sasldb2 /var/spool/postfix/etc

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

echo ‘include vhosts/*.conf’ >> /etc/httpd/conf/httpd.conf

chmod 775 /var/www/ispcp/gui/phptmp

以前常见错误解决

/usr/bin/expect is needed by courier-authlib-0.63.0-1.el5.mf.i386
yum install expect

Can’t locate File/MimeInfo/Magic.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ispcp-setup line 39.
BEGIN failed–compilation aborted at ispcp-setup line 39

yum install perl-File*

CRITICAL ERROR: Module [MIME::Entity] WAS NOT FOUND !

CRITICAL ERROR: Module [MIME::Parser] WAS NOT FOUND !

CRITICAL ERROR: Module [Crypt::CBC] WAS NOT FOUND !

CRITICAL ERROR: Module [Crypt::Blowfish] WAS NOT FOUND !

CRITICAL ERROR: Module [Crypt::PasswdMD5] WAS NOT FOUND !

CRITICAL ERROR: Module [Term::ReadPassword] WAS NOT FOUND !

Modules [MIME::Entity, MIME::Parser, Crypt::CBC, Crypt::Blowfish, Crypt::PasswdMD5, Term::ReadPassword] WAS NOT FOUND in your system…

yum install perl*

version version 0.74 required–this is only version 0.7203  at ispcp-setup-metho
BEGIN failed–compilation aborted at ispcp-setup-methods.pl line 31.
Compilation failed in require at ispcp-setup line 47

yum remove perl-version

Permission denied: mod_fcgid: couldn’t bind unix domain socket /var/run/mod_fcgid/sock/29922.167
Permission denied: mod_fcgid: spawn process /var/www/ispcp/gui/index.php error
chmod -R 777 /var/run/mod_fcgid/

十一月 2, 2010

ispCP 安装

Filed under: 乱7八糟 — admin @ 3:45 下午

ispCP是一套开源的虚拟主机控制程序,基于Web模式,可以开通网站、建立电子邮件和及数据库、建立FTP帐号甚至进行DNS解析等。目前国内对于这个系统的安装教程还是比较少,在这里,综合国外的教程,写一篇ispCP的安装教程,可能其中还有一些不足及错误,如果大家有发现,请在本站论坛内提出,我将进行改正和改进。
1、安装基本配置
服务器的IP:192.168.0.200
子网掩码:255.255.255.0
服务器网关:192.168.0.1
服务器的DNS:61.128.192.68,61.128.128.68
服务器主机名:server.ispcpcn.com
以上配置可以根据您的环境进行更改,替换成您的设置。本文中将以以上设置进行讲解。
2、服务器操作系统的安装
CentOS 5.2/5.3的安装可以参考本站的开源主机安装装备篇之——CentOS5.3的安装
注意:服务器安装完成后,必须关闭防火墙和SELinux。
3、调整/etc/hosts

vi /etc/hosts

编辑后的内容如下

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.200 server.ispcpcn.com server
::1 localhost6.localdomain6 localhost6

4、系统的初始化配置安装过后,要进行系统的初始化配置。具体配置方法见本站的:
CentOS安装过后的几个初始化配置
注意:此时不要安装或升级php
5、使用root帐号登录系统,升级系统,建立一个专用文件夹,下载ispCP压缩包并解压。

yum update 
yum install tar bzip2 wget
mkdir $HOME/downloads
cd $HOME/downloads
wget http://www.ispcpcn.com/Soft/ispcp-omega-1.0.0.tar.bz2
tar -xjvf ispcp-omega-1.0.0.tar.bz2

6、安装一些需要的模块。
在ispCP中,某些模块在官方的更新源中是没有的,就需要引用一些其他的源来安装。安装这个模块,就可以方便得使用yum install来安装一些官方没有的功能模块。

wget http://www.ispcpcn.com/Soft/ispCP/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm 

7、再次更新系统。

yum update

8、如果您没有禁止SELinux,请运行下面命令禁止SELinux。

setenforce 0

9、通过yum安装ispCP所需的模块。

cd $HOME/downloads
cd ispcp*
yum install `cat ./docs/CentOS/centos-packages`

10、通过CPAN安装那些perl必须的模块,这里尤为重要,因为这一块官方给出的教程中的命令,在实际使用中会出错,所以我们采取原始的安装方法,不采用他的命令模式。
首先,我们进入CPAN,

cpan

当出现初次要求配置的提示的时候,我们输入no,然后回车,当出现cpan>的时候,就完成了。然后,输入以下命令。注意,这中间安装的时间比较长,尤其是电信用户,请耐心等候。

install MIME::Entity
install IO::Compress::Bzip2
install Crypt::CBC
install Crypt::Blowfish
install Crypt::PasswdMD5
install Term::ReadPassword

按装完成后,退出CPAN。

quit

11、卸载sendmail,同时安装redhat-lsb,避免sendmail影响postfix的运行。

yum remove sendmail
yum install redhat-lsb

12、安装courier-imap,courier-authlib-userdb和courier-authlib。

wget http://www.ispcpcn.com/Soft/ispCP/courier-authlib-0.62.2-1.el5.mf.i386.rpm
wget http://www.ispcpcn.com/Soft/ispCP/courier-authlib-userdb-0.62.2-1.el5.mf.i386.rpm
wget http://www.ispcpcn.com/Soft/ispCP/courier-imap-4.4.1-1.el5.mf.i386.rpm
rpm -i courier-authlib-*.rpm courier-authlib-userdb-*.rpm courier-imap-*.rpm

13、为courier建立用户和用户组,当我们建立用户组的时候可能会提示已经建立了,如果有这个提示,可以忽略,跳过。

groupadd courier -g 3000
useradd -u 3000 -c ‘Courier Mail Server’ -d /dev/null -g courier -s /bin/false courier

14、安装mod_fcgid支持模块。

wget http://www.ispcpcn.com/Soft/ispCP/mod_fcgid-2.2-4.el5.kb.i386.rpm
rpm -i mod_fcgid-2.2-4.el5.kb.i386.rpm

15、删除/etc/httpd/conf.d下的所有文件。

rm -f /etc/httpd/conf.d/*

16、编译安装程序

cd $HOME/downloads/ispcp*
make -f Makefile.centos install

17、对当前系统的一些配置文件进行备份。

cp -RLf /tmp/ispcp/* /
cp -Rv /tmp/ispcp/etc/init.d /etc/rc.d/
ln -s /etc/rc.d/init.d /etc/init.d

18、配置Bind。

mv /var/named/data /var/named/data2
ln -s /var/named/chroot/var/named/data /var/named/data

在配置文件/var/named/chroot/etc/named.caching-nameserver.conf中的“include “/etc/named.rfc1912.zones”; ”后面增加一行“include “/etc/named-ispcp.conf”; ”。

vi /var/named/chroot/etc/named.caching-nameserver.conf

编辑后的内容如下:

….
include “/etc/named.rfc1912.zones”;
include “/etc/named-ispcp.conf”;
….

19、配置Mysql数据库服务。
启动Mysql服务

service mysqld start

配置Mysql服务,运行一下命令。

mysql_secure_installation

注意:请不要在密码中使用@、$和%字符。
具体的设置见下面提示:

Enter your password for root (enter for none):        //这里直接回车,如果您已经设置了密码请输入密码
Change the root password? [Y/n]     //如果您完全按照本站教程进行的设置,这里请输入Y回车设置密码
New password:            //输入新密码
Re-enter new password:     //重复输入密码
Remove anonymous users?[Y/n]      //是否删除匿名用户,为了安全,这里输入Y,然后回车
Disallow root login remotely?[Y/n]    //是否禁止root用户远程登录,这里选择禁止,输入Y然后回车。
Remove test database and access to it?[Y/n] //是否删除测试数据库及对他的访问。这里输入Y然后回车
Reload privilege tables now?[Y/n]  //重置私有表权限,这里输入Y然后回车

至此,数据库设置完成。
20、SASL和Postfix的配置。
postfix的配置

touch /etc/sasldb2
mkdir -p /var/spool/postfix/etc
cp /etc/sasldb2 /var/spool/postfix/etc/sasldb2

现在我们编辑/usr/lib/sasl2/smtpd.conf一边使用SASL数据库,并用下列内容替换/usr/lib/sasl2/smtpd.conf中的内容。

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
 

20、Apache配置。

echo ‘include vhosts/*.conf’ >> /etc/httpd/conf/httpd.conf
chown apache:apache /var/www/ispcp/gui/tools/webmail/data

22、安装ispCP虚拟主机控制系统。

cd /var/www/ispcp/engine/setup
perl ./ispcp-setup

安装过程会提一些问题,由你进行选择或者输入,以下是输入详解:

Please enter a fully qualified hostname. [server.ispcpcn.com]:         //这里直接回车就可以了
Please enter system network address.[192.168.0.200]:                    //这里也直接回车就可以了
Please enter SQL server host. [localhost]:                                       //直接回车
Please enter system SQL database. [ispcp]:                                    //直接回车
Please enter system SQL user. [root]:                                             //直接回车
Please enter system SQL password. [none]:                              //这里输入mysql数据库root帐号的密码
Please repeat system SQL password:                                        //再次输入密码确认
Please enter ispCP ftp SQL user. [vftp]:                            //直接回车
Please enter ispCP ftp SQL user password. [auto generate]:    //这里是设置数据库用户vftp的密码的,可以采用自动生成,但是不建议,最好你自己建立密码,所以在这里输入一个密码。
Please repeat ispCP ftp SQL user password:    //确认密码,再次输入你刚才输入的密码
Please enter administrator login name. [admin]:   //超级管理员用户名,你可以直接回车默认成admin,也可以自己输入
Please enter administrator password:         //确认超级管理员密码,再次输入密码
Please enter administrator e-mail address:   //输入管理员邮箱地址,也可以直接回车忽略。
Please enter the domain name where ispCP OMEGA will run on [admin.server.ispcpcn.com]:   //输入ispCP控制面板的域名,这里随意,只要是能使用的域名都可以,不必按照他提示的进行,比如我这里输入host.ispcpcn.com,以后登录ispCP就可以使用http://host.ispcpcn.com登录了。
IP of Secondary DNS. (optional) []:    //输入第二个DNS域名解析服务器的IP,这个一般没用,除非你自己通过ispCP解析域名,所以直接回车。
Use MySQL Prefix.
Possible values: [i]nfront, [b]ehind, [n]one. [none]:  //使用数据库前缀,[i]nfront:之前;[b]ehind:之后;[none]:不使用,这个回车就可以了,当然你也可以选择,一般是用用户的ID作为前缀的。
Please enter ispCP phpMyAdmin Control user. [pam]:         //这里直接回车
Please enter ispCP phpMyAdmin Control user password. [auto generate]: //输入phpmyadmin控制用户密码,这里建议自己输入,不建议生成。
Please repeat ispCP phpMyAdmin Control user password: //确认密码,再次输入
FastCGI Version: [f]cgid or fast[c]gi. [fcgid]: //直接回车
Activate AWStats. [no]  //直接回车
 

以上设置可能顺序有一些出入,但是基本上所有的提示的设置都在里面,你可以仔细对照查找一下。至此,设置结束,开始进入安装阶段,安装完成会自动返回命令状态。
23、修正roftpd的错误设置
ispCP自带的proftpd的配置,在CentOS 5.3下,有一些问题,导致proftpd无法启动及无法登陆。具体的修改方法见:
CentOS 5.3下安装ispCP后proftpd启动失败和无法登陆的故障。
24、设置一些必须的模块自启动。 ispCP安装过后,一些必须的服务无法自启动,比如httpd,proftpd,postfix等,这一点比ispconfig要差一些,ispconfig的官方教程比较详细,而ispCP的官方教程比较粗略,最后也没强调安装后要设置这些服务器成自启动,我们这里仍然要这样设置,否则重启过后一些服务不启动,就没办法运行ispCP。设置如下:

chmod 777 /var/www/ispcp/gui/phptmp
chkconfig –add ispcp_daemon
chkconfig –add ispcp_network
chkconfig –levels 345 ispcp_daemon on
chkconfig –levels 345 ispcp_network on
chkconfig –levels 235 postfix on
chkconfig –levels 235 saslauthd on
chkconfig –levels 235 courier-imap on
chkconfig –levels 235 courier-authlib on
chkconfig –levels 235 httpd on
chkconfig –levels 235 mysqld on
chkconfig –levels 235 proftpd on
chkconfig –levels 235 named on
chkconfig –levels 235 spamassassin on

25、修改bind的配置。
bind默认只允许本地查询域名解析,所以我们要修改bind,这样,如果我们使用DNS解析服务,那么,就不会由于拒绝其他机器查询而导致解析失败了。

vi /var/named/chroot/etc/named.caching-nameserver.conf

修改部分的内容如下:

[.....]
listen-on port 53 { any; };
[.....]
allow-query { any; };
[.....]

26、重启服务器。

reboot

然后您就可以从您的域名或者IP登录您的ispCP控制系统了。如果是我这里,我就用http://host.ispcpcn.com登录我的ispCP控制系统了。
27、安装中文包。
ispCP除了英文语言,默认是不安装其他语言的。这就需要您将ispCP下载到本地,解压缩,登录后台后,在后台提交解压后的language-files/languages/chinese_china这个文件进行在线安装。安装后将其设置为默认语言,就可以使用中文界面了。

十月 31, 2010

php 采集页面

Filed under: 乱7八糟 — admin @ 11:28 上午

目录

什么是php采集页面?
为什么要采集?
采集哪些页面?
如何写采集页面规则?
采集范例程序
一些常用的函数

对一个目标网站的全面采集
什么是php采集程序?
    php采集程序,也叫php小偷,主要是用于自动搜集网络上web页里特定内容,用php语言写的web程序,运行于支持php的平台上。谈到“自动搜集”,你可能联想到百度goole,联想到搜索引擎所做的事情。php采集程序,正是做类似的工作。
为什么要采集?

    互联网正以飞快的速度在发展,web数据每天以几何级数据量递增,面对这庞大的数据,作为一个网站管理员的你,该如何搜集自己所需要的信息呢?特别对某个或某几个同类网站,你需要它们的大量信息,来充实你的网站内容,难道就只能复制粘贴的过日子吗?一个网站管理员,你真的就得花大量时间去搞原创内容,而与整个互联网信息量的发展速度脱节吗?这些问题的解决方法只有一个:采集。如果有那么一个程序,你帮你的网站自动或半自动的采集你所需要的特定内容,即时更新你网站的信息,是否是你梦寐以求的呢?这就是采集程序出现的原因所在。
采集些什么?

     这要看你做的什么类型的网站了。如果你做图片站,就采集图片;做音乐站,就采集mp3,做新闻站,就采集新闻等等。一切根据你网站的内容架构需要而定。确定你要采集的东西,才好写出相应的采集程序。

[本帖最后由 天涯风云 于 2007-6-3 12:41 编辑]

论坛模式 推荐 收藏 分享给好友 推荐到圈子 管理

TAG:

天涯风云 发布于2007-06-03 11:54:08
如何采集?
如何采集?
    通常采集程序,都是有的放矢的。也就是需要有目标网站,搜集一些你需要的采集内容的网站,分别对其html代码进行分析,找出规律性的东西,依据你要采集的特定内容,写出php代码。采集到你要的东西以后,你可以选择自己需要的存放方式。比如直接生成html页面,或是放进数据库,作进一步处理或是存放成特定的形式,以备后用。
    针对目标网站,我们可以采用以下方式:
1.使用file()函数,获取目标页面文件流,转换成字符串,作进一步处理.
  一个范例函数:
CODE:

//获取目标页面文件流并转换成字符串形式
function openfile($url)
{
if(file($url)){
        $str = file($url);
        $count = count($str);
        for ($i=0;$i<$count;$i++){
        $file .= $str[$i];
                       
                                 }
        return $file;
              } else { die(“文件打开失败!”); }
}
用法举例:
$getstr=openfile(http://www.linuxqq.net);
//getsrt是一个字符串,你可对它作进一步处理。
2.使用file_get_contents()函数,该函数可以直接将获取的web页面内容转换成字符串
CODE:

$getstr=file_get_contents(“http://www.linuxqq.net“);
//getsrt就是一个字符串,你可对它作进一步处理。
3.使用Microsoft.XMLHTTP组件方式。不过该组件需要windows平台支持,它是windows的一个组件,php程序以com形式调用它。
范例程序:
CODE:

<?php
//Microsoft.XMLHTTP组件使用范例程序get.php
//作者:天涯风云
$url=$_GET['id'];
$xmlhttp = new COM(“Microsoft.XMLHTTP”) or die(“无法创建Microsoft.XMLHTTP组件!”);
$xmlhttp->open(“GET”,$url,False, “”, “”);
$xmlhttp->setRequestHeader(“content-Type”,”text/html”);
$xmlhttp->send();
$body=$xmlhttp->responseText;
echo $body;
?>
用法:get.php?id=”目标页面”
4.使用fsockopen()函数,获取文件流
范例程序:
CODE:

function request_url($url,$method=’POST’) {
$url = parse_url($url); //解析url地址,取得host,path,port,query等
if (!$url) return “couldn’t parse url”;
if (!isset($url['port'])) { $url['port'] = “”; }
if (!isset($url['query'])) { $url['query'] = “”; }
//连接服务器
$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return “不能连接”.$url['host'].”服务器”;
//发送请求
fputs($fp, sprintf(“$method %s%s%s HTTP/1.0\n”, $url['path'], $url['query'] ? “?” : “”, $url['query']));
fputs($fp, “Host: $url[host]\n”);
fputs($fp, “Content-type: application/x-www-form-urlencoded\n”);
fputs($fp, “Connection: close\n\n”);
//获得请求后返回的内容
$line = fgets($fp,1024);
if (!eregi(“^HTTP/1\.. 200″, $line)) return;
$results = “”;
while(!feof($fp)) {
$line = fgets($fp,1024);
$results .= $line;
}
fclose($fp);
return $results;
}

函数用法:
$getstr=request_url(“目标页面”);
//getstr是一个字符串,你可对它作进一步处理。
[ 本帖最后由 天涯风云 于 2007-6-3 12:14 编辑 ]
天涯风云 发布于2007-06-03 12:24:33
采集范例程序
采集范例程序1
获取sina网上的某个城市的天气信息
//sinatianqi.php
CODE:

<?php
/* 此程序是从新浪网的天气网页[url]http://php.weather.sina.com.cn/search.php?city=[/url]某个城市名,取得天气信息*/
ob_start();  //启动输出缓冲
function request_url($url,$method=’POST’) {
$url = parse_url($url); //解析url地址,取得host,path,port,query等
if (!$url) return “couldn’t parse url”;
if (!isset($url['port'])) { $url['port'] = “”; }
if (!isset($url['query'])) { $url['query'] = “”; }
//连接服务器
$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return “不能连接”.$url['host'].”服务器”;
//发送请求
fputs($fp, sprintf(“$method %s%s%s HTTP/1.0\n”, $url['path'], $url['query'] ? “?” : “”, $url['query']));
fputs($fp, “Host: $url[host]\n”);
fputs($fp, “Content-type: application/x-www-form-urlencoded\n”);
fputs($fp, “Connection: close\n\n”);
//获得请求后返回的内容
$line = fgets($fp,1024);
if (!eregi(“^HTTP/1\.. 200″, $line)) return;
$results = “”;
while(!feof($fp)) {
$line = fgets($fp,1024);
$results .= $line;
}
fclose($fp);
return $results;
}
//获得从其它网页传送过来的url(带查询字串)
if (!$_REQUEST['url']) {
echo “请添加一个url”;
exit;
}else{
$url=$_REQUEST['url'];
}
$content=request_url($url); //取得请求后的网页内容
$start=strpos($content,”<!– 天气状况 begin –>”);//取得天气预报的截取段
$end=strpos($content,”<!– 天气状况 end –>”);
$len=$end-$start;
$b=substr($content,$start,$len); //截取得指定内容
//从上面的截取段中取得城市今日天气预报的截取段
$sub_start=strpos($b,”<div class=\”City_Data\”>”); 
$sub_end=strpos($b,”<div class=\”Weather_SM\”>”);
$len2=$sub_end-$sub_start;
$c=substr($b,$sub_start,$len2);
$d=split(“\n”,$c); //去掉换行符
//print_r($d);
$e=”";
foreach ($d as $key=>$value){
$value=strip_tags($value);  //去掉html标记
$e.=$value;
if ($key==2) {
  $e.=”<br>”;
}
}
echo $e;
ob_end_flush();
?>  
程序运行情况:
测试
[ 本帖最后由 天涯风云 于 2007-6-3 12:26 编辑 ]
天涯风云 发布于2007-06-03 12:29:08
采集范例程序
采集范例程序

采集范例程序2:取得tom的天气
CODE:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML><HEAD><TITLE>天气预报-天气查询-中国美女网</TITLE>
<META http-equiv=Content-Type content=”text/html; charset=gb2312″><LINK
href=”images/home.css” rel=stylesheet>
<META content=”MSHTML 6.00.3790.2759″ name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 marginheight=”0″ marginwidth=”0″>
<center><div>
<TABLE cellSpacing=0 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD><IMG height=100 src=”templates/default/images/top1.jpg” width=770></TD>
  </TR></TBODY></TABLE>
<TABLE height=28 cellSpacing=0 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/” target=_blank>首页</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/
    target=_blank>走光偷拍</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/
    target=_blank>激情诱惑</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.linuxqq.net/archives/190.html
    target=_blank>清纯女孩</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/
    target=_blank>美女自拍</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/
    target=_blank>明星写真</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/
    target=_blank>性爱健康 </A></TD>
   
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=http://www.linuxqq.net target=_blank>免费电影</A></TD>
    <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/” target=_blank>搞笑图片</A></TD>
  <TD vAlign=center align=middle width=2
      background=templates/default/images/tt_r4_c1.jpg><IMG height=22
      src=”templates/default/images/tt_r5_c8.jpg” width=1></TD>
    <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A
      href=”http://www.needidc.com/store/” target=_blank>天气预报</A></TD>
   </TR></TBODY></TABLE>

<TABLE style=”MARGIN-TOP: 2px” cellSpacing=0 cellPadding=0 width=774
background=images/t2_05.gif border=0>
  <TBODY>
  <TR><td>
<SCRIPT language=JavaScript>
<!—
today = new Date();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var timeValue = “<FONT COLOR=#000000>” + (hours);
timeValue += ((minutes < 10) ? “<FONT COLOR=#000000>:</FONT></BLINK>0″ : “<FONT COLOR=#000000>:</FONT></BLINK>”) + minutes+”</FONT></FONT>”;
function initArray(){
this.length=initArray.arguments.length
for(var i=0;i<this.length;i++)
this[i+1]=initArray.arguments[i] }
var d=new initArray(“<font color=#0000ff>星期天”,”<font color=#000000>星期一”,”<font color=#000000>星期二”,”<font color=#000000>星期三”,”<font color=#000000>星期四”,”<font color=#000000>星期五”,”<font color=#FEFF80>星期六”);
document.write(“<font color=#000000>”,today.getYear(),”年”,”",today.getMonth()+1,”月”,”",today.getDate(),”日 </FONT>”,d[today.getDay()+1],” “); //–>
</SCRIPT>
<font color=#0000ff>(友情提醒:按”Ctrl键+F”查找你所在城市的天气情况)</font><form name=”form1″ action=”http://www.needidc.com/store/shuangxian.php“>
                       <input name=”city” type=”text” size=”20″>
                          <input type=”submit” value=”搜索”>
                      </form>
</TD></TR>  

</TBODY></TABLE>
<TABLE style=”MARGIN-TOP: 2px” cellSpacing=0 cellPadding=0 width=774
background=images/t2_05.gif border=0>
  <TBODY>
  <TR>
    <TD width=20><IMG height=21 src=”images/t2_04.gif” width=13></TD>
    <TD width=153>中国天气查询 </TD>
    <TD width=14><IMG height=21 src=”images/t2_06.gif” width=14></TD>
    <TD align=right background=images/t2_07.gif>
       
数据来源:<A
      href=”http://www.needidc.com/
      target=_blank>中央气象台</A></TD>
    <TD width=7><IMG height=21 src=”images/t2_08.gif”
  width=7></TD></TR></TBODY></TABLE>
<DIV id=guonei_h24 name=”guonei_h24″>
<TABLE cellSpacing=1 cellPadding=1 width=774 bgColor=#ababab border=0>
  <TBODY>

<?php
$str = file(“http://www.linuxqq.net/archives“);
$count = count($str);
for ($i=0;$i<$count;$i++){
    $file .= $str[$i];
}
$tomtq = explode(“<table width=\”774\” border=\”0\” cellspacing=\”1\” cellpadding=\”1\” bgcolor=\”#ABABAB\”>”,$file);
$tomtq = explode(“</table>”,$tomtq[1]);
$tomtq= $tomtq[0];
echo $tomtq;
?>

  </TBODY></TABLE>
  <TABLE cellSpacing=1 cellPadding=0 width=774 align=center border=0>
  <TBODY>
  <TR>
    <TD bgColor=#bbf1ff>
      <TABLE cellSpacing=5 cellPadding=0 width=774 border=0>
        <TBODY>
        <TR>
          <TD align=middle><A href=”http://www.linuxqq.net/archives/190.html
            target=_blank>联系我们</A> <FONT color=#000099>-</FONT>  <A
            onclick=”this.style.behavior=’url(#default#homepage)’;this.setHomePage(‘http://www.86mm.com.cn’);return false;”
            href=”http://www.needidc.com/#”>设置首页</A> <FONT color=#000099>-</FONT>
            <A href=”www.linuxqq.net
            target=_blank>广告服务</A> <FONT color=#000099>-</FONT> <FONT
            color=#ff0000><A href=”http://sms.25vod.com/public/fullscreen/golink.php?smsid=107
            target=_blank>友情链接</A></FONT></TD>
        </TR>
        <TR>
          <TD
            align=middle>本站内容来自于互联网搜索和网友改编、上传,本站提供的视频、音乐片断仅供网友测试使用,<BR>如发现相关内容侵犯了您的权益,请及时联系我们,本站将会及时予以删除<BR>
          联系QQ:231734624
            联系E-mail:wangsua@163.com<BR>
            Copyright ? 2005-2008 86mm.com.cn Inc. All
            rights reserved. 华中美女网 版权所有 <BR><script language=”javascript” type=”text/javascript” src=”http://js.users.51.la/882050.js”></script>
<noscript><a href=”http://www.51.la/?882050” target=”_blank”><img alt=”我要啦免费统计” src=”http://img.users.51.la/882050.asp” style=”border:none” /></a></noscript><a href=http://www.miibeian.gov.cn/>鄂ICP备06012810号</a><BR>
            </TD>
        </TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
 
</DIV>
</CENTER></BODY></HTML>
示范页面:http://86mm.com.cn/tianqi.php
[ 本帖最后由 天涯风云 于 2007-6-5 19:42 编辑 ]
天涯风云 发布于2007-06-03 12:37:12
一些常用的函数

CODE:

// ####################### 获取文件流并转换成字符串 #######################
function openfile($url)
{
if(file($url)){
        $str = file($url);
        $count = count($str);
        for ($i=0;$i<$count;$i++){
        $file .= $str[$i];
                       
                                 }
        return $file;
              } else { die(“文件打开失败!”); }
}
// ####################### 切分字符串 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾代码 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,”",$content);
       $content=str_replace($start.$end,”",$content);
       return $content;
     
    
}
// ####################### 分析域名 #######################
function getname($url)
{
$referer = preg_replace(“/https?:\/\/([^\/]+).*/i”, “\\1“, $url);
$referer = str_replace(“www.”, “”, $referer);
return $referer;
}

// ####################### 清除HTML代码table #######################
function clstable($content)
{
$clscontent= preg_replace(“/<table[^>]*?>.*?<\/table>/si”, “”, $content);
return $clscontent;
}
// ####################### 清除HTML代码script #######################
function clsscript($content)
{
$clscontent= preg_replace(“/<script[^>]*?>.*?<\/script>/si”, “”, $content);
return $clscontent;
}
// ####################### 清除HTML代码div #######################
function clsdiv($content)
{
$clscontent= preg_replace(“/<div[^>]*?>.*?<\/div>/si”, “”, $content);
return $clscontent;
}

// ####################### 清除HTML代码iframe #######################
function clsifr($content)
{
$clscontent= preg_replace(“/<IFRAME[^>]*?>.*?<\/IFRAME>/si”, “”, $content);
return $clscontent;
}

// ####################### 清除HTML代码tr,td #######################
function clstrtd($content)
{
$clscontent= preg_replace(“/<td[^>]*?>.*?<\/td>/si”, “”, $content);
$clscontent= preg_replace(“/<tr[^>]*?>.*?<\/tr>/si”, “”, $clscontent);
$clscontent= preg_replace(“/<tr[^>]*?>/si”,”",$clscontent);
$clscontent= preg_replace(“/<td[^>]*?>/si”,”",$clscontent);
$clscontent= preg_replace(“/<\/tr>/si”,”",$clscontent);
$clscontent= preg_replace(“/<\/td>/si”,”",$clscontent);
return $clscontent;
}
// ####################### 清除HTML代码超链接 #######################
function clsa($content)
{
$clscontent= preg_replace(“/<a[^>]*?>.*?<\/a>/si”, “”, $content);
return $clscontent;
}
// ####################### 彻底清除所有HTML代码#######################
function clearhtml($content)
{
$search = array (“‘<script[^>]*?>.*?</script>’si”,  // 去掉 javascript
                 “‘<[\/\!]*?[^<>]*?>’si”,           // 去掉 HTML 标记
                 “‘([\r\n])[\s]+’”,                 // 去掉空白字符
                 “‘&(quot|#34);’i”,                 // 替换 HTML 实体
                 “‘&(amp|#38);’i”,
                 “‘&(lt|#60);’i”,
                 “‘&(gt|#62);’i”,
                 “‘&(nbsp|#160);’i”,
                 “‘&(iexcl|#161);’i”,
                 “‘&(cent|#162);’i”,
                 “‘&(pound|#163);’i”,
                 “‘&(copy|#169);’i”,
                 “‘&#(\d+);’e”);                    // 作为 PHP 代码运行
$replace = array (“”,
                  “”,
                  “\\1“,
                  “\”",
                  “&”,
                  “<”,
                  “>”,
                  ” “,
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  “chr(\\1)”);
$text = preg_replace ($search, $replace, $content);
return $text;
}
// ####################### 写入缓存文件 #######################
function writetocache($cachedir,$cachename, $cachedata = ”) {
    $cachedir = ‘./’.$cachedir.’/';
    $cachefile = $cachedir.$cachename.’.php’;
    if(!is_dir($cachedir)) {
                        @mkdir($cachedir, 0777);
          }
    if(!is_dir($cachedir)) {
      @mkdir($cachedir, 0777);
    }
    if(@$fp = fopen($cachefile, ‘wb’)) {
      @fwrite($fp, $cachedata);
      @fclose($fp);
      @chmod($cachefile, 0777);
    } else {
      echo ‘Can not write to cache files, please check directory ./cache/ .’;
      exit;
    }
}
// ####################### 获取文件里的html链接 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合并相同的链接并重新索引…
$reout=array();
$reout=resetar($outs);
return $reout;
}
天涯风云 发布于2007-06-03 13:01:53
对一个目标网站的全面采集
对一个目标网站的全面采集,包括以下几个步聚:
1。分析首页或分类页的html源码
2。依据分析,写出正则表达式,采集首页或分类页面里的链接
3。将链接作为目标页面,进行二次采集。
4.将采集的内容作进一步处理。
[ 本帖最后由 天涯风云 于 2007-6-3 13:27 编辑 ]
天涯风云 发布于2007-06-03 13:28:42
范例:对86mm.com.cn网站的全面采集
范例:对86mm.com.cn网站的全面采集
一,对首页源码分析,找出链接规律
该网站首页源码查看:http://86mm.com.cn/files.php?id=http://86mm.com.cn
分析有效链接:
CODE:

<TR><TD><a href=”html/xingaijiankang/8104.html” target=”_blank” title=”男性生殖保健”>
男性生殖保健</a></TD></TR>
现在我们就要找出形如”html/xingaijiankang/8104.html”类似字符串的所有链接。
[ 本帖最后由 天涯风云 于 2007-6-3 13:39 编辑 ]
天涯风云 发布于2007-06-03 13:37:18
范例:对86mm.com.cn网站的全面采集
二,写正则表达式,找出首页里的所有链接
关键字符串:|<a href=”html/xingaijiankang/8104.html” target=”_blank”|
正则匹配规则:
$re=”|<a href=\”(html\/\w+\/\d{1,5}\.html)\” target=\”_blank\”|U”;
找所有链接,并显示结果:
CODE:

<?php
// ####################### 获取文件里的html链接 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合并相同的链接并重新索引…
$reout=array();
$reout=resetar($outs);
return $reout;
}
set_time_limit(0);

$url=$_GET['http://86mm.com.cn'];
$ufile=file_get_contents($url);
$re=”|<a href=\”(html\/\w+\/\d{1,5}\.html)\” target=\”_blank\”|U”;
$rep1=”";
$rep2=”";

$urls=geturl($re,$ufile,$rep1,$rep2);
$result=count($urls);

echo “共找到”.$result.”个链接<br>”;
$i=0;
while($i<$result)
{

$outurl[$i]=”http://www.linuxqq.net/”.$urls[$i];
echo $outurl[$i].”<br>”;
$i++;
}
?>
[ 本帖最后由 天涯风云 于 2007-6-3 13:49 编辑 ]

 
3.JPG

天涯风云 发布于2007-06-03 14:19:09
范例:对86mm.com.cn网站的全面采集
三,对内容页面html源码分析,采集标题和内容(本范例主要采集页面标题和内容)
查看源码:http://www.linuxqq.net/index.php?id= … einvzipai/8061.html
分析:
CODE:

<TITLE>世界上最搞笑的屁股⌒-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片</TITLE>
这部分可以用cut(“<TITLE>”,”</TITLE>”,$file)直接获取,然后把后面多余的尾巴换掉。
主要内容部分集中在
CODE:

<td height=”15″ valign=”top”>…………..<!–流量交换–>
这一区间内,我们可以再次cut()一下,取得内容。
这样标题我内容就全获取了。。
具体实现代码:
CODE:

<?php
// ####################### 切分文件流 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾代码 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,”",$content);
       $content=str_replace($start.$end,”",$content);
       return $content;
     
    
}
set_time_limit(0);

$url=$_GET['id'];
$files=file_get_contents($url);
$title=cut(“<TITLE>”,”</TITLE>”,$files);
//清除标题后面的多余字符串
$title=str_replace(“-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片”,”",$title);
$content=cut(“<td height=\”15\” valign=\”top\”>”,”<!–流量交换–>”
,$files);
//清除内容里的一句广告词
$content=del(“<font color=red>”,”</font>”,$content);

echo $title.”<br>”;
echo $content;
?>
这样,我们就可以获取一个页面内的标题和内容了。。
[ 本帖最后由 天涯风云 于 2007-6-3 14:29 编辑 ]

 
4.GIF

天涯风云 发布于2007-06-03 14:58:50
范例:对86mm.com.cn网站的全面采集
四,批量获取首页里所有链接的标题和内容,并以php文件的形式保存。
  下面,我们要用程序依次打开86mm.com.cn首页里所有链接,并取得相应的标题和内容,存为php文件,当然你可以生成其它格式的文件或放进数据库里,这以个人需要而定。
代码如下:
CODE:

<?php
// ####################### 获取文件里的html链接 #######################
function geturl($re,$ufile,$rep1,$rep2){
preg_match_all ($re,
    $ufile,
    $out, PREG_PATTERN_ORDER);
$result=count($out[1]);
$i=0;
while($i<$result)
{
$outs[$i]=str_replace($rep1,$rep2,$out[1][$i]);
$i++;
}
//合并相同的链接并重新索引…
$reout=array();
$reout=resetar($outs);
return $reout;
}
// ####################### 切分文件流 #######################
function cut($start,$end,$file){
        $content=explode($start,$file);
        $content=explode($end,$content[1]);
        return  $content[0];
}
// ####################### 清除垃圾代码 #######################
function del($start,$end,$content){
       $del=cut($start,$end,$content);
       $content=str_replace($del,”",$content);
       $content=str_replace($start.$end,”",$content);
       return $content;
     
    
}
// ####################### 清除数组里的重复值并重新索引数组 #######################
function resetar($outs){
$reout=array();
$reouts=array();
$reout=array_unique($outs);
foreach($reout as $key=>$value){
array_push($reouts,$value);
}
return $reouts;
}
// ####################### 写入缓存文件 #######################
function writetocache($cachedir,$cachename, $cachedata = ”) {
    $cachedir = ‘./’.$cachedir.’/';
    $cachefile = $cachedir.$cachename.’.php’;
    if(!is_dir($cachedir)) {
                        @mkdir($cachedir, 0777);
          }
    if(!is_dir($cachedir)) {
      @mkdir($cachedir, 0777);
    }
    if(@$fp = fopen($cachefile, ‘wb’)) {
      @fwrite($fp, “<?php\r\n//天涯风云,版权所有\r\n//Created on \r\n\r\n”.$cachedata.”\r\n\r\n?>”);
      @fclose($fp);
      @chmod($cachefile, 0777);
    } else {
      echo ‘Can not write to cache files, please check directory ./cache/ .’;
      exit;
    }
}
// ####################### 创建缓存文件 #######################
function content_recache($cachedir,$i,$title,$content) {
 
  $contents = “\$catecache = array(\r\n”;
    $contents.=”\t’title’ => ‘”.$title.”‘,\r\n’content’=> ‘”.$content.”‘\r\n”;
  $contents .= “);”;
  writetocache($cachedir,$i,$contents);
echo “./”.$cachedir.”/”.$i.”.php文件创建成功!<br>”;
}
set_time_limit(0);

$url=’http://86mm.com.cn’;
$ufile=file_get_contents($url);
$re=”|<a href=\”(html\/\w+\/\d{1,5}\.html)\” target=\”_blank\”|U”;
$rep1=”";
$rep2=”";

$urls=geturl($re,$ufile,$rep1,$rep2);
$result=count($urls);

echo “共找到”.$result.”个链接<br>”;
$i=0;
while($i<$result)
{

$outurl[$i]=”http://www.linuxqq.net/”.$urls[$i];//对取得的链接加域名,得到实际地址
echo $outurl[$i].”<br>”;
$files[$i]=file_get_contents($outurl[$i]);
$title[$i]=cut(“<TITLE>”,”</TITLE>”,$files[$i]);
$title[$i]=str_replace(“-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片”,”",$title[$i]);
$content[$i]=cut(“<td height=\”15\” valign=\”top\”>”,”<!–流量交换–>”
,$files[$i]);
//清除内容里的一句广告词
$content[i]=del(“<font color=red>”,”</font>”,$content[i]);

//将取得的标题和内容写入文件
content_recache(“86mm”,$i,$title[$i],$content[$i]);
$i++;
}

?>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/binger819623/archive/2009/03/12/3985592.aspx

十月 27, 2010

北京服务器托管

Filed under: 乱7八糟 — admin @ 11:03 上午

  北京服务器托管与LINUX发展强大有着很重要的牵连因素.现在托管IDC越来越多的公司正在使用LINUX系统,可见LINUX系统的市场多么庞大.LINUXQQ联手北京服务器托管专家推出服务器托管就送维护活动:

   活动只针对在本公司租用服务器并且独享2M以上的用户,系统须是LINUX系统.我们将送半年全权维护

  依托我们强大的技术实力确保你的服务器在我们的机房,我们的维护正常畅通

详情请登陆官方网站:灵动网络  此活动仅限一个月

九月 19, 2010

LINUX下的智能电源

Filed under: 乱7八糟 — admin @ 11:45 下午

基于LINUX下的智能电源,通过PBOX可执行远程管理,WEB终端管理的电源.调用LINUX系统下的ACIP的进程执行管理

九月 15, 2010

resultset_is_needed = true

Filed under: 乱7八糟 — admin @ 11:29 上午

resultset_is_needed

in proxy.queries:append() a 3rd parameter is a (optional) table with options specific to the this packet.

If we want to have access to the resultset in the read_query_result() hook, you have to set resultset_is_needed:

 proxy.queries:append( 1, ..., { resultset_is_needed = true } )

八月 27, 2010

CISCO 端口检测常用命令

Filed under: 乱7八糟 — admin @ 4:25 上午

下面以Cisco1800路由器为例,介绍一下常用的查看端口和通道状况的命令。 在MS-DOS窗口里敲入命令telnet+IP地址,回车,即可远程登录路由器。一般用路由器局域网口地址。 1,用R1#sh ip int b命令查看端口状态 R1#sh ip int b Interface IP-Address OK? Method Status Protocol FastEthernet0/0 100.100.100.226 YES NVRAM up up FastEthernet0/1 200.200.200.226 YES NVRAM up up Serial0/0/0 72.22.81.102 YES NVRAM up up Serial0/0/1 72.22.81.109 YES NVRAM up up 正常情况下,思科1800路由器四个端口的Status和protocol都是up的。 2,用R1#sh int s0/0/0查看链路状态和通道情况 Serial0/0/0 is up, line protocol is up //接口与协议都已启动(正常) Serial0/0/0 is up, line protocol is down //接口启动,协议没有匹配成功(端口无物理故障,但通道不通) Serial0/0/0 is down, line protocol is down (notconnect)//接口与协议都DOWN掉,本端端口没有与对方建立物理连接,可能是对方设备没有开启,对方端口故障或者线路故障造成。 Serial0/0/0 is down, line protocol is down //接口与协议都DOWN掉(协转没有工作) Serial0/0/0 is down,line protocol is down(disable)//端口出现物理性故障,需更换端口。 Serial0/0/0 is administratively down,line protocol is down //接口关闭,可用命令打开。 Serial0/0/0 is up, line protocol is down(looped) //此通道上有环(无论在协转、DDF架、SDH上做环,在路由器里看到的显示是一样的)。 Serial0 is up, line protocol is down Hardware is PowerQUICC Serial Interface is unnumbered. Using address of FastEthernet0/0 (172.22.128.193) MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 //通道的可靠性 Encapsulation PPP, LCP Listen, loopback not set Last input 00:00:27, output 00:00:27, output hang never Last clearing of “show interface” counters 00:02:52 //上次计数器清零到现在的时间 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: weighted fair Output queue: 0/1000/64/0 (size/max total/threshold/drops) Conversations 0/2/256 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated) Available Bandwidth 1158 kilobits/sec 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 30 packets input, 420 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 6552 input errors, 0 CRC, 4 frame, 0 overrun, 0 ignored, 0 abort// 输入错误包数量 60 packets output, 840 bytes, 0 underruns 0 output errors, 0 collisions, 9 interface resets 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up 通道的可靠性,正常值是255/255,如果低于254将会造成丢包。可靠性越低,通道越差,错误包越多。 DCD 数据载体检测DTE CARrfer derect DSR 数据设置就绪DATA SET READY DTR 数据终端就绪DTE IS READY RTS 请求发送Reguest To Send CTS 清除发送Clear To send 3,路由器端口计数器清零有故障的通道往往造成路由器接口的输入错误包数量很高,不便于比较查看。这时最好把接口数据包计数器清零,使其重新开始计数。用R1#clear coun命令清零。 R1#clear coun 4,判断以太网端口故障用R1#sh int f0/0 来检查以太网口及其链路的状态,如下所示: R1#sh int f0/0 FastEthernet 0 is up,line protocol is up //连接正常 Ethernet 0 is up,line protocol is down //连接故障,路由器没有连接到局域网 Ethernet 0 is down,line protocol is down(disable) //接口故障 Ethernet 0 is administratively down,line protocol is down //接口被关闭,可用命令打开 5,查看相邻路由器用R2#sh cdp nei命令查看相邻路由器,输出如下: R2#sh cdp nei Capability Codes: R – Router, T – Trans Bridge, B – Source Route Bridge S – Switch, H – Host, I – IGMP, r – Repeater Device ID Local Intrfce Holdtme Capability Platform Port ID R1 Ser 0/0/0 133 R S I 1841 Ser 0/0/1 S2_SW1 Fas 0/0 125 S I WS-C2960-2Fas 0/6 S2_SW2 Fas 0/1 140 S I WS-C2960-2Fas 0/22 R3 Ser 0/0/1 156 R S I 1841 Ser 0/0/0 此命令可以查看到相邻的思科路由器和思科交换机,可以验证设备是否相通,以及连接关系是否正确。 6,观察路由器告警和报错信息路由器发生故障或状态发生变化的时候,会发出告警、报错、提示信息。如果是用telnet命令登录路由器的话,不能直接看到这些信息,需要输入R1# ter mon命令后,才能使这些信息显示在MS-DOS窗口上。 R1#ter mon 该命令可以使你及时了解路由器状态变化,便于发现和排除故障。

八月 23, 2010

thinkphp 登陆代码

Filed under: 乱7八糟 — admin @ 5:04 下午

<?php
class PublicAction extends BaseAction{

public function checkLogin() {
   $secure_code = C(‘SECURE_CODE’);
   $userUsername = $_POST["username"];
   $userPassword = md5($secure_code.md5($_POST["password"]));
  
   if(empty($_POST['username'])) {
    $this->error(‘帐号错误!’);
   }elseif (empty($_POST['password'])){
    $this->error(‘密码必须!’);
   }elseif ($_SESSION['verify'] != md5($_POST['verify'])){
    $this->error(‘验证码错误!’);
   }
  
   //生成认证条件
        $map            =   array();
        $map["username"] = $_POST['username'];
        $map["status"] = array(‘gt’,0);

   $userDao = D(‘User’);
   $user = $userDao->find($map);

   //使用用户名、密码和状态的方式进行认证
   if(false === $user) {
    $this->error(‘用户名不存在或已禁用!’);
   }else {
    if($user->username != $_POST['username']) {
     $this->error(‘帐号错误!’);
    }
    if(md5($secure_code.$user->password) != $userPassword) {
     $this->error(‘密码错误!’);
    }}
    $_SESSION[C('USER_AUTH_KEY')] = $user->uid;
    $userDao->setField(‘lastLoginTime’,time(),”uid=”.$user->uid);
      if($user->type ==’a') {
     // 管理员不受权限控制影响
            $_SESSION['administrator']   = true;
            $_SESSION['isAdmin']   =   true;
            }else{
     $_SESSION['administrator']   = false;
    }
    /*记录登陆状态
    Session::set(‘uid’,$user->uid);
    Session::set(‘userInfo’,$user);
    Cookie::set(‘username’,$userUsername,36000000);*/
    RBAC::saveAccessList();
    $this->success(‘登录成功!’);
}

public function login() {
   if(!isset($_SESSION[C('USER_AUTH_KEY')])) {
    $this->display();
   }else{
    $this->redirect(‘index’,'Index’);
   }
}

public function logout()
{
   if(isset($_SESSION[C('USER_AUTH_KEY')])) {
    unset($_SESSION[C('USER_AUTH_KEY')]);
    unset($_SESSION['administrator']);
    unset($_SESSION['userInfo']);
    unset($_SESSION['isAdmin']);
    $this->assign(“message”,’登出成功!’);
    $this->assign(“jumpUrl”,__URL__.’/login/’);
   }else {
    $this->assign(‘error’, ‘已经登出!’);
   }
   $this->forward();
}

/**
     +———————————————————-
     * 验证码显示
     +———————————————————-
     * @access public
     +———————————————————-
     * @return void
     +———————————————————-
     * @throws FcsException
     +———————————————————-
     */
function verify()
{
   import(“ORG.Util.Image”);
   if(isset($_REQUEST['adv'])) {
    Image::showAdvVerify();
   }else {
    Image::buildImageVerify();
   }
}

public function index()
{
   //如果通过认证跳转到首页
   redirect(__APP__);
}

/**
     +———————————————————-
     * 取得操作成功后要返回的URL地址
     * 默认返回当前模块的默认操作
     * 可以在action控制器中重载
     +———————————————————-
     * @access public
     +———————————————————-
     * @return string
     +———————————————————-
     * @throws ThinkExecption
     +———————————————————-
     */
function getReturnUrl()
{
   return __URL__.’?’.C(‘VAR_MODULE’).’=’.MODULE_NAME.’&’.C(‘VAR_ACTION’).’=’.C(‘DEFAULT_ACTION’);
}

}
?>

« Newer PostsOlder Posts »

Powered by LINUXQQ   ICP 10203065