2017-06-14 5 views
0

Also meine Hand Ich versuche, bei mehr PHP zu lernen.Navigieren mit Benutzer-ID in URL

Ich glaube, ich habe die $ _SESSION [ ‚user‘] auf der erfolgreichen Anmeldung festgelegt, dann möchte ich den Benutzer auf die profile.php Seite lenken den Header verwendet wird. Was ich versuche, ist, andere Benutzerprofile entweder mit ihrer Benutzer-ID oder ihrem Benutzernamen in der URL anzuzeigen.

Zum Beispiel: /profile.php?id=7 oder /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"]; 

    } 
} 

Ich habe versucht, dies zu tun, aber ich kann es nicht zu arbeiten. Ich würde sehr jede Hilfe schätzen, wie man das macht!

+1

Das ist falsch 'if (isset ($ _ SESSION [ 'user'])!) {' Versuchen 'if (isset ($ _ SESSION [ 'user'])) {' – hungrykoala

+0

Ihr Skript ist in Gefahr [SQL-Injection-Angriff] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Werfen Sie einen Blick auf das, was passiert ist [ Kleiner Bobby Tables] (http://bobby-tables.com/) Selbst [wenn Sie Eingänge sind auf der Flucht, es ist nicht sicher!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets -Rund-mysql-real-Escape-string) Verwenden [parametrisierte Anweisungen vorbereitet] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

Antwort

2

Try this:

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

Hallo, Vielen Dank für Ihre Antwort! Es war sicherlich sehr hilfreich! Aber jetzt, wann immer ich eine URL eingebe, wird immer an den angemeldeten Benutzer weitergeleitet (zum Beispiel "/profile.php?id=John") - Wenn ich Mandys Profil sehen möchte, wie kann ich das tun? Danke – John107

+0

Hi @ John107, Ich habe den Code aktualisiert, um in die Bedingung aufzunehmen, wenn der URL-Parameter leer ist. – hungrykoala