2010-05-06 13 views
5

chcę coś takiego:Uzyskaj nazwę użytkownika z URL w PHP

http://www.someniceandreliableurl.com/username 

i złapać nazwę użytkownika.

chcę zrobić coś podobnego twitters/facebook/etc szybkich adresów URL ...

twitter.com/username 

Jak można zrobić coś takiego z PHP? =) z góry dziękuję.

+0

Nie jesteś pewien, ale możesz po prostu użyć pliku o tej nazwie w katalogu i mieć #! \ LocationToPHNa górze pliku, zakładając, że używasz Linuksa dla twojego środowiska. Może to spowodować, że powłoka potraktuje go jako plik php, w którym możesz zrobić, co chcesz. –

+0

@Josh - to by się nie powiodło, gdybyś miał przyzwoitą wielkość bazy użytkowników –

+0

Wszystkie trzy odpowiedzi zakładają, że używasz PHP w Apache. Czy tak jest? – Dolph

Odpowiedz

8

Zastosowanie mod_rewrite w pliku .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] 

Gdzie foo.php jest skrypt do wyświetlania szybkich strony uRL.

Następnie w foo.php (lub jakkolwiek go nazwałeś) możesz złapać nazwę użytkownika w $_SERVER['PATH_INFO'].

Pierwsze 5 wierszy włącza mod_rewrite i pozwala na ignorowanie rzeczywistych plików/folderów/skryptów przez regułę przepisywania. Ostatni przepisuje wszystkie adresy URL, które nie są grzywnami/folderami/skryptami.

+0

+1 dla jasnego opisu. –

+0

Dziękuję, bardzo pomaga. – pojomx

+0

Dzięki, aby dodać: Mod Przepisz, powinien być WŁĄCZONY (LoadModule rewrite_module modules/mod_rewrite.so, na httpd.conf) – pojomx

6

Można używać RewriteRule w Apache przekształcić site.com/user być site.com/loadpage.php?user=user

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

Dzięki za pomoc, mam problemy z testowaniem tego (muszę poczekać), ale to bardzo pomaga. – pojomx

1

Musisz poprosić serwer internetowy o przepisanie tego adresu URL na ciąg zapytania z danymi, do których można uzyskać dostęp z PHP. Czy skrypt PHP do pracy z adresami URL jak

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

Następnie zapewnić, że Apache jest zainstalowany mod_rewrite i że mogą używać .htaccess. Następnie należy utworzyć plik .htaccess z reguły przepisywania, jak

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

Dlaczego downstream? –

+2

@Joshua: Nie jest to powód, by przegłosować, IMO.Odpowiedź jest naturalnie na samym dole listy, ponieważ pozostałe dwie odpowiedzi były tutaj pierwsze i tym samym uzyskały przewagę. To wciąż poprawna odpowiedź; nie trzeba karać @Johan za wolniejszą maszynistkę. –

0

Checkout ModRewrite w Apache lub użyć frameworkiem, który oferuje trasy. Zazwyczaj jest to oparte na zmiennej $ENV['PHP_SELF'], która pozwala ci znacznie więcej w twoim kodzie php, który normalnie musiałbyś zrobić w ModRewrite. Zwróci część adresu URL po nazwie hosta, aby można było wykonywać adresy URL, takie jak http://exmaple.com/index.php/username/profile.

Powiązane problemy