好的,我会简单地说出来:
我有一个包含内容的数据库,但我需要设置一个条件,如果用户选择了英国而不是美国,反之亦然 - 某些内容将无法显示。这种情况可以通过后端的复选框来应用,如此。
“你好,我是[x]英国人[x]美国
中的一段”节目我不会查看实际的IP地址或任何类似的内容,因为在用户在索引页面上进行选择后,网站将简单地重定向到root / uk或root / us子文件夹。我将在db或php中包含哪种独特的参数?
谢谢!
答案 0 :(得分:2)
在数据库display_content中添加一列,将其设为EMUN并将值设置为“britain”,“usa”,“all”,然后在代码中进行调整以检查英国/美国。您可以选择显示全部,英国或美国。
答案 1 :(得分:0)
这是一个有趣的问题。因为虽然它是面向语言的,但它实际上与I18N无关 - 你所说的是基于语言偏好拒绝访问内容,而不是显示本地化内容。
这是一个想法:使用权限模型
然后问题就变成了,如何将内容连接到权限?有很多种方法,但一种方法是位掩码列。
00
||
|+--- Read enUS bit
+---- Read enGB bit
实施后可能会是这样的
Articles
+----+---------+-----------------+
| id | content | read_perm_level |
+----+---------+-----------------+
| 1 | foo | 1 |
| 2 | bar | 2 |
| 3 | baz | 3 |
+----+---------+-----------------+
这意味着'foo'只能通过enUS读取,'bar'只能通过enGB读取,'baz'可供所有人阅读。
但你也可以做一个完整的权限表,并以这种方式将内容连接到它。
答案 2 :(得分:0)
最直接的模型是数据库中的关联表。你这样做了:
paragraphs (paragraph_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, paragraph_text TEXT, ...) ENGINE=InnoDB;
paragraph_countries (paragraph_id INT UNSIGNED, country_code CHAR(2)) ENGINE=Innodb;
保存段落设置时,请执行以下步骤:
BEGIN WORK
(开始交易)DELETE FROM paragraph_countries WHERE paragraph_id = ...
INSERT INTO paragraph_countries (...)
COMMIT
(提交交易)要选择与当前国家/地区相关的段落,只需JOIN
到具有相应国家/地区代码的关联表格。