我正在寻找一个关于如何使用PHP和MySQL构建wiki的好教程.我需要的东西会告诉我如何构建mysql数据库以及为文本diff等实现哪些算法.到目前为止,我发现的唯一一个是:http: //www.ibm.com/developerworks/opensource/tutorials/os-php-wiki1 / 但它基于cakePHP,我将不得不花一个月时间学习cakePHP来了解他们做了什么.
提前感谢您的任何提示!
假设你出于教程的缘故这样做(因为那里已经有很多精彩的wiki软件),让我们看看我是否无法解决这个主题的一般概述.当然,我没有时间或空间在这个答案中对整个wiki进行编码,如果我这样做,你也不会学到任何东西.但我将尝试列出一般的框图并给出一个数据库模式的示例.
首先,考虑您的wiki需要的不同页面.不是信息页面,而是实际上您将拥有的不同功能页面.
根据您想要获得的简单或复杂程度,这些是您需要的唯一三个页面.您的"主页"和任何其他重要页面("联系我们","关于我们","如何使用此维基"等)都可以是文章,因此它们的处理方式与解析请求的方式相同.拥有功能性wiki后,您可以考虑添加以下部分内容:
header()
)由于我们还没有正常运行的wiki,因此需要花费额外的时间和精力来实现,所以让我们从基本的三页开始.这些页面中的每一个都应该有自己的程序框图,或者它们必须执行的简单功能列表(具体的实现方式,我将由您决定)
对于文章解析脚本:
htmlentities()
的事物转化喜欢&
到&
.但是,随着您的文章变得更加复杂,您可能需要一种方式来显示标题,链接到其他文章等.为此,您可能希望使用特殊的模板解析,以便让您的用户无法直接控制HTML.我从来没有亲自编写其中的一个,但我可以想象它有很多preg_replace()
陈述.至于编辑文章,这个页面可能是最简单的.我会做如下的事情:
<textarea>
预先填充原始文章sans解析至于登录页面,如果您曾编写过多个用户的内容,那么您将了解这应该如何工作.
$_POST["username"]
已设置.如果是这样,他们已经发送了他们的登录信息.如果没有,请将登录表单发送给他们.(用户名,密码,提交)至于数据库应该如何看,你有一个几乎需要的表(每个人都会把它放在一个数据库中,出于安全原因,没有人会相信它对平面文件).
users
-----
id (int)
username (string)
hashed_password (string)
extra info (email, website, last seen, preferences, etc.)
Run Code Online (Sandbox Code Playgroud)
包含任何登录用户信息的表.对于文章本身,您可以选择将它们存储在数据库中或文件中.MediaWiki将所有内容存储在MySQL中,但DokuWiki使用TXT文件.这部分是偏好问题,但还有一些其他问题需要考虑.
如果您要将文章存储在数据库中,我建议使用类似于以下内容的设置:
articles
--------
id (int)
title (tinyblob)
content (mediumblob)
meta info
Run Code Online (Sandbox Code Playgroud)
在添加功能时,您可能也开始想要这些功能的数据库表.例如,如果您要为每个图像设置一个媒体查看器页面(而不仅仅是让文章显示图像),那么您需要考虑以下事项:
为了让您考虑可能包含的某些功能以及这些功能将如何影响您的数据库,以下是MediaWiki的数据库:
http://upload.wikimedia.org/wikipedia/commons/4/41/Mediawiki-database-schema.png
归档时间: |
|
查看次数: |
3772 次 |
最近记录: |