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.485 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.
@Frank, zo ver ik begrijp is het de bedoeling een slug te maken die bestaat uit de gebruikersnaam plus het id om zo altijd een unieke url te krijgen
Zo ja, dan moet er dus bij het registreren al de gebuikersnaam + id in de tabel users in de kolom slug komen? Het kwartje valt nog niet helemaal en ik als leek denk nu. Waarom is er een extra kolom slug nodig als die zelfde gegevens al in kolom id en kolom gebruikersnaam staan?
Ik ga CakePHP proberen omdat zo ver ik nu heb kunnen vinden deze het meest geschikt zou zijn voor beginners.
@Ivo en Frank, Ja, het is puur voor de gebruiker zelf. Als ik bij mijn account kijk bij een site dan is de url: .../leden/erwin/ en wil ik mijn profiel bewerken dan wordt het: .../leden/erwin/profile/edit/
Verander ik nou de naam in die url naar een andere gebruiker .../leden/piet/profile/edit/
dan wordt ik gewoon doorgestuurd naar .../leden/piet/
@Thomas, Het script dat ik gebruik kijkt alleen naar een uniek email adres omdat ik zelf het altijd vervelend vind als ik me eigen naam niet kan gebruiken.
Ik ben eigenlijk alleen html gewend. En dan heeft gewoon elke pagina zijn eigen url. Maar nu met 1 bestandje profile.php en verschillende gebruikers die dit zelfde bestandje gebruiken maar dan toch bij elke gebruiker een andere url die niet eindigt op profile.php valt niet mee.
Zo ja, dan moet er dus bij het registreren al de gebuikersnaam + id in de tabel users in de kolom slug komen? Het kwartje valt nog niet helemaal en ik als leek denk nu.
Waarom is er een extra kolom slug nodig als die zelfde gegevens al in kolom id en kolom gebruikersnaam staan?
Dat legt Thomas in de vorige post uit. Er kan een Ariën aanmelden, maar ook een Arién. In dat geval moet je toch zorgen voor een identifier in de URL. Persoonlijk ben ik zelf niet zo van de identifier van een slug. Als iemand zijn naam aanpast, of een titel, dan zijn alle verwijzingen niet meer werkzaam. Of je moet de slugs in een koppel-tabel plaatsen. Ik geloof dat Wordpress dat wel weer doet.
De slug is niet leidend bij het opvragen van het nieuws-artikel, en er wordt uitsluitend gekeken naar het ID nummer. Als je die aanpast, dan past de slug zich in mijn geval ook direct aan.
Ik ga CakePHP proberen omdat zo ver ik nu heb kunnen vinden deze het meest geschikt zou zijn voor beginners.
Goede keus als je met MVC wilt gaan beginnen, zonder een flinke grote leercurve.
Dat zou dus betekenen dat:
leden de controller is, /erwin/ een function /profile/edit een optie.
Dat is niet logisch.
Je kan dit oplossen door wat magisch toe te voegen met iets van routes, maar dan nog is dat een hele wirwar die niet nodig is.
Ik zou het anders doen: http://domain.tld/profile/edit/{1}/erwin/
Ik zet even 1 tusssen {1} omdat die namelijk een id bevat die aangeeft dat hij uniek. De rest wat je er achter plakt is voor de leuk, maar niet meer relevant.
Wat gebeurd er dan:
/profile/ is je controller /edit/ is de function en {1} is het id wat je uit de database haalt van die gebruiker.
Ik neem aan dat dat de URL is waarmee je je eigen profiel kunt aanpassen? Om die URL in eerste instantie te kunnen aanroepen zou je eigenlijk al aangemeld moeten zijn. Het systeem wéét al wie jij bent. Een URL waarmee je een formulier oproept waarmee je je eigen profiel kunt aanpassen hoeft dus niet complexer te zijn dan:
/profile/edit
Het wordt wat anders wanneer je tevens als admin van zo'n site functioneert, waarschijnlijk heb je dan meer privileges en opties tot je beschikking. Dit uit zich meestal ook in aparte formulieren / beheerpagina's waarmee de admin meer kan. Ingeval een admin een profiel van zichzelf of van een ander wijzigt zou dit er bijvoorbeeld als volgt uit kunnen zien:
/admin/profile/edit/88
Maar weet je, eigenlijk is dit alles enkel om het "mooi". Deze pagina's kunnen -als het goed is :)- sowieso niet gecrawled worden door zoekmachines. Dit zijn immers geen publieke pagina's maar beheerpagina's. Dus tenzij je hele systeem al een methodiek heeft voor het opbouwen van en navigeren door dit soort schone URL's, waarom zou je het jezelf moeilijk maken?
Wederom bedankt voor de reacties. Ik moet me er nog meer in verdiepen en als ik een beter beeld heb zal ik er op terug komen. Want een naam aanpassen door een gebruiker en een Admin zijn wel dingen die meespelen en misschien komt er nog wel meer bij kijken.