新增自定义表单功能
管理员可以在后台自由创建各种各样的表单,如意见反馈表单、报名表单、调查表单等等。每个表单,管理员可以自定义字段让用户填写。
新增自定义文章模型功能
单纯的文章功能,已经满足不了日益发展的互联网的需求。因而2008版整站系统自定义文章模型功能应运而生,他的最大特色在于:每个栏目可以发表任意模型的内容,比如产品库、二手信息、房产信息、招聘信息等等,而这些模型都是可以自由创建的。这样就可以使得某个栏目变得丰富多彩,而不仅仅是单纯的文章了。
新增文集功能
每个会员可以自由创建自己的文集也即是专题,管理员可以鼓励带动会员创建各种各样有特色的专题。每篇文章可以归属于多个专题。这样就充分的发挥了网友的积极性与互动性。
新增广告销售系统、竞价广告功能
广告销售系统是对原来广告系统的功能增强,可以由用户自己购买广告,购买广告消费的是点卡,而点卡是需要充值的,这样就可以为网站实现创收营利。竟价广告是新增加的功能,用户可以用积分购买广告位,消费的积分越多就越靠前,这样就可以很好的让用户消费积分与赚取积分。
新增顶客,文章举报,收藏夹,文章推荐功能
收藏夹方便用户收藏自己感兴趣的文章,顶客、举报、推荐属于互动性的功能,方便会员协助管理员挑选出优秀文章与删除不好的文章。
新增友情链接用户申请功能
友情链接不仅可以分类,而且还可以让用户自助申请,同时还可以自由控制哪些在主页显示,还可以控制某个友情链接强制为文字方式显示。
新增自定义投票功能
可以自由创建无限组投票,而每个投票可以自定义任意多个选项,每个投票选项都对应有一个投票按钮代码与一个票数显示调用代码,把投票按钮代码与票数显示代码插入到你做好的投票页面,即可实现非常灵活的图形并茂的投票专题页面。
新增邮件群发,短消息群发功能
邮件群发功能需要设置一个你的邮箱,一般建议用QQ邮箱,设置后,即可给网站会员群发邮件。短消息功能可以实现与论坛的短消息互通,并且有提醒功能。
智能静态网页处理技术
用户发表文章时,可以自动生成文章内容页与列表页静态网页,用户删除文章时,可以自动删除,用户修改文章时,可以自动修改,管理员审核,删除,修改,移动,置顶等等操作时,也会自动的做相应的处理。
用户中心、管理后台操作界面进一步改进
前台用户管理中心与管理后台在界面与人性化操作方面都做了很大的改进。为以后功能的增加与用户安装更多的频道做了很大的便利。
前台发表文章功能进一步加强
前台可以自由控制游客与会员只能使用某些表单选项,比如是否可以发表框架网页,是否可以设置收费等等,并且会员可以在前台发表多页的文章,这也就可以很方便的实现小说连载功能。给网站带来了很大的灵活性与扩展性。同时还可以自由控制哪些用户组需要输入验证码,等等
更多细节的完善与功能增强
增加关键字管理、增加自定义采集参数分页、用户组的权限进行了更详细的划分、增加来源地址的入库、出错提示页面的美化、标签功能的进一步完善、内容页增加打印,字体大小与简繁体的切换等等
PHP168:服务器配置指南
如何配置服务器使得调大内存使用量,运行高负荷的程序
如果你在后台有时备份中途出现白屏.那说明你的服务器设置单个程序所占用的内存太小.此时需要改大些.
修改文件php.ini
查找
memory_limit = 8M
把右边的8M改成30M
然后重启服务器才能生效.
如何配置PHP服务器
手工配置PHP服务器是很麻烦的.
需要安装的组件有:php,mysql,gd库,zend,并且还要修改不少文件.一般不推荐用户手工配置,一般推荐用户使用PHP服务器套件.
下载地址: 点击下载
大家下载回来后.双击即可完全所有步骤的安装,非常的方便.不用再设置任何地
如何配置服务器使得程序可以采集数据
要想采集外面的文章数据.你必须设置你的服务器
修改文件php.ini
查找
allow_url_fopen
把右边的Off改成On
然后重启服务器才能生效.
如何配置服务器使得可以上传大文件,默认只支持2M
要想上传大于2M的文件,你必须修改服务器配置,修改文件php.ini
查找
upload_max_filesize
他右面的数值默认是2M 你改成100M即可
修改后,还要重启服务器才能生效.
虚拟主机示例
在一个IP地址上运行多个基于域名的web站点您的服务器有只一个IP地址,而在DNS中有很多域名(CNAMES)映射到这个机器。您而您想要在这个机器上运行[url]www.example.com和www.example.org[/url]两个站点。
注意在您的Apache服务器配置中创建一个虚拟主机并不会自动在您的DNS中对主机名做相应更新。您必须自己在DNS中添加域名来指向您的IP地址。否则别人是无法看到您的web站点的。您可以在您的hosts文件中添加这一条目来进行测试,但这种方法仅适用于那些有这些hosts文件的机器来使用。
服务器配置
- 确保Apache在监听80端口
- 为虚拟主机在所有IP地址上监听
<VirtualHost *:80>
DocumentRoot /www/example1 ServerName www.example.com
- 你可以在这里添加其他指令
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2 ServerName www.example.org
- 你可以在这里添加其他指令
</VirtualHost>
因为星号匹配所有IP地址,所以主服务器不接收任何请求。因为www.example.com首先出现在配置文件中,所以它拥有最高优先级,可以认为是默认或主服务器。这意味着如果一个请求不能与某个ServerName指令相匹配,它将会由第一个<VirtualHost>段所伺服。
注意如果您愿意,您可以用确定的IP地址来取代"*"。在这种情况下,VirtualHost的参数必须与NameVirtualHost的参数相符:
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
- 其他 ...
上述配置就是您在绝大多数情况下使用基于域名的虚拟主机时将要用到的。事实上,仅在一种情况下这样的配置不会让您满意:您想为不同的IP地址或是端口提供不同的内容。
在多于一个IP的情况下使用基于域名的虚拟主机。注意在这里讨论的任何技术都可以推广到使用任意数量的IP地址。
服务器有两个IP地址。一个(172.20.30.40)用于主服务器server.domain.com ,另外一个(172.20.30.50)用于构建两个或多个虚拟主机。
服务器配置 Listen 80
- "主"服务器运行于:172.20.30.40
- 这是另外一个IP地址
<VirtualHost 172.20.30.50>
DocumentRoot /www/example1 ServerName www.example.com
- 你可以在这里添加其他指令 ...
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2 ServerName www.example.org
- 你可以在这里添加其他指令 ...
</VirtualHost>
任何不是针对172.20.30.50的请求都将由主服务器来伺服。而提交给172.20.30.50却没有主机名或没有"Host:"头的请求,都将由www.example.com伺服。
在不同的IP的地址(比如一个内部和一个外部地址)上提供相同的内容服务器有两个IP地址(192.168.1.1和172.20.30.40)。这个机器位于内部(局域网)网络和外部(广域网)之间。在外部,域名server.example.com指向外部地址(172.20.30.40),而在内部则指向内部地址(192.168.1.1)。
服务器可以为来自内部和外部的请求提供同样的内容,您只需要一个<VirtualHost>配置段就可以了。
服务器配置 NameVirtualHost 192.168.1.1 NameVirtualHost 172.20.30.40
<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/server1 ServerName server.example.com ServerAlias server
</VirtualHost>
现在,从不同的网络提交的请求都会由同一个<VirtualHost>段来伺服。
注意在内网中,您可以使用server这个名字来代替server.example.com这个全名。
跟上面一样,在上述的例子里,您可以用"*"来代替具体的IP地址,这样就可以对所有的地址都返回相同的内容了。
在不同的端口上运行不同的站点如果您想让同一个IP的不同端口伺服多个域名。您可以借助在NameVirtualHost指令中定义端口的方法来达到这个目的。如果您想使用不带"name:port"的<VirtualHost name:port>或是直接用Listen指令,您的配置将无法生效。
服务器配置 Listen 80 Listen 8080
NameVirtualHost 172.20.30.40:80 NameVirtualHost 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
ServerName www.example.com DocumentRoot /www/domain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.com DocumentRoot /www/domain-8080
</VirtualHost>
<VirtualHost 172.20.30.40:80>
ServerName www.example.org DocumentRoot /www/otherdomain-80
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
ServerName www.example.org DocumentRoot /www/otherdomain-8080
</VirtualHost>
建立基于IP的虚拟主机一个有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名[url]www.example.com和www.example.org[/url]的配置如下:
服务器配置 Listen 80
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1 ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.50>
DocumentRoot /www/example2 ServerName www.example.org
</VirtualHost>
如果存在主服务器,那么对没有出现在任一个<VirtualHost>段中的请求(比如,对localhost的请求)都会由主服务器来伺服。
混用基于端口和基于IP的虚拟主机如果您的服务器有两个IP地址(172.20.30.40和172.20.30.50)分别对应域名[url]www.example.com和www.example.org[/url] 。对每个域名,您都希望在80端口和8080端口发布您的网站。您可以这样配置:
服务器配置 Listen 172.20.30.40:80 Listen 172.20.30.40:8080 Listen 172.20.30.50:80 Listen 172.20.30.50:8080
<VirtualHost 172.20.30.40:80>
DocumentRoot /www/example1-80 ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
DocumentRoot /www/example1-8080 ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80 ServerName www.example.org
</VirtualHost>
<VirtualHost 172.20.30.50:8080>
DocumentRoot /www/example2-8080 ServerName www.example.org
</VirtualHost>
混用基于域名和基于IP的虚拟主机您想在一些地址上配置基于域名的虚拟主机而在另外一些地址上配置基于IP的虚拟主机。
服务器配置 Listen 80
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
DocumentRoot /www/example1 ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example2 ServerName www.example.org
</VirtualHost>
<VirtualHost 172.20.30.40>
DocumentRoot /www/example3 ServerName www.example3.net
</VirtualHost>
- IP-based
DocumentRoot /www/example4 ServerName www.example4.edu
</VirtualHost>
<VirtualHost 172.20.30.60>
DocumentRoot /www/example5 ServerName www.example5.gov
</VirtualHost>
将<Virtual_host>和mod_proxy模块一起使用下面的例子允许一个前端机器代理一个运行在其他机器上的虚拟主机。在如下示例中,在192.168.111.2机器上配置了一个同名的虚拟主机。这样,万一在同一台机器上代理了多个主机名,ProxyPreserveHost On 指令能确保指定的主机名顺利通过代理。
<VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://192.168.111.2 ProxyPassReverse / http://192.168.111.2/ ServerName hostname.example.com </VirtualHost>
使用"_default_"虚拟主机为所有端口配置"_default_"虚拟主机这样配置可以捕获所有指向没指定的IP地址和端口的请求。比如:一个没被任何虚拟主机使用的地址/端口对。
服务器配置 <VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>
这样一个使用通配符端口的默认虚拟主机可以有效的防止请求被主服务器接收。
如果一个地址/端口对已经被一个基于域名的虚拟主机使用,那么"_default_"虚拟主机决不会处理发向这个地址/端口对的请求。如果一个"Host:"请求头中包含未知信息,或者干脆就没有,那么它会被第一个基于域名的虚拟主机(也就是在配置文件中最先出现的使用了那个地址/端口对的虚拟主机)处理。
您可以用AliasMatch或RewriteRule来重写任何请求,使它指向一个简单信息页面(或脚本)。
为不同的端口配置"_default_"虚拟主机与第一种一样,但我们想让服务器侦听很多端口而第二个"_default_"虚拟主机单独侦听80端口。
服务器配置 <VirtualHost _default_:80>
DocumentRoot /www/default80
- ...
<VirtualHost _default_:*>
DocumentRoot /www/default
- ...
侦听80端口的"_default_"虚拟主机(必须出现在所有使用通配符端口的虚拟主机之前)会捕获所有发向一个未指定的IP地址的请求。主服务器将不会用于伺服任何请求。
为单独一个端口配置"_default_"虚拟主机如果我们只想在80端口上建立唯一的一个"_default_"虚拟主机,我们应该这样配置:
服务器配置 <VirtualHost _default_:80> DocumentRoot /www/default ... </VirtualHost>
发向一个未指定地址的80端口的请求将会由这个虚拟主机伺服;而发向未设定地址的其他端口的请求则由主服务器伺服。
将一个基于域名的虚拟主机移植为一个基于IP的虚拟主机如果一个具有www.example.org域名的虚拟主机(就是基于域名配置示例中的第二个)得到了自己的IP地址。为了避免一些域名服务器或代理服务器在移植期间仍对这个域名做老的解析,我们可以采用一种过渡方法:同时提供新旧两个IP地址的解析。
达到这个目的很简单。因为我们只要简单的把新地址(172.20.30.50)加入VirtualHost指令就行了。
服务器配置 Listen 80 ServerName www.example.com DocumentRoot /www/example1
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40 172.20.30.50>
DocumentRoot /www/example2 ServerName www.example.org
- ...
<VirtualHost 172.20.30.40>
DocumentRoot /www/example3 ServerName www.example.net ServerAlias *.example.net
- ...
现在这个虚拟主机就可以用新地址(表现为一个基于IP的虚拟主机)和旧地址(表现为一个基于域名的虚拟主机)同时进行访问了。
使用ServerPath指令如果我们在同一个服务器上运行了两个基于域名的虚拟主机。为了匹配正确的虚拟主机,客户端必须发送正确的"Host:"头。而旧的使用HTTP/1.0的客户端无法发送这样的头,这样Apache就无法辨别客户端想要连接哪个虚拟主机(会用主虚拟主机来伺服这个请求)。为了尽量提供向下兼容性,我们可以提供一个主虚拟主机来返回一个页面,在页面中加入指向基于域名的虚拟主机的URL前缀的链接。
服务器配置 NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
- 主虚拟主机
- ...
<VirtualHost 172.20.30.40> DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld ServerPath /sub1/ RewriteEngine On RewriteRule ^(/sub1/.*) /www/subdomain$1
- ...
<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub2 ServerName www.sub2.domain.tld ServerPath /sub2/ RewriteEngine On RewriteRule ^(/sub2/.*) /www/subdomain$1
- ...
由于ServerPath指令的作用,发送到http://www.sub1.domain.tld/sub1/的请求总会被sub1-vhost所伺服。如果客户端发送了正确的"Host:"头,发送到http://www.sub1.domain.tld/的请求只会被sub1-vhost所伺服。如果没有发送"Host:"头,客户端将会得到从主虚拟主机发送的信息页面。
请注意,这里还有一点小问题:如果客户端没有发送"Host:"头,发送到http://www.sub2.domain.tld/sub1/的请求还是会被sub1-vhost所伺服。
RewriteRule指令用以确保正确发送了"Host:"头的客户端可以任意使用这两种URL变量,比如说:使用或不使用URL前缀。
PHP168:常见问题
设置标签幻灯片不能正常显示的暂时解决办法
有时候设置幻灯片可能不能正常显示。给大家一个暂时的解决办法。造成这个问题的原因是:
因为上传的图片大于后台设置的图片尺寸。而当上传的图片尺寸小于或等于后台设置的尺寸的时候就正常。所以解决这个问题只要在后台设置的图片尺寸大于所要上传的图片的尺寸即可正常显示。
忘记密码后,如何登录后台?(强制进入后台)
如果整合后进不了整站后台,此时,请修改整站文件admin/global.php
查找
$ForceEnter=0; //把0改成1将强制进入后台
替换成
$ForceEnter=1; //把0改成1将强制进入后台
通过这个方法就能进入后台了.这样的话.你就新注册一个用户.把用户改成管理员吧.
到最后,记得改回去.不然大家都能进你的后台
如何设置首页标签,即是如何控制显示首页要显示的内容
进入后台
系统操作->主页/专题页/标签
选择:更新(标签)内容
然后点击蓝色的模块即可.
为什么调用论坛的贴子出现乱码现象?
那是因为你没有选择跟论坛一样的数据库编码,你安装的时候,安装的时候必须要跟论坛选择一样的数据库编码
关于主页调用标签后无法显示标题颜色的解决方法
请下载下面的压缩包,覆盖inc/label_funcation.php文件即可.点击下载
加密栏目无法登录的解决方法
解压下面的文件覆盖根目录下面的global.php文件即可.点击下载
换空间后,如何转移数据?
第一步,在旧空间的后台备份数据
第二步,把备份的数据与整站的PHP程序文件一起移动新空间
第三步,还原数据,在地址栏目输入你之前备份的数据库目录,然后按操作输入新空间的数据库帐号密码即可还原数据.数据库目录是/cache/mysql_bak/你备份的随机目录/
第四步,修改整站的数据库配置文件php168/mysql_config.php
把里边的
$dbhost = 'localhost'; // 数据库服务器(一般不必改)
$dbuser = '数据库用户名';
$dbpw = '数据库密码';
$dbname = '数据库名';
改换成新空间的数据库配置参数,这些参数需要空间商提供,修改的时候,必须注意千万不要把单引号'删除
$dbcharset = ; / / 数据库编码,如果不正常,你可以设置为gbk或big5或utf8
这一项很关键,如果你以前的服务器数据库版本跟新空间的数据库版本一样的话,就不用修改,如果不相同的话,就必须要修改.
不修改的话,那网站可能是乱码,此时你删除此参数,再看看是否能正常,如果不能正常的话,请把他依次换成gbk,utf8,big5,utf8试试,一般来说,总有一个适合你的
关于论坛使用二级域名,而无法同步登录的问题解决方案
如果你使用了类似官方:http://bbs.php168.com这样的二级域名,做为论坛的访问地址.
而整站是一级域名.如http://www.php168.com
这种情况.要想实现同步登录的话.请必须设置域名的有效范围为域名 php168.com
第一步.修改论坛的后台核心基本设置
COOKIE有效域名 比如可能会有人使用 http://phpwind.net访问您的论坛这时您可以设置为 .phpwind.net 或留空
注:请勿随意更改此项设置,否则将可能导致无法登录论坛等异常现象
他的右边.输入你的域名.比如 php168.com 不能加入WWW 更不能加入http:// 只能为 php168.com
论坛设置好后.整站也要设置
整站后台核心设置那里
COOKIE域名:
输入
php168.com
只有这样,设置了有效的域名后.才能实现二级域名的同步登录.否则是没办法实现同步登录的
====================COOKIE有效域名:[size=+0]要么留空,要么输入你访问网站的国际域名,如php168.com,前面不能加www.如果你使用IP访问整站的话,必须要留空,或者是输入IP进去。如果你的网站更换了国际域名。这里必须跟着修改,否则前台会员将不能登录。如果整合论坛后,发现跟论坛不能同步登录的话,你必须在这里设置国际域名,如php168.com,论坛也同样的要设置国际域名。DISCUZ论坛的设置方法是:修改文件/bbs/config.inc.php查找cookiedomain把他右边的值设置为你的国际域名.PHPWIND论坛的设置方法是:登录后台,在核心设置那里查找“COOKIE有效域名”然后填入你的国际域名即可,而“COOKIE有效目录”那一项,只能是输入斜杠/ 注意:http://php168.com与http://www.php168.com属于不同的COOKIE作用域名,如果你右边留空的话,在这个网址http://php168.com登录的话,再用http://www.php168.com这个网址访问,是显示没登录的。所以此时也必须要设置COOKIE的国际域名。当然http://www.php168.com与http://***.php168.com这类的二级域名也是属于不同的COOKIE作用域,此时也必须要在右边设置php168.com作为国际域名。而不能留空
MYSQL出错代码及出错信息对照
mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成。错误之处,请大家指正。
1005:创建表失败
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1010:不能删除数据目录导致删除数据库失败
1011:删除数据库文件失败
1012:不能读取系统表中的记录
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1062:字段值重复,入库失败
1169:字段值重复,更新记录失败
1177:打开数据表失败
1180:提交事务失败
1181:回滚事务失败
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
1205:加锁超时
1211:当前用户没有创建用户的权限
1216:外键约束检查失败,更新子表记录失败
1217:外键约束检查失败,删除或修改主表记录失败
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功能
mysql常见错误提示及解决方法
130 :文件格式不正确。(还不是很清楚错误的状况)
145 :文件无法打开。
1005:创建表失败。
1006:创建数据库失败。
1007:数据库已存在,创建数据库失败。
1008:数据库不存在,删除数据库失败。
1009:不能删除数据库文件导致删除数据库失败。
1010:不能删除数据目录导致删除数据库失败。
1011:删除数据库文件失败。
1012:不能读取系统表中的记录。
1016:文件无法打开,使用后台修复或者使用 phpmyadmin 进行修复。
Quote:开始=>所有程序=>附件=>命令提示符 输入 mysql 所在硬盘盘符 cd mysql 所在目录 cd bin 输入 myisamchk -f D:usr/local/mysql/data/bbs/PW_members.MYI ps : D:usr/local/mysql/data/bbs 是你论坛数据库的路径 -f 根据具体情况选择,一般也可以选择 -r 注意你的 系统C盘或放数据库的硬盘空间是否足够,一般小于 1G 很容易出现错误。 或用mysqlcheck命令进行修复。具体的方法:利用命令行进入mysql/bin目录,执行mysqlcheck -o -r phpwind -uroot -p 其中phpwind是你数据库的名称,root是你的数据库用户名,然后会提示你输入密码。然后就会修复你的数据库。1017:服务器非法关机,导致该文件损坏。
1020:记录已被其他用户修改。
1021:硬盘剩余空间不足,请加大硬盘可用空间。
1022:关键字重复,更改记录失败。
1023:关闭时发生错误。
1024:读文件错误。
1025:更改名字时发生错误。
1026:写文件错误。
1030:可能是服务器不稳定。(具体原因不是很清楚)
1032:记录不存在。
1036:数据表是只读的,不能对它进行修改。
1037:系统内存不足,请重启数据库或重启服务器。
1038:用于排序的内存不足,请增大排序缓冲区。
1040:已到达数据库的最大连接数,请加大数据库可用连接数。
Quote:在my.ini 修改max_connections=100为max_connections=1000或更大,重启mysql1041:系统内存不足。
1042:无效的主机名。
1043:无效连接。
1044:数据库用户权限不足,请联系空间商解决。
1045:数据库服务器/数据库用户名/数据库名/数据库密码错误,请联系空间商检查帐户。
Quote:方法:确保论坛data目录下的sql_config.php用户名与密码都正确.如果用户忘记了数据库的密码,可以按如下方式进行密码的修改:如果 MySQL 正在运行,首先停止。启动 MySQL :bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入 MySQL 了。然后就是 >use mysql>update user set password=password("new_pass") where user="root";>flush privileges;1046:没有选择数据库。
1048:字段不能为空。
1049:数据库不存在。
1050:数据表已存在。
1051:数据表不存在。
1054:字段不存在,自行建立字段。
1060:字段重复,导致无法插入这个字段。
1062:字段值重复,入库失败
Quote: 1.如果出类似主码为"65535"的错误,可以查看相关表的自增字段,将字段值改在就可以 2.确保相关数据表中主码重复的字段是否存在,如果存在删除这条记录 3.备份数据库,修复相关表(注:这种情况比较常见,如pw_posts表,对表进行修复的时候不要忘记备份).1064:MySQL 不支持错误提示中的编码。
1065:无效的 SQL 语句,SQL 语句为空。
1067:MySQL 版本为 5,不支持空的默认值。
1081:不能建立 Socket 连接。
1114:数据表已满,不能容纳任何记录。
1115:设置的字符集在 MySQL 并没有支持。
1116:打开的数据表太多。
1129:数据库出现异常,请重启数据库。
1130:连接数据库失败,没有连接数据库的权限。
1133:数据库用户不存在。
1135:可能是内存不足够,请联系空间商解决。
1141:当前用户无权访问数据库。
1142:当前用户无权访问数据表。
1143:当前用户无权访问数据表中的字段。
1146:数据表缺失,请恢复备份数据
1147:未定义用户对数据表的访问权限。
1149:SQL 语句语法错误。
1158:网络错误,出现读错误,请检查网络连接状况。
1159:网络错误,读超时,请检查网络连接状况。
1160:网络错误,出现写错误,请检查网络连接状况。
1161:网络错误,写超时,请检查网络连接状况。
1169:字段值重复,更新记录失败。
1177:打开数据表失败。
1180:提交事务失败。
1181:回滚事务失败。
1193:不支持字符集限定(SET NAMES)。
1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库。
1205:加锁超时。
1211:当前用户没有创建用户的权限。
1216:外键约束检查失败,更新子表记录失败。
1217:外键约束检查失败,删除或修改主表记录失败。
1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器。
1227:权限不足,您无权进行此操作。
1235:MySQL版本过低,不具有本功能。
1250:客户端不支持服务器要求的认证协议,请考虑升级客户端。
1251:Client 不能支持 authentication protocol 的要求 Client does not support authentication protocol requested by server; consider upgrading MySQL client
Quote:方法1:mysql> SET PASSWORD FOR -> ' some_user '@' some_host ' = OLD_PASSWORD(' newpwd '); 结合我们的实际情况,在 MySQL Command Line Client 下运行: set password for root@localhost = old_password('123456');方法2:mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') -> WHERE Host = 'some_host' AND User = 'some_user';mysql> FLUSH PRIVILEGES;上面红色的部分请按自己实际情况修改。1267:不合法的混合字符集。
2002:服务器端口不对,请咨询空间商正确的端口。
2003:MySQL 服务没有启动,请启动该服务。
2008:MySQL client ran out of memory 错误指向了MySQL客户mysql。这个错误的原因很简单,客户没有足够的内存存储全部结果。
2013:远程连接数据库是有时会有这个问题,MySQL 服务器在执行一条 SQL 语句的时候失去了连接造成的。
10048:
Quote:建议在my.ini文件中修改最大连接数, 把 mysql_connect() 方法都改成了 mysql_pconnect() 方法. 要修改mysql_pconnect(),可以在论坛的data目录的sql_config.php中 $pconnect = 0; //是否持久连接 修改成$pconnect = 1; 开启防刷新,严禁刷新太快.10055:没有缓存空间可利用
Quote:查看下你的C盘空间是否已经满,清除一些没有用的文件. 可以在后台的"论坛核心设置","核心功能设置"里"进程优化"开启,"GZIP 压缩输出"关闭.查找了一下10055(没有缓存空间可利用)出错的原因,分析了my.ini的配制文件,在my.ini中如下:default-storage-engine=INNODBinnodb_additional_mem_pool_size=2Minnodb_flush_log_at_trx_commit=1innodb_log_buffer_size=1Minnodb_buffer_pool_size=10Minnodb_log_file_size=10Minnodb_thread_concurrency=8觉得可以把innodb_buffer_pool_size=10M 加大如100M或是1000M以上是对mysql5的如果是mysql4可以在my.ini中增加如下:#innodb_data_file_path = ibdata1:2000M;ibdata2:2000M#innodb_data_home_dir = c:ibdata#innodb_log_group_home_dir = c:iblogs#innodb_log_arch_dir = c:iblogs#set-variable = innodb_mirrored_log_groups=1#set-variable = innodb_log_files_in_group=3#set-variable = innodb_log_file_size=5M#set-variable = innodb_log_buffer_size=8M#innodb_flush_log_at_trx_commit=1#innodb_log_archive=0#set-variable = innodb_buffer_pool_size=16M#set-variable = innodb_additional_mem_pool_size=2M#set-variable = innodb_file_io_threads=4#set-variable = innodb_lock_wait_timeout=50把前面的#去了10061:
Quote:启动这台机器上的MySQL服务 如服务启动失败 一定是你的my.ini文件出了差错, MySQL服务不能正常启动 你删除了它后,MySQL就会按其默认配置运行, 那就没有问题了以上资料根据网上各方面资料整合而成。有解释错误的话,请大家跟帖,我会加以修正。以上方法不一定有效,如果大家有其它的解决方法也可以提出来,让我们一起来完善! 778 2007-01-07 16:11 安装出错:1251,1045,指定的数据库不存在解决方法1251
Quote:Connect(0) to MySQL failedThe URL Is:http://localhost/install.phpMySQL Server Error:Client does not support authentication protocol requested by server; consider upgrading MySQL client ( 1251 )You Can Get Help In:http://www.phpwind.net解决方法:开始-程序- MySQL-MySQL Server 5.0-MySQL Command Line Client输入 mysql>set password for root@"localhost"=old_password('123456'); 说明:root为用户名,123456为密码1045
Quote:The URL Is:http://localhost/install.phpMySQL Server Error:Access denied for user 'ODBC'@'localhost' (using password: no) ( 1045 )You Can Get Help In:http://www.phpwind.net解决方法:添加ODBC和localhost用户,密码:空 全部权限,操作全部数据库指定的数据库不存在
Quote:指定的数据库 不存在,且您无权限建立,请联系服务器管理员!解决方法:打开IIS-目录安全-编辑把“IUSR_XXXX”修改成root 确定退出这个时候就可以正常安装了,安装完成后记得把IIS-目录安全-编辑改回成“IUSR_XXXX” 1045
Quote:The URL Is:http://localhost/install.phpMySQL Server Error:Access denied for user 'root'@'dbhost' (using password: NO) ( 1045 )You Can Get Help In:http://www.phpwind.net解决方法:在你的论坛目录上点右键,选择属性----安全----高级填加Everyone,给予完全控制权限,并钩选下面的允许将来自父系的可继承权限传播给1045
Quote:The URL Is:http://localhost/install.phpMySQL Server Error:Access denied for user '****'@'dbhost' (using password:YES) ( 1045 )You Can Get Help In:http://www.phpwind.net解决方法:确保论坛data目录下的sql_config.php用户名与密码都正确.如果用户忘记了数据库的密码,可以按如下方式进行密码的修改:如果 MySQL 正在运行,首先停止。启动 MySQL :bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入 MySQL 了。然后就是 >use mysql>update user set password=password("new_pass") where user="root";>flush privileges;在数据库的用户名和密码正确的情况下,要确保data目录有写入的权限。对于windows主机可以设置users用户组在data目录有写入的权限。对类linux系统可以用chmod -r 777 data来修改关于整合论坛后,由于数据库编码不一样,出现乱码的处理办法
由于论坛默认一般是GBK,而整站是latin1,由于编码不一样,进整站后台就会提示出错,有些用户也会在整站出现乱码的现象。 处理办法。把整站的数据库编码改为跟论坛一样的编码GBK,具体操作如下:
进入整站后台----数据库工具,备份数据库--全选,立即备份,记得数据库的存放地址,如:cache/mysql_bak/2007-08-25.7ec FTP连接到空间,修改php168/mysql_config.php这个文件里的,$dbcharset = 'latin1';改为:$dbcharset = 'gbk'; 然后还原数据库,还原方法,假如你备份的数据库的地址是:cache/mysql_bak/2007-08-25.7ec 就输入:http://你的网址/cache/mysql_bak/2007-08-25.7ec/index.php 数据库编码:填写:gkb 这样整站和论坛的数据库编码一样了就没问题了。
如果是先安装论坛,已经知道论坛是用GBK,在安装整站时直接选择GBK,这样整合就不会有这问题的。
PHP168:整站采集教程
第一步:找到一个要采集的网站的列表页.如: http://wind.yinsha.com/ashow.php?sid=2

然后在后台采集参数那里新建一条采集规则.
规则名称:
这一项可以自由定义.
文章列表有多页,每页换一行
这一项.你就复制多个列表页的网址进去吧,比如
http://wind.yinsha.com/ashow.php?sid=2
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=2
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=3
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=4
自定义正则语法规则:
这一项是最关键的.
打开任意一页被采集的列表页如
http://wind.yinsha.com/ashow.php?sid=2
查看网页源代码,然后把所有代码粘贴到Dreamweaver网页编辑器(必须选择代码模式)里
粘贴后.选择编辑模式,然后随便选定一个标题,如下图

再切换到代码模式. 如下图

我们选定红色框住那部分代码做正则处理.
<img src=images/11.gif border=0> <a href="/a/2/200804/2008041513560754.htm" target=_blank>城市角落的暖意</a> </td> 处理后变成
<img src=images/11.gif border=0> <a href="{url=NO"}" target=_blank>{title=NO<}</a> </td> 以上这段代码就是我们最终需要的正则规则了.
讲解如下:
标题换用了
{title=NO<}
链接地址换用了
{url=NO"}
换用的意思.就是为了实现通配符的意思.而通配符如何定义呢?
上面的固定格式如下
{变量名=规则}
这是一个固定的格式.
大家最需要设置的就是大括号里的规则.因为变量名就几个.如url title content
规则原理是这样的.
NO后面跟着什么字符.就代表不包含这样的字符.大家可以知道.地址当中不可能包含有"双引号的.所以我们定义为
{url=NO"}
对标题而言.标题里不可能包含有<这个符号的.所以我们定义为
{title=NO<}
不包含什么字符.我们如何判断呢.遵循一个就近右边原则.就是看他的周围是什么字符.那它就不包含此字符.
比如上面的
href="地址"
如果换成
href='地址'
这种单引号的话,那就要相应的把替换换成
{url=NO'}
又如果.连单引号与双引号都不是的话,如
href=地址 title=>
他右边是空格.此时替换变成
{url=NO }
就是不含有空格了.
又如果是这种情况呢
href=地址>
他的右边是>号此时就要换成
{url=NO>}
通过以上几个例子,大家可以看出来.就是看他右边是什么符号.就输入什么符号.就近右边原则.
标题的取法跟地址一样的道理.不过标题一般都是采用<符号就比较通用了(个别情况除外,会另外有进阶教程).
这样设置好正则规则后,就可以把标题采集回来了.
然后再设置如何采集内容.
内容的采集.一般也就设置一项足够了.也就是正则规则.
随便打开一个被采集网站的内容页.如
http://wind.yinsha.com/a/2/200801/2008011921152760.htm
同样的道理.查看网页源代码.复制源代码到Dreamweaver网页编辑器(必须选择代码模式)里
然后再切换到编辑模式.
此时,如果文字内容太多的话,可以先删除一部份,必须在编辑模式下删除,主要是方便查看.
删除部分内容后.选中文章内容.
然后切换到代码模式.如下图


以上是删除了部份文章内容.方便查看.并且用同样的方法.查看了另一篇文章.目的是为了实现对比.查找通配替换.
我们可以看到.他的通配规则是如下

以上这段就是我们最终需要的正则规则了.
内容的正则格式为什么=号后面是*号.而不是NO符号呢.那是因为内容的字符串太多了.也太复杂了.统一使用*号.也就是固定这样使用.
最后大家值得注意的几点是.取某段代码做正规的时候.不能太少.太少的话.就有可能跟其他地方有重复的情况出现.也就是不准确.也不能太多.太多的话.就有可能不是通用了.成不了通配符了.适可而止.多次偿试. 另外注意不能有多余的空格与换行符
大家可以自己采集一下这个网站:http://wind.yinsha.com/ashow.php?sid=2
这个站比较有代表性.






整站采集教程---如何过滤内容的广告内容
如何过滤内容的画中画广告内容?
一般画中画广告内容都是一段JS代码.比如
<SCRIPT LANGUAGE="JavaScript" src='地址'></SCRIPT>
此时你需要修改采集参数中的内容规则,选择(如下图)
显示不常用的高级设置(一般不用)

在以上
要替换文章中的字符:
这一项输入如下代码
JavaScript" src='|JavaScript" src='abc
请注意你要采集文件的这些字母的大小写.
输入一个ABC目的是破坏他的路径.
有的时候.他不是js代码.而是其他DIV 或者是table的话.你就输入以下代码
<div|<div style="display:none;"<table|<tablestyle="display:none;"目的就是为了隐藏它,不要显示出来
一般都是以上这两种情况的.
原载: 飞酷经典资源网 网址:
版权所有.转载时必须以链接形式注明作者和原始出处及本声明








最新回复
17xmm (2008-8-28 23:21:42)
入门级
制作PHP168的风格,完全不需要懂PHP程序.只须要懂HTML制作就行了.
PHP168整站系统与其他频道系统的风格原理都是一样的.下面重点讲解整站的风格制作.
一套完整的风格必须指定一个唯一的关键字即不能与其它风格的关键字有雷同,并且包含以下文件与目录
比如默认的风格,它的关键是: default 然后这个风格的相关目录名都以此为标准.
/php168/style/default.php 这是风格的配置文件,必须有的,
/images/default/ 这是风格图片目录,风格的相关图片都在这里,另外还有一个CSS文件
/template/default/ 这是模板目录,如果自已另外做的风格,可以没有这个目录.当你的风格没有对应的模板文件时,就会从系统默认的模板目录去读取.
/cache/label/default.php 这是风格的标签设置参数的缓存.可以没有.目的是方便别人使用你的风格里的标签设置.否则别人需要自己设置标签.
做风格的思路是这样的:
第一步,按你自己的思路去做好一个主页.列表页与内容页可做,可不做.但是在做的时候.必须要注意一点的是,必须确认你的主页可以切割成三部分,即是头部,底部,中间部分.因为程序会分三部分读取模板.最后组合成一个页面的.做到这个就可以了.所以在做的时候.其它完全可以不用考虑的.
第二步.也即是把你的HTML页面做好之后.就要进行图片与CSS的路径进行替换处理. 在这里,你需要为你的风格想好一个关键字,比如abc只能是英文或英文加数字.然后就进行图片与CSS的路径替换. 把所有图片及CSS的路径替换为 $webdb[www_url]/images/abc/ 其中$webdb[www_url]这个变量代表你的整站访问地址.通过这样替换.就可以得到你的图片的http://这样的绝对路径了.
第三步.即图片及CSS路径替换完毕之后.就需要对你的HTML主页进行分割了.分别割成三部分代码.即头部,底部,中间内容部分. 分别命名为head.htm foot.htm index.htm
第四步,即分割完毕之后,就需要给以上三个文件插入特定代码.使之成为模板.没插入特定代码之前.它只是普通的HTML页面,并不是真正的模板.
修改以上三个文件.分别在每个文件的头部插入如下代码
<!-- <?php print <<<EOT --> 然后,分别在每个文件的底部插入以一代码
<!-- EOT; ?> --> 这样,就成为真正的模板了.
第五步,HTML文件与图片目录的正确存放.建立图片目录与模板目录
images/abc/ 把用到的图片放到此目录
template/abc/ 把head.htm foot.htm index.htm这些模板放到此目录
php168/style/abc.php 创建这样一个文件.里边输入如下代码
<?php $styledb['name']='我的ABC风格'; $styledb['keywords']='abc'; ?> 通过以上五个步骤.就基本上把一个主页风格做好了.每新做一个风格,基本上都是这样的步骤的.以上我们只是制作了head.htm index.htm foot.htm 这三个模板.一般来说足够了.其它list.htm列表页 bencandy.htm内容页,我们没有制作的话.他就会读取系统默认目录的.即default目录的.其他页的制作原理一样.只是不需要做头部与底部了
进阶级
上一节讲解的是风格制作的入门.
这一节讲解一下风格制作的更深一步.
上一节所制作的风格.只适用于主页.其它页面的话.将会显示不正常的. 怎么样才能把兼容性做好.保证其它页面正常呢?
第一步:制作风格前.把系统默认的css.css文件放进你的HTML页面头部里边.才开始制作你的HTML主页.
即加多一段代码
<link rel="stylesheet" type="text/css" href="images/css.css"> 然后你自己的CSS文件.可以另外做一个.比如说
<link rel="stylesheet" type="text/css" href="images/css2.css"> 或者也可以在images/css.css的底部紧跟着进行添加或修改.而不必新增加一个CSS文件.
只有这样.在默认的CSS.CSS基本上制作出来的HTML主页.才是兼容性最好的.照顾到了其它页面.
第二步:以上是CSS兼容性的处理问题.这一步是网页宽度的问题. 把HTML主页切割成三部分之后.需要在head.htm文件的底部插入如下代码:
<SCRIPT LANGUAGE="JavaScript"> <!--//目的是为了做风格方便 document.write('<div class="wrap">'); //--> </SCRIPT> 然后再在foot.htm文件的头部插入如下代码
<SCRIPT LANGUAGE="JavaScript"> <!--//目的是为了做风格方便 document.write('</div>'); //--> </SCRIPT> 以上的目的是为了可以自由调整网页中间内容部分的宽度
比如,通过修改以下参数实现
.wrap{ width:900px; } 第三步:再往head.htm里边添加一些功能代码
<SCRIPT LANGUAGE="JavaScript" src="$webdb[www_url]/images/default/inc.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript" src="$webdb[www_url]/images/default/default.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript" src="$webdb[www_url]/images/default/swfobject.js"></SCRIPT> 在</head>下一行添加如上代码.缺少以上脚本代码的话.某些页面的有些功能将失效.或者报错
如果需要下拉菜单的话.需要紧跟着下一行添加如下代码
<!--****************下拉菜单开始****************--> <!-- EOT; if($webdb[ShowMenu]){print <<<EOT --> <SCRIPT LANGUAGE="JavaScript" src="$webdb[www_url]/images/default/menu.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- EOT; @include(PHP168_PATH."php168/menu.js.php"); foreach($MenuArray AS $key=>$array){ $link_db=''; foreach($array AS $key1=>$value){ list($name,$url,$blank,$color,$lid)=explode("|",$value); if(ereg("^\/",$url)){ $url="$webdb[www_url]$url"; }elseif(!ereg("://",$url)){ $url="$webdb[www_url]/$url"; } $blank=$blank?"_blank":''; $color=$color?"$color":''; $link_db[]="<a href='$url' target='$blank' style='color:$color;'>$name</a>"; } $_showlink=implode("<br>",$link_db); print <<<EOT --> var Menu_$key = "$_showlink"; <!-- EOT; } print <<<EOT --> </SCRIPT> <!-- EOT; }print <<<EOT --> <!--****************下拉菜单结束****************--> 如果需要登录框的话.在需要显示的地方加入如下代码
<SCRIPT src="$webdb[www_url]/hack.php?hack=login&job=js"></SCRIPT> 如果需要添加后台设置好的导航菜单的话.在需要显示的地方加入如下代码
<!--****************主菜单开始****************--> <!-- EOT; $i=0; $detail=explode("\r\n",$webdb[guide_word]); foreach($detail AS $key=>$value){ $i++; $icon=$i>1?'|':''; list($name,$url,$blank,$color,$lid)=explode("|",$value); if(ereg("^\/",$url)){ $url="$webdb[www_url]$url"; }elseif(!ereg("://",$url)){ $url="$webdb[www_url]/$url"; } $blank=$blank?"_blank":''; $color=$color?"$color":''; if($webdb[ShowMenu])$showmenu=" "; print <<<EOT --> $icon <a href="$url" target="$blank" style="color:$color;" $showmenu>$name</a> <!-- EOT; } print <<<EOT --> <!--****************主菜单结束****************--> 第四步:修改文件foot.htm的最底部加入如下代码,实现页面的一些特定功能
<SCRIPT LANGUAGE="JavaScript"> <!-- clickEdit.init(); //--> </SCRIPT> 第五步:如果你不是授权用户也不是VIP用户的话,别忘了还需要在foot.htm的适当地方加入如下代码
Powered by <a href="http://www.php168.com" target="_blank">PHP168 {$php168_Edition}</a>
因为非授权用户与非VIP用户是不允许去除版权的.切记
这样,就基本上把整个网站的整体风格做好了.这样就兼容性比较完全了.
标签制作
这一节跟大家讲解一下PHP168的最大特色之一:标签
标签功能最强大.但制作却是最简单的.
怎么样强大呢?
设置一个标签即页面的某块内容.你可以调用PHP168系统的任何数据.并且可以自由控制显示的排序方式与显示条数等等.一个非常复杂的主页.就是由一个一个的标签组合而成的.
怎么样简单呢?
他的格式是
$label[abc]
其中abc是随意的字母.或是字母加数字或下画线..但必须是字母开头.一个有错.将会导致整个页面白屏.所以大家要小心翼翼.虽然说简单.但不小心的话.也是不行的.
在添加标签的时候.建议给他加一个大括号
{$label[abc]}
这样兼容性更好.不容易出乱子
一个页面的标签是不能雷同的.否则显示的内容就是一样的了.也就是说中括号里边的字母是任意的.但不能雷同的.
在你需要显示的地方.加入一个标签.然后就可以在整站后台调用整站的数据了.
比如一个最简单的主页如下
<!-- <?php print <<<EOT --> 这是标签一显示的内容$label[abc1] 这是标签二显示的内容$label[abc2] <!-- EOT; ?> --> 大家可以留意到这个主页的头部与底部都有一段特定代码.这是不能缺少的.否则就不是真正的模板.
列表页与内容页的制作
一般情况. 列表页与内容页都不需要制作.此时将调用系统默认的
即
template/default/list.htm
template/default/bencandy.htm
这两个页面.但是为了更具有个性化.更漂亮的话.你也可以制作 相对来说,内容页bencandy.htm是比较简单的.而list.htm稍为复杂些.
下面先讲解:bencandy.htm的制作.
首页特定代码是不可缺少的.
<!-- <?php print <<<EOT --> 内容页部分 <!-- EOT; ?> --> {$rsdb[title]} 标题
{$rsdb[username]} 录入者
{$rsdb[author]} 作者
{$rsdb[copyfrom]} 来源
{$rsdb[copyfromurl]} 来源网址
{$rsdb[content]} 文章的内容
{$showpage} 分页,针对有多页的文章而言有用
只要把以上变量插入到你模板的任意地方即可.非常简单的.
然后再讲解一下评论的调用.
把以下这段评论代码插入到需要显示的地方即可
<div id="comment"></div> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="16%"><span class="L">称 呼:</span><span class="R"></span></td> <td width="84%"><span class="R"> <input type="text" name="textfield2" id="comment_username" value="$lfjid"> </span></td> </tr> <!-- EOT; if(!$web_admin&&$groupdb[CommentArticleYzImg]){ $webdb[yzImgComment]=1; print <<<EOT --> <tr> <td width="16%"><span class="L">验 证 码:</span></td> <td width="84%"> <input id="yzImgNum" type="text" name="yzimg" size="8"> <img border="0" id="yz_Img" name="imageField" src="$webdb[www_url]/yzimg.php"> </td> </tr> <!-- EOT; } print <<<EOT --> <tr> <td width="16%"><span class="L">内 容:</span></td> <td width="84%"><span class="R"> <textarea name="textfield" cols="50" rows="5" id="comment_content" ></textarea> </span></td> </tr> <tr> <td width="16%"> <script language="JavaScript"> <!-- getcomment("$webdb[www_url]/comment_ajax.php?fid=$fid&aid=$aid"); cnt = 0; function quickpost(event) { if((event.ctrlKey && event.keyCode == 13)||(event.altKey && event.keyCode == 83)) { cnt++; if (cnt==1){ postcomment('$webdb[www_url]/comment_ajax.php?action=post&fid=$fid&aid=$aid') }else{ alert('内容正在提交...'); } } } //--> </script> </td> <td width="84%"><span class="R"> <input type="button" id="comment_submit" name="Submit" value="提交" class="button"> </span></td> </tr> </table> 大家务必注意的是
<div id="comment"></div>这个不能缺少.这是显示评论内容的代码.内容页的制作就是这么简单的.
下面再来讲解一下列表页的制作. 列表页相对来说复杂一些.因为大分类显示的方式与小栏目的显示是完全不一样的.
先讲小栏目的显示吧.
模板的头部特定代码用以下这个.底部特定代码不变.
<!-- <?php if($fidDB[config][ListShowType]!=1&&$fidDB[config][ListShowType]!=3){ $listdb_pic=ListPic($webdb[listPicRows]?$webdb[listPicRows]:4,$leng=30); //图片主题 } $listdb_pic || $hide_listpic='none'; //不存在图片主题的话.要把图片主题的边框隐藏 $listdb || $hide_listnews='none'; //如果是大分类的话,就不存在标题,就把标题框隐藏 !$listdb_moresort && !$listdb && !$fidDB[type] && $hide_listnews=''; print <<<EOT --> 如果想显示图片主题的话.在需要的地方插入以下代码
<!--****************************图片主题开始****************************--> <!-- EOT; foreach($listdb_pic AS $key=>$rs){ print <<<EOT --> <div class="listpic"> <p class=img><a href="bencandy.php?fid=$rs[fid]&id=$rs[aid]"><img width="120" height="90" src="$rs[picurl]" border="0"></a></p> <p class=title><A HREF="bencandy.php?fid=$rs[fid]&id=$rs[aid]" title='$rs[full_title]'>$rs[title]</A></p> </div> <!-- EOT; } print <<<EOT --> <!--****************************图片主题结束****************************--> 以下这段.就是仅显示文章标题列表的代码
<!-- EOT; foreach($listdb AS $key=>$rs){ $target=$rs[target]?'_blank':'_self'; print <<<EOT --> <a href="bencandy.php?fid=$rs[fid]&id=$rs[aid]" target="$target" title='$rs[full_title]'>$rs[title]</a> ({$rs[posttime]}) <!-- EOT; }print <<<EOT --> 把它插入到需要显示的地方即可
以下这段是显示分页的代码
<div class="page">$showpage</div> 如果觉得单纯的标题太简单.要显示图片+标题+内容的话.就换成以下这段代码
<!-- EOT; foreach($listdb AS $key=>$rs){ $rs[content]=get_word($rs[content],$fidDB[config][listContentNum]>0?$fidDB[config][listContentNum]:150); $target=$rs[target]?'_blank':'_self'; print <<<EOT --> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="list_sortTCP"> <tr> <td rowspan="2" width="13%" class="pic"><a href="bencandy.php?fid=$rs[fid]&id=$rs[aid]" title='$rs[full_title]'><img width="90" height="65" src="$rs[picurl]" border="0"></a></td> <td width="87%" class="title"><a href="bencandy.php?fid=$rs[fid]&id=$rs[aid]" target="$target" title='$rs[full_title]'><b>$rs[title]</b></a></td> </tr> <tr> <td width="87%" valign="top" class="content">{$rs[content]} ({$rs[posttime]}) </td> </tr> </table> <!-- EOT; } print <<<EOT --> 小栏目的制作方法基本就是这样.有一点必须要高度重视的是
<!---->里边的内容,是程序逻辑代码,你不要修改.除此之外的内容可以任意自由修改.
以下再来讲解一下大分类页的制作方法.
把以下这段代码添加到需要显示的地方即可
<!--****************************大分类显示子栏目开始****************************--> <table width="100%" border="0" cellspacing="0" cellpadding="0" id="AutoRows"> <!--EOT;$moreline=$webdb[ListSonline]>0?$webdb[ListSonline]:1;$array=array_chunk($listdb_moresort,$moreline);$moretdwidth=floor(100/$moreline)."%";$moreline>1&&$moretimedisplay='none';foreach($array AS $key2=>$array2){print <<<EOT--> <tr> <!--EOT;$iii=0;foreach($array2 AS $key=>$rss){$iii++;if($moreline>1&&$iii%$moreline==1){$tbstyle=" style='padding-right:2px;' ";}elseif($moreline>1&&$iii%$moreline==0){$tbstyle=" style='padding-left:2px;' ";}else{$tbstyle=" ";}print <<<EOT--> <td width="$moretdwidth" $tbstyle> <table border="0" cellspacing="0" cellpadding="0" class="dragTable" width="100%"> <tr> <td class="head"> <h3 class="L"></h3> <span class="TAG"><a href="list.php?fid=$rss[fid]">$rss[name]</A></span> <h3 class="R"></h3> <span class="more" style="float:right;"><a href="list.php?fid=$rss[fid]">更多...</A></span> </td> </tr> <tr> <td class="middle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <!--EOT;foreach($rss[article] AS $key1=>$rs){print <<<EOT--> <tr class="list_tr"> <td class="list_title"><a href="bencandy.php?fid=$rs[fid]&id=$rs[aid]">$rs[title]</a></td> <td align="right" class="list_time" style="display:$moretimedisplay;">({$rs[posttime]}) </td> </tr> <!--EOT;}print <<<EOT--> </table> </td> </tr> <tr> <td class="foot"> <h3 class="L"></h3> <h3 class="R"></h3> </td> </tr> </table> </td> <!--EOT;}print <<<EOT--> </tr> <!--EOT;}print <<<EOT--> </table> <!--****************************大分类显示子栏目结束****************************-->同样的道理.有一点必须要高度重视的是
<!---->里边的内容,是程序逻辑代码,你不要修改.除此之外的内容可以任意自由修改.
列表页的制作原理基本上就是这样.当然你还可以添加标签.使之变得更丰富多彩
登录框的处理
登录框默认是一条横的.但你可以通过CSS控制他成为多行,即方型.如给它框架一个DIV.并且定义一个ID为mylogin就可以进行CSS定义了.
<div id="mylogin"><SCRIPT src="http://1.com/45/hack.php?hack=login&job=js"></SCRIPT></div>使用以下CSS就可以使得成为多行.方框那样显示
<style>#mylogin{ width:200px;}#mylogin input{ width:100px; height:18px; border:1px #333 solid;}#mylogin .L_sub{ text-align:center;}#mylogin .login_sub{ width:50px; height:18px; border:1px #333 solid;}#mylogin span{ display:block;}#mylogin .L_passport{ text-align:right; padding-right:2em;}</style>关于更细节的设置.大家可以查看他的具体class进行样式定义.
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <form name="form1" method="post" action="$webdb[www_url]/login.php"> <tr> <td> <span class='L_passport'> 通行证 |</span> <span class="L_name"> 帐号: <input type="text" name="username" class="login_name"> </span> <span class="L_pwd"> 密码: <input type="password" name="password" class="login_pwd"> </span> <span class="L_sub"> <input type="submit" name="Submit" value="登录" class="login_sub"> </span><span class="L_reg"> <a href="$webdb[www_url]/reg.php">注册</a> | <a href="$webdb[www_url]/login.php">登录</a></span> </td> <input type="hidden" name="step" value="2"> <input class="radio" type="hidden" name="cookietime" value="86400" > </tr> </form></table>以上是未登录时的代码.以下是登录后的代码.
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="20"> <tr> <td align="left" style="padding-top:4px;"><span class="L2_name"> 欢迎你回来:<a style="color:#FF0000;">$lfjid</a></span> <span class="L2_msg"> $MSG </span> <span class="L2_info"> <a href="$webdb[www_url]/member/index.php?main=myarticle.php" target="_blank">我的文章</a> <a href="$webdb[www_url]/member/" target="_blank">个人信息</a></span> <span class="L2_out"> <a href="$webdb[www_url]/member/index.php?main=userinfo.php?job=edit" target="_blank">修改资料</a> <a href="$webdb[www_url]/login.php?action=quit">安全退出</a></span> </td> </tr></table>