username in url bij het bezoeken van de profiel pagina
Door
Erwin b
op 21-09-2017 13:37
gewijzigd op 21-09-2017 13:38
4.486 views
Hallo ik wil graag de username in de url als iemand is ingelogd en naar zijn/haar profiel pagina gaat. Nu is dat profile.php voor elke gebruiker.
Ik had dit gevonden maar ik vraag me af of dit de goede manier is om gebruikers hun eigen profiel pagina te geven? En ik vroeg me af of $_SERVER['REQUEST_URI'] nog wel bestaat? en ik kon nergens vinden waar die 3 voor is achter $getName?
Ik heb het iets aangepast, en het is dit geworden:
$getName = explode("/",$_SERVER['REQUEST_URI']);
mysqli_query($result,"SELECT first_name FROM users WHERE url='$getName[3]'");
$num_rows = mysqli_num_rows($result);
if($num_rows == 0){
header ("Location: 404");
}
Maar het gaat al gelijk bij de eerste regel mis $getName blijft leeg.
De bedoeling is dat je zometeen dit script aanroept ala /profile.php/user/naam. Je $_SERVER['REQUEST_URI'] bevat dan '/profile.php/user/naam'. Als je die explodeert op '/' krijg je dus een array met ['', 'profile.php', 'user', 'naam']. het 3e element (0-base) is dan 'naam'.
Als je het nog iets mooier wilt hebben (bijv. /user/naam) moet je in/via je .htaccess via een rewrite rule die profile.php wegwerken.
Volgens mij denk je er allemaal wat te makkelijk over. Gebruikersnamen passen namelijk helemaal niet zomaar in de URL. In de URL mogen maar een beperkt aantal karakters voorkomen. Natuurlijk kun je urlencode() gebruiken maar dat ziet er vaak niet uit. Mooier zou het zijn om een slugifier te gebruiken.
Daarnaast zit je nog met het feit dat een (ge-slugify-de) gebruikersnaam UNIEK moet zijn binnen je tabel. Als er twee gebruikers zijn die dezelfde slug/naam hebben dan zal gebruiker twee nooit meer gevonden worden :-). Ik zelf genereer die slug slechts één maal voor een gebruiker en sla hem dan op in de database tabel. De kolom in de tabel -die ik gewoon "slug" noem krijgt een UNIQUE beperking. Vervolgens vind ik de juiste gebruiker *gegarandeerd* terug in de tabel aan de hand van de slug die dus zo uit de URL komt (en dus niet aan de hand van de gebruikersnaam).