本文目录一览:
- 1、discuz如何使用?
- 2、怎么进行discuz的二次开发
- 3、求一份自动备份mysql数据库的脚本。
- 4、Discuz!NT 和 Discuz! x
discuz如何使用?
cuz! 具备跨平台特性,可以运行于 Linux/FreeBSD/Unix 及微软 Windows 2000/2003 等各种操作系统环境下。我们已在软件中针对上述操作系统做了大量的测试和实地检验,保证 Discuz! 可以在上述系统中安全稳定的运行,但您仍然需要做好服务器操作系统级的安全防备措施,例如 Windows 用户需更改 MySQL for Windows 的初始 root 密码,避免跨目录的文件读写;类Unix 用户需避免使用过于简单的密码,避免跨用户目录的文件读写,做好服务器上其他相关软件(如 Sendmail, ftpd, httpd)等的安全防范,使用较新的软件版本等。
如果您租用虚拟主机,一般正规和技术力量较强的虚拟主机提供商会已经做好操作系统的各项准备,用户可不必关注此部分。
推荐使用 Linux/FreeBSD 操作系统,不仅完全免费,而且可以获得更好的稳定性和负载能力。如果使用 Windows 系统,请将 PHP 以 ISAPI(非 CGI)方式安装。
语言及数据库支撑环境要求
Discuz! 需要服务器上装有如下软件:
可用的 httpd 服务器(如 Apache, Zeus, IIS 等)
php 4.1.0 及以上
Zend Optimizer 2.5.7 及以上
MySQL 3.23 及以上(仅针对 MySQL 版 Discuz!)
以上软件除了 httpd 软件有可能需要购买以外,其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。
如果您租用虚拟主机,请咨询虚拟主机提供商,您的空间服务器是否已安装了上述软件。由于 Discuz! 的数据表具有前缀设计,因此通常情况下可以将 Discuz! 与其他软件安装在同一个数据库中,或采用不同的前缀名从而在同一个数据库中安装多个 Discuz! 论坛而不产生冲突。
您的 MySQL 数据库账号应当拥有 CREATE、DROP、ALTER 等执行权限,同时文件空间需不低于 2M,数据库空间不低于 5M,通常您的虚拟空间都会满足这个条件,以满足包括 Discuz! 在内的绝大多数网络软件的正常运行。如果您不了解具体情况,请咨询您的空间提供商。
安装可能用到的工具软件
Discuz! 开发组尽量使得安装步骤简单方便,但仍然可能会用到一些常用的工具软件。如果您通过网络将 Discuz! 软件上传到服务器上,您将可能需要一个 FTP 客户端软件。通过您的服务器 FTP 账号,使用该 FTP 客户端软件将相关文件上传到服务器上。同时您可能需要一个简单的文本文件编辑软件,用以对配置文件进行参数修改,一般操作系统自带的如 Windows 的“记事本”或第三方软件如 UltraEdit 等都能胜任。
Discuz! 要求使用 FTP 软件上传 php 文件时,使用二进制(BINARY)方式进行,否则将无法正常使用。
安装详细流程
第 1 步:上传
使用 FTP 软件登录您的服务器,建立一个单独的目录,或选择合适的位置,确保存放在此位置的文件能够被 web 请求所访问到,并且该目录中具有执行 PHP 代码的权限。将 Discuz! 文件包的 ./upload 目录中的全部文件和目录结构上传到服务器(注意是上传 upload 目录中的文件和目录,而不是上传包含 upload 目录本身的目录和结构)。
如果您仍然不了解应该上传哪些内容,请参考《文件及目录结构》中的说明。
Discuz! 要求使用 FTP 软件上传 php 文件时,使用二进制(BINARY)方式进行,否则将无法正常使用。有关二进制上传的具体细节,请参考《安装常见问题》中的说明。
第 2 步:设置目录属性
如果您的服务器使用 Windows 操作系统,可跳过这一步。
您在正式安装以前,需要设置相关的目录属性,以便数据文件可以被 Discuz! 正确的读写。使用 FTP 软件登录您的服务器,将服务器上以下的目录属性设置为 777。
./templates
./templates/default
./templates/default/*.*
./attachments
./customavatar
./forumdata
./forumdata/cache
./forumdata/templates
第 3 步:配置数据库信息
使用编辑器打开您本地机器上的默认配置文件(config.inc.php),看到以下的内容:
$dbhost = 'localhost'; // database server
// 数据库服务器
$dbuser = 'dbuser'; // database username
// 数据库用户名
$dbpw = 'dbpw'; // database password
// 数据库密码
$dbname = 'discuz'; // database name
// 数据库名
$adminemail = 'admin@your.com'; // admin email
// 论坛系统 Email
$dbreport = 0; // send db error report? 1=yes
// 是否发送数据库错误报告? 0=否, 1=是
请依据以上的注释配置空间服务商提供的数据库服务器、用户名、密码及数据库名。如果您使用自己安装的服务器环境,我们建议您在可能的情况下,尽量不要使用 root 账号,而依据 Discuz! 及服务器上其他软件的需要,单独为每个程序分配账号和数据库,以减少安全问题发生的可能。
请您了解:数据库参数我们也无法告诉您如何设置,需要根据服务器账号的实际情况而定。如果您不了解,请咨询您的空间服务商,他们会完整的告诉您具体的设置方法。
配置好参数设置后,请保存该文件(config.inc.php),并不要忘记将其上传到服务器上的论坛目录中,覆盖原有的默认配置文件。
第 4 步:执行安装脚本
您的安装已经进行到最后一步,请在浏览器中运行 install.php,即访问 您的域名/论坛目录/install.php 以完成最后的安装。
安装脚本会检查您的服务器系统环境、剩余空间、数据库环境,并具备一定的纠错功能。如果您在之前某一步骤操作有问题,通常安装脚本会发现并作以提示,请您根据提示再对安装过程进行检查。如果没有提示出问题,请您按照其中的说明,完成最后的安装。使用中的问题,请参考《使用指南》。
安装成功后,请通过 FTP 删除安装脚本(install.php),以避免被再次安装。
文件及目录结构
Discuz! 软件包通常以 tgz(tar.gz)或 zip 的格式压缩,绝大多数压缩软件可解开此类压缩格式的软件包,解压后的目录结构如下所示:
./users_guide.htm
./usersguide/
./upload/
*.php
install.php
config.inc.php
mail_config.inc.php
whatsnew.php
admin/
*.php
attachments/
customavatars/
forumdata/
templates/
cache/
templates/
default/
*.htm
*.lang.php
images/
attachicons/
avatars/
common/
default/
smilies/
stats/
include/
*.php
plugins/
./utilities/
repair.php
restore.php
testmail.php
upgrade(x).php
用户使用说明书(本文档)
用户使用说明书内容与图片目录
程序及相关文件(此目录中的内容需上传)
Discuz! 程序
Discuz! 安装脚本
论坛基本配置,安装前请修改本文件
邮件发送配置
网页新帖调用程序
系统设置程序目录
系统设置程序集
空目录,请设置属性 777,用于存放附件
空目录,请设置属性 777,用于存放上传头像
空目录,请设置属性 777,用于存放备份及记录数据
空目录,请设置属性 777,用于存放编译模板文件
空目录,请设置属性 777,用于存放系统缓存
模板文件目录
系统默认模板目录
系统默认模板文件
系统默认语言包文件
图片文件目录
附件图标图片目录
论坛提供头像图片目录
公用图片目录
系统默认风格图片目录
Smilies 图片目录
流量统计图片目录
引用包含目录
引用包含程序集
空目录,用于存放插件程序
论坛附带工具
数据库修复工具
分卷备份数据恢复工具
邮件发送测试工具
论坛升级程序
安装常见问题
什么是二进制(BINARY)上传?如何设置并使用二进制上传?
所有的 FTP 服务器端和客户端软件均支持两种方式的文件上传,其一为文本(ASCII)上传,其二为二进制(BINARY)上传。Discuz! 要求用户在上传 PHP 程序文件时,使用二进制的上传方式进行。原因为某些程序文件经过编译处理,使用一般的文本上传会造成文件传输错误,影响您的使用。您可以在所有的 FTP 客户端软件中找到有关二进制上传的选项,例如 LeapFTP, CuteFTP 等。以下举例说明这两种客户端软件设置 PHP 文件二进制上传的方法。
LeapFTP:在 Options(选项)菜单中选择 Parameters(参数设置),选择其中的[ASCII 扩展名],出现列表后,选中其中的“*.PHP”,点右边的[删除],再点右边的[确定]即可。如果“*.PHP”项目不存在的话,可直接使用,不需另行设置。
CuteFTP:进入软件后按 ALT+F7 进入 Global Options(全局选项),选择[传输]下面的[ASCII 类型],在右边列表框中找到名为“PHP”的项目,选定后点右边的[删除],再点下面的[确定]即可。如果“PHP”项目不存在的话,可直接使用,不需另行设置。
如何更改文件属性?
您只有在服务器使用 Linux/Unix 类操作系统时,才需要在安装时对文件属性进行更改,Windows 系统的服务器不需要更改属性。您可以在 FTP 软件中,选定需要更改属性的文件或目录,然后点右键选择 CHMOD(更改文件属性),输入属性值(如 777),再确定即可。如果您的 FTP 软件提示无权更改属性,而您又没有办法通过 Shell 的方式登入主机,请与空间服务商联系,要求其授予您 CHMOD 的权限。
为什么通过访问所有 .php 页面都会出现类似程序代码一样的信息?
这种情况是因为您的服务器上 PHP 语言支持环境没有被安装,或配置不正确。请自行安装,或向空间提供商寻求解决。
为什么软件提示 Unable to read xxx bytes in xxx.php in xx 这样的信息?
因为您没有使用二进制(BINARY)上传 PHP 文件,请使用 FTP 软件将所有 PHP 文件重新传输一次。
为什么论坛提示 Caches successfully created, please refresh?
这是缓存自动更新的提示信息,通常在初次安装完成后,或缓存文件不存在由系统自动重新建立的时候出现。这个提示为正常现象,一般仅出现一次,刷新该页面即可。
为什么论坛提示 Can not write to cache files, please check directory ./forumdata/ and ./forumdata/cache/ .?
出现这个提示通常因为 Cache 文件无法写入。使用 Unix 类操作系统的用户,请检查 ./forumdata/、./forumdata/cache/ 和 ./forumdata/templates/ 这三个目录是否设置了可写属性(777),同时如果您是从其他服务器上转移论坛而来,除了需要对上述文件设置属性以外,还需要进行下面两个步骤其中之一:
将上述三个目录中的后两个目录中的所有文件全部删除
将上述三个目录中下的所有文件及目录属性均设置为777
如果数据库不存在,安装程序可以自动建立数据库吗?
Discuz! 安装程序提供这个功能,前提是您的账号要有建库的权限才行,否则只能使用已有的数据库。
一般情况下,我需要修改 config.inc.php 中的什么设置?
一般应用只要修改 $dbname,$dbuser,$dbpw,$dbhost,$adminemail 这五个变量,而其他保留默认或等待对论坛软件更加熟悉以后再进行修改。上面这五个变量,除了 $adminemail 外,其他均用于连接数据库,在您服务器空间的说明中都会给出,如果其中之一配置不正确就会出现数据库无法连接的错误提示而无法使用 Discuz! 论坛。如果您对此不了解,请咨询您的空间服务商,如何设置这四个变量参数。
安装后论坛提示 Access denied for user@localhost using password YES',该如何解决?
这个提示意味着您的数据库连接参数设置的不正确,有两种可能:其一为数据库账号或密码错误;其二为数据库账号和密码均正确,但无权访问指定的数据库。遇到此种情况,请您咨询您的空间服务商,针对您的空间该如何配置数据库连接参数。
为什么安装成功,进入系统设置后提示 Please delete install.php via FTP?
因为您没有按照说明将 install.php 删除,会产生安全问题,使用 FTP 软件将其删除后这个提示自动消失。
Discuz! 本地运行环境构建(Windows)
内容简介
为了方便您在本地体验/熟悉/调试 Discuz!,下面提供一篇完整的 Windows 2000/XP/2003 环境下的服务器搭建方法,您只需按照步骤逐步操作,即可轻松构建本地的 Discuz! 运行环境。
软件准备
安装进行之前需准备好以下软件:
IIS : Windows 2000/XP/2003 安装光盘
Apache :
PHP(及4.0.6以上):
MySQL(3.23 及以上):
Zend Optimizer(1.1.0 以上):
phpMyAdmin:
本文只是列举了撰写之时,常用的软件版本,通常情况下,安装方法也可以适合未来一定时期的版本。使用到的软件如下:IIS 5.0/6.0、 Apache 2.0.52、PHP 4.3.9、MySQL 4.1.7、Zend Optimizer 2.5.5、phpMyAdmin 2.6.0,您也可以到 下载以上部分软件。
注意:Aapche 和 IIS 选择其一即可,如果想要两者共存且能同时工作,请在安装 Apache 过程中设置好端口,默认是 80,如您可以设置为 8080;或者更改 IIS 的端口。
安装 PHP
下载后得到 php-4.3.9-Win32.zip,解压至 C:\PHP(这个路径可以随意,不过下面要是用到这个路径,请相应修改);
进入 C:\PHP,将 php.ini-dist 复制一份放到 C:\WINNT( Windows XP/2003 下为 C:\Windows )内,改名为 php.ini,然后用记事本打开,利用记事本的查找功能搜索 extension_dir = "./",并将其路径指到你的 PHP 目录下的 extensions 目录,比如:extension_dir = "C:\PHP\extensions";再搜索 register_globals = Off,将 Off 改成 On;如果你想让 PHP 支持更多功能模块,请按照下面的步骤去做,如果不想的话,直接保存关闭 php.ini 即可。
PHP 支持的模块很多,搜索:
;Windows Extensions
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
;
下面所列的就是 PHP 预支持的扩展模块,默认情况下都用分号在前面注释掉了,如果你想 PHP 支持某个模块,请将前面的“;”去掉即可。如果安装完毕后测试时,弹出不支持 xxx.dll 模块的话,直接将前面分号再加上去,保存后重启 Web 服务器就可以了。
把 C:\PHP\php4ts.dll 和 C:\PHP\dlls 目录下的所有文件复制粘贴到 C:\WINNT\system32\( Windows 2003 下为 C:\Windows\system32 )内;
配置 IIS 使其支持 PHP(如果您使用 Apache 作为 Web 服务器,请跳过本步):
首先必须确定系统中已经正确安装 IIS,如果没有安装,需要先安装 IIS,安装步骤如下:
Windows 2000 下的 IIS 安装:
用 Administrator 帐号登陆系统,将 Windows 2000 安装光盘插入光盘驱动器,进入“控制面板”点击“添加/删除程序”,再点击左侧的“添加/删除 Windows 组件”,在弹出的窗口中选择“Internet 信息服务(IIS)”,点下面的“详细信息”按钮,选择组件,以下组件是必须的:“Internet 服务管理器”、“World Wide Web 服务器”和“公用文件”,确定安装。
安装完毕后,在“控制面板”的“管理工具”里打开“服务”,检查“IIS Admin Service”和“World Wide Web Publishing Service”两项服务,如果没有启动,将其启动即可。
Windows 2003 下的 IIS 安装:
由于 Windows 2003 的 IIS 6.0 集成在应用程序服务器中,因此安装应用程序服务器就会默认安装 IIS 6.0,在“开始”菜单中点击“配置您的服务器”,在打开的“配置您的服务器向导”里左侧选择“应用程序服务器(IIS,ASP.NET)”,单击“下一步”出现“应用程序服务器选项”,你可以选择和应用程序服务器一起安装的组件,默认全选即可,单击“下一步”,出现“选择总结界面”,提示了本次安装中的选项,配置程序将自动按照“选择总结”中的选项进行安装和配置。
打开浏览器,输入:,看到成功页面后进行下面的操作:
将 PHP 安装为 ISAPI 模式:
在“控制面板”的“管理工具”中选择“Internet 服务管理器”,打开 IIS 后停止服务,然后在左侧“默认Web站点”上单击右键选择“属性”,在打开的“默认 Web 站点属性”窗口的“ISAPI 筛选器”标签里找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:PHP,再将可执行文件指向 php4isapi.dll 所在路径,如:C:\PHP\sapi\php4isapi.dll。
打开“默认 Web 站点属性”窗口的“主目录”标签,找到并点击“配置”按钮,在弹出的“应用程序配置”窗口中找到并点击“添加”按钮,在弹出的窗口中新增一个扩展名映射,扩展名为 .php,单击“浏览”将可执行文件指向 php4isapi.dll 所在路径,如:C:\PHP\sapi\php4isapi.dll,然后一路确定即可。如果还想支持诸如 .php3,.phtml 等扩展名的 PHP 文件,可以重复“添加”步骤。
再打开“默认 Web 站点属性”窗口的“的“文档”标签,找到并点击“添加”按钮,向默认的 Web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。
确定 Web 目录的应用程序设置和执行许可中选择为纯脚本,然后关闭 Internet 信息服务管理器,在命令提示符中执行如下命令:
net stop w3svc
net stop iisadmin
net start w3svc
打开浏览器,输入:,看到成功页面后,在 IIS 根目录下新建一个 phpinfo.php,内容如下:
?php
phpinfo();
?
打开浏览器,输入:,将显示当前服务器所支持 PHP 的全部信息,可以看到 Server API的模式为:ISAPI。
配置 Apache 使其支持 PHP(如果您使用 IIS 作为 Web 服务器,请跳过本步):
一般下载后得到的是一个 .exe 文件,直接双击安装,过程中需设置一下服务器名,如设置为: localhost,假设装在 C:\。
打开 C:\Apache\Apache2\conf\httpd.conf,在最后添加如下代码:
LoadModule php4_module "C:/php4/sapi/php4apache2.dll"
AddType application/x-httpd-php .php
查找 DirectoryIndex,在其后面添加 index.php,保存后关闭文件,Restart Apache。
打开浏览器,输入:,看到成功页面后,在 C:\Apache\Apache2\htdocs 下新建一个 phpinfo.php,内容如下:
?php
phpinfo();
?
打开浏览器,输入:,将显示当前服务器所支持 PHP 的全部信息,可以看到 Server API 的模式为:Apache2 handler。
安装 MySQL :
如果你下载的是 Windows Essentials (x86),将得到 mysql-4.1.7-essential-win.exe ,直接双击安装即可。安装过程中会提示你是不是立即进行配置,选择否即可完成安装。安装完毕后,在“开始”菜单的“运行”中输入:C:\MySQL\bin\mysqld-nt -install,运行成功之后再输入:net start mysql,将会启动 MySQL 服务;要停止 MySQL 服务,输入:net stop mysql ;如果你还想较详细的配置 MySQL,就请进入 C:\MySQL\bin 目录,运行 MySQLInstanceConfig.exe,按提示操作即可。
如果你下载的是 Windows (x86),解压后双击执行 Setup.exe 即可,步骤同上。
如果你下载的是 Without installer (unzip in C:\),直接解压到 C:\MySQL,在“开始”菜单的“运行”中输入: C:\MySQL\bin\mysqld-nt.exe -install,运行成功之后再输入:net start mysql,即可启动 MySQL 服务;要停止 MySQL 服务,输入:net stop mysql。
安装 Zend Optimizer :
下载后得到 ZendOptimizer-2.5.5-Windows-i386.exe,直接双击安装即可,安装过程要你选择 Web Server 时,选择 IIS,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini,点确定后安装完成。
Zend Optimizer 的安装向导会自动根据你的选择来修改 php.ini 帮助你启动这个引擎。下面简单介绍一下 Zend Optimizer 的配置选项。以下为安装完成后 php.ini 里的默认配置代码(分号后面的内容为注释):
[Zend]
zend_optimizer.optimization_level=15
;优化程度,这里定义启动多少个优化过程,默认值是 15,表示同时开启 10 个优化过程中的 1-4,我们可以将这个值改为 1023,表示开启全部10个优化过程。
zend_extension_ts="C:\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模块在硬盘上的安装路径。
zend_extension_manager.optimizer_ts="C:\Zend\lib\Optimizer-2.5.5"
;优化器所在目录,默认无须修改。
安装 phpMyAdmin:
下载得到 phpMyAdmin-2.6.0.zip,将其解压到 IIS 根目录,找到并打开 config.inc.php,做以下修改:
搜索 $cfg['PmaAbsoluteUri'],将其设置为 phpMyAdmin 目录路径,如: ;
搜索 $cfg['DefaultLang'],将其设置为 zh-gb2312 ;
搜索 $cfg['DefaultCharset'],将其设置为 gb2312 ;
打开浏览器,输入:,若 IIS/Apache 和 MySQL 均已启动,phpMyAdmin 默认无须密码即可浏览数据库内容。
phpMyAdmin 的具体功能,请慢慢熟悉,这里不再赘述。
怎么进行discuz的二次开发
必须至少具备如下技能:
1) 能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)
2) 扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用
3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳
4) 熟悉使用Discuz!的各项功能
一) Discuz!的文件系统目录
注:想搞DZ开发,就得弄懂DZ中每个文件的功能。
a) Admin:后台管理功能模块
b) Api:DZ系统与其它系统之间接口程序
c) Archiver:DZ中,用以搜索引擎优化的无图版
d) Attachments:DZ中 ,用户上传附件的存放目录
e) Customavatars:DZ中,用户自定义头像的目录
f) Forumdata:DZ缓存数据的存放目录
g) Images:DZ模板中的图片存放目录
h) Include:DZ常用函数库,基本功能模块目录
i) Ipdata:DZ统计IP来路用的数据
j) Plugins:DZ插件信息的存放目录
k) Templates:DZ模板文件的存放目录
l) Wap:DZ无线,Wap程序处理目录
二) 必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。
关于DZ数据库设计文档,请参阅DZ相关的项目
三) Discuz!的流程控制
a)
后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在
admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2
admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在
admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件
b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:
首页:index.php
会员注册:register.php;
会员登录:logging.php
发贴程序:post.php
会员信息:member.php
论坛内容:forumdisplay.php
查看贴子:viewthread.php
…大部分功能,此处不一一列出…
c) DZ根目下的config.inc.php属于整个DZ系统的配置文件
四) Discuz!的数据处理过程
a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中
b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理
五) Discuz!的显示控制(网站多样式风格输出)
a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档
b) DZ网站风格文件处理的原理:其实很简单,DZ使用template.func.php中的parse_template()以PHP正则运算把htm模
文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty中的技术。
六) DZ中的语言处理
a) 前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的*.lang.php文件中,DZ在生成网站风格时就加载了这相应的语言包。
七) DZ如何处理用户信息(存取、计算、更新过程)
新手要做二次开发,都必须掌握这数组中,每个数组元素的意义。
a) DZ的基本信息,如用户信息,Session信息存在如下变量中:
a). $_DCACHE
b). $_COOKIE
c). $_DCOOKIE
d). $_DSESSION
e). $_DPLUGIN
b) 可以通过print_r($GLOBALS),打印全部变量
八) DZ中缓存处理机制
a) DZ中缓存处理过程都放在“cache.func.php”中,DZ的缓存处理比较简单,其原理是把一个数组转换成了PHP代码,并保存在缓存目录下,大家可打开缓存文件查看便知。
b)使用方法:如果在新开的功能中,需要缓存某部分数据,基本上就是:
1)定义并注册缓存名字。
2)从数据读取相应的数据。
3)数据在写入缓存前作相应处理。
4)最后写入缓存。
具体操作,可以看文件中的代码,做相应的修改即可
九) DZ中模板处理机制
a) DZ独创的模板处理技术,类似于Smarty中的模板处理,只是具体算法,过程不同,Smarty是一种重型模板引擎方案。其原理都是把模板中的变量转换成相应的PHP代码,这个过程实际是模访JAVA中的一次编译,多处运行。
十) DZ中权限处理机制
a) 对于DZ中前台的每相action都有$discuz_action定义,DZ根据用户所在的用户组来判定用户是否具有相应操作$discuz_action的权限。至于后台的权限权验证,则更简单了,依据“admin==1”来确定的
十一) DZ中如何实现URL静态化
a) DZ中的静态有两法,只要懂ReWrite规划的朋友,一看就知。
十二) DZ独创的HTML编辑器,如何截取并使用,如果进行Discuz!代和Html代码的转换
a) 这也算是DZ比较牛的一项技术了,在早期版中,因DZ编辑器的不足,使得很多用户放弃了DZ。
实现原理:通过JS把用的一些操作转换成了DZ的bbcode代码。这样子提交了安全性,将带有bbcode代码的内容存入数据,在用户打开页页时,又把bbcode代码转换成html代码
求一份自动备份mysql数据库的脚本。
@rem ---------------------------创建备份目录-----------------------------------------
@echo off
set backup_dir=D:/数据备份
set backup_dir_run=D:/数据备份/run
set backup_dir_land=D:/数据备份/land
set log_file=%backup_dir%/backup_record.log
if not exist "%backup_dir_run%" md "%backup_dir_run%"
if not exist "%backup_dir_land%" md "%backup_dir_land%"
@rem ---------------------------创建备份目录结束-------------------------------------
@rem ---------------------------取得当前时间-----------------------------------------
set year=%date:~0,4%
::当前年
set month=%date:~5,2%
::当前月
set day=%date:~8,2%
::当前日
set hour=%time:~0,2%
::当前小时
set minute=%time:~3,2%
::当前分钟
set mydate=%year%%month%%day%
set mytime=%hour%%minute%
@rem ---------------------------取得当前时间结束-------------------------------------
@rem ---------------------------设置标签-------------------------------------
set tag_long=echo -------------------------------------------------- %log_file%
set tag_short=echo ... %log_file%
@rem ---------------------------设置结束-------------------------------------
@rem ---------------------------备份数据库-------------------------------------------
%tag_long%
echo -------------正在执行MySQL数据库备份 [%date%%time%] -------------- %log_file%
%tag_long%
%tag_short%
%tag_short%
set cmd_mysql=D:/WEBROOT/mysql50/bin/mysqldump -R -uroot -p111
echo 导出d_land_run... %backup_dir%/backup_record.log
set sqlfile_d_land_run="%backup_dir_land_run%/d_run%mydate%%mytime%.sql"
if exist %sqlfile_d_land_run% del %sqlfile_d_land_run%
%cmd_mysql% d_land_run %sqlfile_d_land_run%
echo 导出d_land_run结束... %log_file%
%tag_short%
%tag_short%
echo 导出d_run... %backup_dir%/backup_record.log
set sqlfile_d_run="%backup_dir_run%/d_run%mydate%%mytime%.sql"
if exist %sqlfile_d_run% del %sqlfile_d_run%
%cmd_mysql% d_run %sqlfile_d_run%
echo 导出d_run结束... %log_file%
%tag_short%
%tag_short%
echo 导出d_run_shop ... %log_file%
set sqlfile_d_run_shop="%backup_dir_run%/d_run_shop%mydate%%mytime%.sql"
if exist %sqlfile_d_run_shop% del %sqlfile_d_run_shop%
%cmd_mysql% d_run_shop %sqlfile_d_run_shop%
echo 导出d_run_shop结束... %log_file%
%tag_short%
%tag_short%
echo 导出bugs... %log_file%
set sqlfile_bugs="%backup_dir_land%/bugs%mydate%%mytime%.sql"
if exist %sqlfile_bugs% del %sqlfile_bugs%
%cmd_mysql% bugs %sqlfile_bugs%
echo 导出bugs结束... %log_file%
%tag_short%
%tag_short%
echo 导出discuz... %log_file%
set sqlfile_discuz="%backup_dir_land%/discuz%mydate%%mytime%.sql"
if exist %sqlfile_discuz% del %sqlfile_discuz%
%cmd_mysql% discuz %sqlfile_discuz%
echo 导出discuz结束... %log_file%
%tag_short%
%tag_short%
echo 导出land... %log_file%
set sqlfile_land="%backup_dir_land%/land%mydate%%mytime%.sql"
if exist %sqlfile_land% del %sqlfile_land%
%cmd_mysql% land %sqlfile_land%
echo 导出land结束... %log_file%
%tag_short%
%tag_short%
echo 导出landwiki... %log_file%
set sqlfile_landwiki="%backup_dir_land%/landwiki%mydate%%mytime%.sql"
if exist %sqlfile_landwiki% del %sqlfile_landwiki%
%cmd_mysql% landwiki %sqlfile_landwiki%
echo 导出landwiki结束... %log_file%
%tag_short%
%tag_short%
echo 导出mysql... %log_file%
set sqlfile_mysql="%backup_dir_land%/mysql%mydate%%mytime%.sql"
if exist %sqlfile_mysql% del %sqlfile_mysql%
%cmd_mysql% mysql %sqlfile_mysql%
echo 导出mysql结束... %log_file%
%tag_short%
%tag_short%
echo 导出wikidb... %log_file%
set sqlfile_wikidb="%backup_dir_land%/wikidb%mydate%%mytime%.sql"
if exist %sqlfile_wikidb% del %sqlfile_wikidb%
%cmd_mysql% wikidb %sqlfile_wikidb%
echo 导出wikidb结束... %log_file%
%tag_short%
%tag_short%
echo -------------备份完成! [%date%%time%] -------------- %log_file%
@rem ---------------------------备份数据库结束---------------------------------------
Discuz!NT 和 Discuz! x
Discuz!NT是asp.net脚本,Discuz! X是php脚本,选择的时候主要考虑服务器是否支持脚本和数据库。当然,两个版本的外观也是不一样的。