允许查看配置文件页面(由所有人查看)


Allow profile-pages to be viewed (By Everyone)

我想知道(如果可能的话)如何让网站上的另一个用户可以查看用户配置文件页面。例如,一个用户有配置文件页面,然后另一个用户可以登录该页面并查看它和内容。

目前,我只能将配置文件页面与它所属的用户相关联,我不确定下一步该采取什么步骤,以及另一个用户查看的顺序。下面是我的一段代码,它将用户带到他们自己的配置文件-SESSION对他们来说是唯一的,因此不允许任何其他登录的用户查看配置文件页面。

我知道我可能必须使用GET_REQUEST,但不知道如何将我希望能够看到的用户id作为GET变量

如果有人能给我指明正确的方向,或者给我看一些代码示例,那就太好了。我使用的是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"];

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

用户列表

<?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']并且URL没有req参数,如果为true,我用$_SESSION['useruid']设置$reqreq。现在,我可以在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']

到目前为止,您的正确之处在于只有一个用户应该拥有该页面的权限。但网站所有者和管理员有权查看页面,也有权查看一个控制面板,允许他们暂停/禁止或使某人成为特色成员

站点所有者/管理员将使用主"access_rights"表覆盖此表。从本质上讲,他们可以根据自己的级别/角色来看待一切。缺少的是一个用户级的"view_status"表,该表以"user_id"作为主键,用于将其链接到现有表。此表将具有布尔列,如:

'is_public'、'is_private'、's_family、's_friends、's_member等。此表仅授予查看权限,不再授予查看权限。您可能需要一个同级表来定义他们可以在您的页面上看到什么

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