php - 隐藏个人资料中的详细信息。 PHP 哪个是更好的选择?

标签 php mysql

我有一个简单的 php Web 应用程序。我需要为用户添加一个选项,以隐藏其公开个人资料中的某些详细信息。数据库类似于:

id     username    phone      email 
1      foo1        888-888    a1@b.com
2      foo2        999-999    a2@b.com
3      foo3        111-111    a3@b.com

现在我有两个选择。首先是另外一个表,用id作为外键来引用。喜欢

fkeyID     disp_phone      disp_email 
1          0               0
2          0               1
3          1               1

其中 1 为真,0 为假。然后对 2 个表使用 SQL 连接来查找他们是否想要显示他们的电话/电子邮件。

第二个选项是:在一些标志值(例如 $)前面添加前缀,以防用户想要禁止公共(public)查看。然后在显示或保存首选项之前使用简单的 php 检查。喜欢:

id     username    phone      email 
1      foo1        $888-888   $a1@b.com
2      foo2        $999-999   a2@b.com
3      foo3        111-111    a3@b.com

请说明就空间和复杂性而言哪个是更好的选择以及原因。

最佳答案

如果您有很多列,那么您最终会得到很多可见性标志。如何在原始表中保留一个可见性列,该列是一个整数值,每个可见字段都有一个位。

define(VISIBLE_PHONE, 0x00000001);
define(VISIBLE_EMAIL, 0x00000002);
define(VISIBLE_DOB,   0x00000004);

这些位被“或”在一起以创建可见性值。

然后测试如下:

if (row->visibility & VISIBLE_PHONE)
{
    // display phone number
}

关于php - 隐藏个人资料中的详细信息。 PHP 哪个是更好的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079027/

相关文章:

javascript - 避免硬编码字符串 html

mysql - 如何使用观察者将新列添加到订单网格?

Java 相当于 PHP 的curls 指令

php - 为什么 htmlspecialchars 在我的网页上添加斜杠?

javascript - 将 steam 应用列表加载为 JSON 文件

php - AJAX/jQueryalert() 有效,.html() 或 .text() 无效

php - MySQL 出现重复更新错误

PHP Propel 1.6 和 MySQL - 使用 utf8 的 save() 不工作

python - get_absolute_url 问题。错误捕获 ViewDoesNotExist

mysql - 按日期时间戳分组 MySQL