允许查看个人资料页面(按每个人)

时间:2016-04-02 22:13:33

标签: php mysql

我想知道(如果可能的话)如何让用户个人资料页面可供网站上的其他用户查看。例如,用户具有个人资料页面,然后另一个用户可以登陆此页面并查看它和内容。

目前我可以将个人资料页面与其所属的用户关联起来,我不确定接下来要采取的步骤以及其他用户要查看的顺序。下面是我的代码片段,它将用户带到他们自己的个人资料中,SESSION对他们来说是独一无二的,因此不会让任何其他用户登录查看个人资料页面。

我知道我可能不得不使用GET_REQUEST但不知道如何将我希望能够看作GET变量的用户的id放入

如果有人能指出我正确的方向或者给我一些代码示例,那就太好了。我正在使用MySQL和最新的PHP。

    if(isset($_SESSION['CurrentUser'])){  // if session is true

// print to dash welcome + username 
            echo "Welcome to the website: ".$_SESSION['CurrentUser'];  

// append the user's name to the URL for profile page
            echo nl2br ("\n<a href=profile.php?id=".$_SESSION['CurrentUser'].">My Profile</a>"); /
        }
        else{
            echo ("not logged in");
        }

我的$_SESSION['CurrentUser']在我的查询页面中定义,用于检查用户名和密码,$_SESSION['CurrentUser'] = $_POST["username"];

2 个答案:

答案 0 :(得分:0)

到目前为止您的正确性只有一个用户应该拥有该页面的权限。但网站所有者和管理员有权查看该页面,并且还可以看到一个控制面板,允许他们暂停/禁止或让某人成为特色会员。

网站所有者/管理员将覆盖此表格主'access_rights'表。他们基本上可以根据他们的等级/角色看到一切。您缺少的是用户级“view_status”表,其中“user_id”是将其链接到现有表的主键。此表将具有布尔列,例如:

'is_public','is_private','is_family,'is_friends,'is_member等。此表仅授予查看权限 - 不再。您可能需要一个兄弟表来定义他们可以在您的页面上看到的

另一张桌子将成为这个孩子的一个孩子,定义一个朋友,成员或家人是否可以在您的页面上发表评论等.PHP代码执行表之间的所有交叉检查,以得出最终的是/否结论。这些数据库可能变得复杂,因为人际关系很复杂。

答案 1 :(得分:0)

为此,我使用一个用户列表,其中每个条目都链接到“profile.php?ref = USER_ID

USER_LIST

<?PHP
    $query = "SELECT * FROM users";
    $result = mysql_query($query);
    if (!$result){ die('Ungültige Abfrage: ' . mysql_error()); }
    while ($output = mysql_fetch_array($result, MYSQL_ASSOC)){
        ?>
        <tr>
            <td class="text-center"><?PHP if(!empty($output['user_avatar'])){ echo '<a href="./profile?req='.$output['user_id'].'"><img height="40px" src="data:image/jpeg;base64,'.base64_encode( $output['user_avatar'] ).'"/></a>'; } else { echo '<img height="40px" src="./style/img/avatar_default.jpg"/>'; }?></td>
            <td class="text-center"><a href="./profile?req=<?PHP $output['user_id'] ?>"><?PHP echo $output['user_name'] ?></a></td>
            <td class="text-center"><?PHP echo $output['user_last_activity'] ?></td>
            <td class="text-center"><?PHP echo $output['user_register_date'] ?></td>
        </tr>
        <?
    }
?>

如果您点击的用户名已被重定向到用户的个人资料页面(profile.php?ref=$output['user_id']

如果调用了profile.php,我会检查是否设置了 $ _ SESSION ['user_id'] 且网址没有 req 参数,如果为true我设置<使用$ _SESSION ['user_id']强选> $ req ,否则我使用网址 $ _ GET ['req'] 中的req参数设置 $ req 。现在,我可以在where子句

中使用 $ req 提交查询
<?PHP
    if(isset($_SESSION['user_id']) && !isset($_GET['req'])){
        $req = $_SESSION['user_id'];
    } elseif(isset($_GET['req'])) {
        $req = $_GET['req'];
    }

    $result = mysql_query("SELECT * FROM users WHERE user_id = '".$req."'");
    $user = mysql_fetch_array($result, MYSQL_ASSOC);
?>

总之,可以使用参数调用profile.php,而不使用req参数。

我在用户验证后的登录过程中设置了 $ _ SESSION ['user_id']