Link van gebruiker

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Rob -

- Rob -

13/12/2016 16:00:41
Quote Anchor link
Hallo,

Ik wil graag voor iedere gebruiker een eigen profiel-pagina die iedereen kan zien (Er zit geen gevoelige informatie in). Dus dat de gebruiker 'Luuk' zijn eigen profiel krijgt met de link www.JOUWDOMEIN.nl/profiel/Luuk en dan bij de gebruiker 'Rob' dat die de link www.JOUWDOMEIN.nl/profiel/Rob krijgt met zijn informatie en dit dus bij elke gebruiker die in de database staat. Dus netzo als bij deze website, dat iedere gebruiker een eigen profiel heeft met een eigen url. Enig idee hoe dit moet? Bedankt!
Gewijzigd op 13/12/2016 16:03:00 door - Rob -
 
PHP hulp

PHP hulp

06/11/2024 02:50:42
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/12/2016 16:39:05
Quote Anchor link
Als eerste staan de gebruikersnamen in de linkjes die je als voorbeeld toont. We noemen die data in de url's ook wel slugs.

Slugs moeten uniek zijn. Dat wil zeggen dat er geen twee keer een slug 'rob' mag voorkomen. Want stel dat je twee gebruikers hebt die beiden de username Rob hebben dan weten we niet meer welke Rob we bedoelen met http://www.jouwdomein.nl/profiel/rob.

Het beste kun je een kolom met de naam 'slug' toevoegen aan je tabel 'users' en maakt die unique. Vervolgens moet je dan natuurlijk wel telkens de slug kolom automatisch bij werken. Om deze bij te werken pak je dan de username en maak je die url proof.
In url's mogen namelijk maar een beperkt aantal karakters gebruikt worden. Hier op stackoverflow vindt je een handige functie om namen om te buigen naar slugs.

Ik zou de slugs en ook de hele url altijd lowercase laten.

Verder gebruik je zogenaamde user friendly urls. Dus in plaats van http://www.jouwdomein.nl/profiel.php?slug=rob wil je http://www.jouwdomein.nl/profiel/rob gebruiken. Hiervoor moet je minimaal met behulp van een .htaccess bestand http://www.jouwdomein.nl/profiel/rob ombuigen naar http://www.jouwdomein.nl/profiel.php?slug=rob of je moet een frontcontroller dan wel een PHP framework gebruiken. Wil je hierover meer informatie dan zou ik daar even een nieuw topic over starten.

Om het even simpel te houden ga ik nu van de variant http://www.jouwdomein.nl/profiel.php?slug=rob uit.

Je kunt nu in je profiel.php bestand de slug uitlezen door het volgende te doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if(!isset($_GET['slug'])) {
    // geen slug? dan een foutmelding of een redirect
}

$slug = $_GET['slug'];

$query = "SELECT * FROM users WHERE slug='" . $slug . "'";

// etc
?>
Gewijzigd op 13/12/2016 16:53:34 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

13/12/2016 16:49:01
Quote Anchor link
Quote:
Hiervoor moet je minimaal met behulp van een .htaccess bestand http://www.jouwdomein.nl/profiel/rob ombuigen naar http://www.jouwdomein.nl/profiel.php?slug=rob of je moet een PHP framework gebruiken.

Of alles redirecten naar index.php (single point of entry) en daar de REQUEST_URI ontleden.

Het is niet nodig om iets in een querystring te stoppen. Vervolgens heb je dus ook niet per se tig rewriterules nodig.
 
Adoptive Solution

Adoptive Solution

13/12/2016 16:53:53
Quote Anchor link
Gebaseerd op dit :

https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

Gebruik ik dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine On
RewriteRule ^users/([a-zA-Z]+)/?$ show_user.php?username=$1 [NC,L]


Dan wordt :

http://www.nogwat.nl/users/bob

vertaald in :

show_user.php?username=bob

En vervolgens worden de gegevens op de standaardwijze uit de database gehaald en getoond.

Kwam er achter door dit te doen :

http://www.google.nl/search?q=dynamic+display+username+in+url
 
- Rob -

- Rob -

13/12/2016 18:34:17
Quote Anchor link
Frank Nietbelangrijk op 13/12/2016 16:39:05:
Als eerste staan de gebruikersnamen in de linkjes die je als voorbeeld toont. We noemen die data in de url's ook wel slugs.

Slugs moeten uniek zijn. Dat wil zeggen dat er geen twee keer een slug 'rob' mag voorkomen. Want stel dat je twee gebruikers hebt die beiden de username Rob hebben dan weten we niet meer welke Rob we bedoelen met http://www.jouwdomein.nl/profiel/rob.

Het beste kun je een kolom met de naam 'slug' toevoegen aan je tabel 'users' en maakt die unique. Vervolgens moet je dan natuurlijk wel telkens de slug kolom automatisch bij werken. Om deze bij te werken pak je dan de username en maak je die url proof.
In url's mogen namelijk maar een beperkt aantal karakters gebruikt worden. Hier op stackoverflow vindt je een handige functie om namen om te buigen naar slugs.

Ik zou de slugs en ook de hele url altijd lowercase laten.

Verder gebruik je zogenaamde user friendly urls. Dus in plaats van http://www.jouwdomein.nl/profiel.php?slug=rob wil je http://www.jouwdomein.nl/profiel/rob gebruiken. Hiervoor moet je minimaal met behulp van een .htaccess bestand http://www.jouwdomein.nl/profiel/rob ombuigen naar http://www.jouwdomein.nl/profiel.php?slug=rob of je moet een frontcontroller dan wel een PHP framework gebruiken. Wil je hierover meer informatie dan zou ik daar even een nieuw topic over starten.

Om het even simpel te houden ga ik nu van de variant http://www.jouwdomein.nl/profiel.php?slug=rob uit.

Je kunt nu in je profiel.php bestand de slug uitlezen door het volgende te doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

if(!isset($_GET['slug'])) {
    // geen slug? dan een foutmelding of een redirect
}

$slug = $_GET['slug'];

$query = "SELECT * FROM users WHERE slug='" . $slug . "'";

// etc
?>

Bedankt voor deze reactie! Ik hoef niet perse een slug te gebruiken aangezien er maar 1 gebruikersnaam kan zijn met die specifieke naam. Maar zeer handig!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.