2017-06-14 90 views
0

所以我正在努力學習更多的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

回答

2

試試這個:

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