2010-05-06 15 views
5

voglio qualcosa di simile:Ottenere il nome utente da URL in PHP

http://www.someniceandreliableurl.com/username 

e prendere il nome utente.

Voglio fare qualcosa come cinguetta/facebook/etc urls veloci ...

twitter.com/username 

come posso fare qualcosa di simile con PHP? =) grazie in anticipo.

+0

Non è sicuro, ma si potrebbe essere in grado di utilizzare semplicemente un file con quel nome nella directory e avere #! \ LocationToPHPhere nella parte superiore del file assumendo che si stia utilizzando Linux per il proprio ambiente. Ciò può causare che la shell lo consideri come un file php, a quel punto puoi fare quello che vuoi con esso. –

+0

@Josh - che tende a fallire se tu avessi una base di utenti di dimensioni decenti –

+0

Tutte e tre le risposte presuppongono che tu stia eseguendo PHP con Apache. È questo il caso? – Dolph

risposta

8

Usa mod_rewrite nel file .htaccess :

RewriteEngine on 
RewriteOptions MaxRedirects=1 
RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ /foo.php/$1 [QSA,L] 

Dove foo.php è lo script per la visualizzazione delle pagine url rapidi.

Quindi in foo.php (o qualsiasi cosa l'abbiate chiamato) potete prendere il nome utente in $_SERVER['PATH_INFO'].

Le prime 5 linee si accendono mod_rewrite e consentono ai file/cartelle/script effettivi di essere ignorati dalla regola di riscrittura. L'ultimo riscrive tutti gli URL che non sono fini/cartelle/script.

+0

+1 per una descrizione chiara. –

+0

Grazie, aiuta molto. – pojomx

+0

Grazie, giusto per aggiungere: Mod Rewrite, dovrebbe essere ON (LoadModule rewrite_module modules/mod_rewrite.so, su httpd.conf) – pojomx

6

È possibile utilizzare un RewriteRule in Apache per trasformare un site.com/user essere site.com/loadpage.php?user=user

RewriteEngine On 
RewriteRule ^/([a-z0-9]+) /load_user.php?user=$1 [NC,L,QSA] 
+0

Grazie per il tuo aiuto, sto avendo problemi a testare questo (devo aspettare) ma aiuta molto. – pojomx

1

È necessario chiedere al server Web di riscrivere l'URL in una stringa di query con dati a cui è possibile accedere da PHP. Fate il vostro script PHP per lavorare con gli URL come

http://www.someniceandreliableurl.com/?user=username 

Allora sì che Apache mod_rewrite hanno installato e che si è permesso di usare .htaccess. Quindi creare un file .htaccess con una regola di riscrittura, come

RewriteEngine On 
RewriteRule ^/(.*)$ /?user=$1 [QSA] 
+0

Perché il downvote? –

+2

@Joshua: non una ragione per il downvote, IMO.In ogni caso, la risposta sarà naturalmente in fondo alla lista, perché le altre due risposte sono state qui prima e quindi hanno avuto un vantaggio. È ancora una risposta valida; non c'è bisogno di punire @ Johan per essere un dattilografo più lento. –

0

Checkout ModRewrite in Apache o utilizzare un framework PHP che offre routing. Questo è generalmente basato sulla variabile $ENV['PHP_SELF'] che ti consente di fare molto di più nel tuo codice php che normalmente dovresti fare in ModRewrite. Restituirà la parte dell'URL dopo il nome host in modo da poter eseguire url come http://exmaple.com/index.php/username/profile.

Problemi correlati