使用URL中的用户ID进行导航

问题描述:

所以我正在努力学习更多的PHP。使用URL中的用户ID进行导航

我相信我在成功登录时设置了$ _SESSION ['user'],然后我想使用标题将用户引导至profile.php页面。我想要做的是使用URL中的用户ID或用户名查看其他用户配置文件。

例如:/profile.php?id=7/profile.php/John

if(!isset($_SESSION['user'])){ 
    header("Location:profile.php?id=" . $_SESSION['user']); 

}else if(!empty($_GET['name'])) { 

    $username = $_GET['name']; 
    $getUserProfile = mysqli_query($connection, "SELECT user.username, user.userID 
            FROM profile, user 
            WHERE profile.userID = user.userID 
            AND user.username = '{$username}'"); 
    while($getResult = mysqli_fetch_array($getUserProfile)){ 
     $usersname = $getResult["username"]; 
     $usersId = $getResult["userID"]; 

    } 
} 

我试图做到这一点,但我不能得到它的工作。我将不胜感激任何帮助如何做到这一点!

+1

这是不对的'如果(isset($ _ SESSION [ '用户'])!){'尝试'如果(isset($ _ SESSION [ '用户'])){' – hungrykoala

+0

你的脚本存在[SQL注入攻击]的风险(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 看看发生了什么事[小鲍比表](http://bobby-tables.com/)即使 [如果你是逃避投入,它不安全!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

试试这个:

if(!empty($_SESSION['user']) && empty($_GET['name'])){ 
    header("Location:profile.php?id=" . $_SESSION['user']); 

}else if(!empty($_GET['name'])) { 

    $username = $_GET['name']; 
    $getUserProfile = mysqli_query($connection, "SELECT user.username, user.userID 
            FROM profile, user 
            WHERE profile.userID = user.userID 
            AND user.username = '{$username}'"); 
    while($getResult = mysqli_fetch_array($getUserProfile)){ 
     $usersname = $getResult["username"]; 
     $usersId = $getResult["userID"]; 

    } 
    header("Location:profile.php?id=" . $usersId); 
} 
+0

嗨,谢谢你的回复!这当然非常有帮助!但现在每当我输入任何网址时,它总是回传给登录用户(例如“/profile.php?id=John”) - 如果我想查看Mandy的个人资料,我该怎么做?谢谢 – John107

+0

Hi @ John107,如果URL参数为空,我已更新代码以包含在条件中。 – hungrykoala