0

我正在为 IT 启动一个事件跟踪系统,这可能是我的第一个 PHP 项目。

我一直在根据我见过的 vBulletin 等软件在脑海中设计它,我希望它有 i18n 和样式可编辑。

所以我的第一个问题在这里:

  1. 什么是存储这些东西的最佳方法,知道它们可能是静态的。我一直在考虑用 PHP 获取文件内容,在文本编辑器中显示它,然后在保存时替换旧的。(如果以前从未编辑过,请制作一份副本,以便我们拥有“原件”)。我认为这比使用 MySQL 和存储语言/样式要快得多。

  2. 这里的治安怎么样?我应该创建 .htaccess 以在此文件夹上请求 pw 吗?

  3. 我知道如何使用 for each 从数据库中获取数组并使用 strreplace ($name, $value, $file) 进行替换,但如果我将语言存储在文件中,我可以用它的内容创建一个关联数组(如 JSON )。

非常感谢,抱歉这么多问题,我是新手

4

2 回答 2

1
  1. 存储在 HDD 与 DB 上的好处是备份不会浪费太多空间。例如。文件备份一次后,第二天就不会占用磁带了。然而,一个数据库每天都会得到完全备份,并且占用越来越多的空间。将其写入磁盘的不利方面是它增加了有人上传恶意内容的机会,他们可能足够聪明,可以弄清楚如何执行它。你只需要更加小心,仅此而已。
  2. 是的,使用 .htaccess 来限制对可写文件夹的任何操作。提前考虑好风险。
  3. 你的方法听起来像是一个很好的策略。祝你好运。
于 2012-06-06T20:18:11.957 回答
1

这就是我在我的 cms 中所做的:

  • 对于each我开发的插件/程序/实体(你命名它),我创建一个/translations文件夹。
  • 我把我所有的翻译都放在那里,命名为el.txt、de.txt、uk.txt等。所有语言
  • 我将翻译数据存储在JSON中,因为它易于存储、易于阅读并且每个人都最容易发布他们的。
  • 文件可以轻松地在文件中进行 UTF8 编码,而不会弄乱数据库,从而可以在文件模式下读取它们。(只有JSON.parse他们)
  • 在安装此类插件时,我只是遍历所有翻译并将它们放入数据库中,每个表行的每种语言。(等a data column of TEXT datatype
  • 对于每个页面渲染,我只需查询一次数据库以获取所选语言的这一行,然后调用json_decode()整个结果以获取一次;然后将其放入$_SESSION中,以便下次获取当前所选语言的快速翻译字符串

整个事情的开发让我同时兼顾性能和兼容性

于 2012-06-06T19:58:45.380 回答