2017-06-14 2 views
0

Donc, je suis en train d'essayer d'apprendre plus de PHP.Naviguer en utilisant l'ID utilisateur dans l'URL

Je crois que j'ai défini $ _SESSION ['user'] sur la connexion réussie, alors je veux diriger l'utilisateur vers la page profile.php en utilisant l'en-tête. Ce que j'essaye de faire est de regarder d'autres profils d'utilisateurs en utilisant leur identifiant d'utilisateur ou leur nom d'utilisateur dans l'URL.

Par exemple: /profile.php?id=7 ou /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"]; 

    } 
} 

J'ai essayé de le faire, mais je ne peux pas le faire fonctionner. J'apprécierais grandement toute aide sur la façon de le faire!

+1

Ceci est faux 'if (isset ($ _ SESSION [ 'user'])) {' essayer 'if (isset ($ _ SESSION [ 'user'])) {' – hungrykoala

+0

Votre script risque d'être attaqué par [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Regardez ce qu'il est advenu de [ Little Bobby Tables] (http://bobby-tables.com/) Même [si vous échappez aux entrées, ce n'est pas sûr!] (Http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) Utilisez [déclarations paramétriques préparées] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php) – RiggsFolly

Répondre

2

Essayez ceci:

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

Salut, Merci pour votre réponse! C'était certainement très utile! Mais maintenant, chaque fois que j'entre une URL, elle renvoie toujours à l'utilisateur connecté (par exemple "/profile.php?id=John") - Si je voulais voir le profil de Mandy comment pourrais-je faire cela? Merci – John107

+0

Bonjour @ John107, j'ai mis à jour le code à inclure dans la condition si le paramètre URL est vide. – hungrykoala