为用户公开个人资料创建隐私设置

时间:2014-05-28 07:56:39

标签: php mysql

我试图为用户设置个人隐私设置,让他们可以选择公众可以看到的信息。

我正在测试这个示例查询以尝试解决这个问题。

示例:

用户提交他们的电子邮件,电话号码和其他电话号码。 所有这些信息都存储在用户数据库表中。

我通过在用户表中创建3个新列,为用户提供显示该信息的选项。 然后,如果用户希望通过隐私表单向公众显示该信息,则可以选择是或否。

新列称为pe,pph和paph。 (第一个p代表私有)。 pe等于电子邮件, pph等于手机,和 paph等于alt-phone

默认情况下,信息设置为“否”,供非公众查看。

我的问题:

我如何关联

  1. pe to email
  2. pph to phone
  3. paph to alt_phone
  4. 然后在查询中运行它,如果pe的值为Yes,它将出现在输出中,如果pph的值为No,则它不会出现在页面的输出中。

    我已经离开了我的舒适区,所以请不要让我感到害怕,但这就是我尝试过的。

    <?php
    $id = (int)$_GET['id'];
    $users = DB::getInstance()->query("SELECT `id`, `email`, `phone`, `alt_phone`, `pe`, `pph`, `paph`
    FROM `users` WHERE `id` = $id AND `pe`='Yes' AND `pph`='No' AND `paph`='Yes'");
    
    'pe' == ('email');
    'pph' == ('phone');
    'paph' == ('alt_phone');
    
    foreach($users->results() as $u){
        ?>
    
    <p align="center"><?php echo escape($u->email); ?></p>
    <p align="center"><?php echo escape($u->phone); ?></p>
    <p align="center"><?php echo escape($u->alt_phone); ?></p>
    <?php } ?>
    

    所以结果应输出: 用户电子邮件和用户替代电话号码,而不是用户的第一个电话号码。

2 个答案:

答案 0 :(得分:1)

当用户更改其设置时,只需将pe,ph和paph的值更新为0或1. 0 =保持私有,而1 =公开。

其余的很简单:

    <?php

    $id = (int)$_GET['id'];
    $users = DB::getInstance()->query("SELECT `id`, `email`, `phone`, `alt_phone`, `pe`, `pph`, `paph` FROM `users` WHERE `id` = $id");

/*
Use this query if you make a new table:

$users = DB::getInstance()->query("SELECT `users`.`id`, `users`.`email`, `users`.`phone`, `users`.`alt_phone`, `users_settings`.`pe`, `users_settings`.`pph`, `users_settings`.`paph` FROM `users` LEFT JOIN `users_settings` ON `users_settings`.`userid` = `users`.`id` WHERE `users`.`id` = $id");

*/

    foreach($users->results() as $u){

?>

    <p align="center"><?php echo ($u->pe === false ? 'Hidden' : escape($u->email)); ?></p>
    <p align="center"><?php echo ($u->pph === false ? 'Hidden' : escape($u->phone)); ?></p>
    <p align="center"><?php echo ($u->paph === false ? 'Hidden' : escape($u->alt_phone)); ?></p>

    <?php } ?>

我所做的就是使用简写查询来检查每个值的设置是0还是1.如果它是0(即false)那么不要显示数字/地址只是说'隐藏'代替。如果1 (i.e.为真),则显示从查询中收集的变量。

该代码未经测试且可能存在小错误/类型。 (当然,只有在你使用如上所述的pe,pph和paph字段时才会起作用。

答案 1 :(得分:0)

当某人&#34;观看&#34;时,您应该在数据库中查询所有必要字段(包括您的pe,pph等)。如果隐私字段设置为&#34; true&#34;该配置文件并有一个条件语句来显示详细信息。使细节隐藏。不要将设置中的细节回显给私人