2010-05-06 18 views
5

quiero algo como esto:Obtener nombre de usuario de URL en PHP

http://www.someniceandreliableurl.com/username 

y coger el nombre de usuario.

Quiero hacer algo así como twitters/facebook/etc urls rápidos ...

twitter.com/username 

¿Cómo puedo hacer algo como esto con php? =) gracias de antemano.

+0

No estoy seguro pero es posible que solo pueda usar un archivo con ese nombre en el directorio, y tenga #! \ LocationToPHP en la parte superior del archivo suponiendo que está usando linux para su entorno. Esto puede hacer que el shell lo trate como un archivo php, en cuyo punto puede hacer lo que quiera con él. –

+0

@Josh - eso tendería a fallar si tuvieras una base de usuarios de un tamaño decente –

+0

Las tres respuestas presumen que estás ejecutando PHP bajo Apache. Es ese el caso? – Dolph

Respuesta

8

Uso mod_rewrite en su archivo .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] 

Dónde foo.php es la secuencia de comandos para mostrar las páginas rápida de URL.

Luego, en foo.php (o como se llame) puede capturar el nombre de usuario en $_SERVER['PATH_INFO'].

Las primeras 5 líneas activan mod_rewrite y permiten que la regla de reescritura ignore los archivos/carpetas/scripts. El último reescribe todas las URL que no son multas/carpetas/secuencias de comandos.

+0

+1 para una descripción clara. –

+0

Gracias, ayuda mucho. – pojomx

+0

Gracias, solo para agregar: Modificación de escritura, debe estar activado (LoadModule rewrite_module modules/mod_rewrite.so, en httpd.conf) – pojomx

6

Se puede utilizar un RewriteRule en Apache para transformar un site.com/user ser site.com/loadpage.php?user=user

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

Gracias por su ayuda, estoy teniendo problemas para probar esto (tengo que esperar) pero ayuda mucho. – pojomx

1

Debe solicitar al servidor web que reescriba esa url en una cadena de consulta con datos a los que puede acceder desde PHP. No su script PHP para trabajar con URLs como

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

A continuación, asegurar que Apache tiene instalado el mod_rewrite y que está permitido el uso de .htaccess. A continuación, crear un archivo .htaccess con una regla de reescritura, como

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

¿Por qué el downvote? –

+2

@Joshua: No es una razón para vencer, IMO.La respuesta, naturalmente, estará en la parte inferior de la lista de todos modos, porque las otras dos respuestas estuvieron aquí primero y, por lo tanto, tuvieron una ventaja. Aún es una respuesta válida; no hay necesidad de castigar a @Johan por ser un mecanógrafo más lento. –

0

Pedido modrewrite en Apache o utilizar un framework PHP que ofrece enrutamiento. Esto generalmente se basa en la variable $ENV['PHP_SELF'] que le permite hacer mucho más en su código php que lo que normalmente debería hacer en ModRewrite. Devolverá la parte de la url después del nombre de host para que pueda hacer urls como http://exmaple.com/index.php/username/profile.

Cuestiones relacionadas