2010-08-30 3 views
0

привет, я хотел создать формат для URL-адреса пользователей, например, для пользователя ninja123, он получит ссылку профиля example.com/ninja123, im, используя php mysql на apache. это нормальная связь!дружественные URL-адреса для профиля пользователей?

viewprofile.php?userid=2 

Как я могу оценить эту проблему? и им плохой .htaccesss новичку :)) спасибо

ответ

0

Вместо того чтобы делать $_GET['userid'] и ищет ID ... включите его, посмотрев на имя так как: viewprofile.php?userid=Ninja123

Попробуйте Mod Rewrite генератор: http://www.generateit.net/mod-rewrite/

+0

спасибо !!! очень хороший ответ – getaway

0

Вы не можете использовать .htaccess RewriteRule только для этого. Если на форуме представлены внутренние идентификаторы базы данных, вы в основном должны переписывать части SQL-запроса. В основном вам нужно сначала принять $_GET["username"] вместо "userid", а затем переписать поиск. В качестве примера:

db_query("SELECT * FROM users WHERE id=?", (int)$_GET["userid"]); 

к

db_query("SELECT * FROM users WHERE username=?", encode($_GET["username"])); 

В зависимости от применения, фактической структуры SQL таблицы и интерфейс DB (ваш форум, вероятно, использует mysql_query и mysql_real_escape_string вместо encode).

После этого вы можете развернуть простые RewriteCond !-f {%..} и RewriteRule (.+) /viewprofile?username=$1, чтобы получить короткие URL-адреса.

1

Создать файл .htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] 
</IfModule> 

Если посетитель сайта запрашивает http://example.com/Ninja123, папка не будет найден, так что будет работать index.php и заполнить $_GET['url'] с /Ninja123

В index.php, захватить компонент пути от $_GET['url']:

$username = trim(parse_url($_GET['url'], PHP_URL_PATH), '/'); 

Теперь $ имя пользователя будет сотрудничать ntain Ninja123. Вы можете использовать это для поиска базы данных для получения идентификатора пользователя. Если вы хотите, чтобы это работало с запросами, содержащими подкаталоги (example.com/Ninja123/photos/party), вы хотите удалить эти подкаталоги перед выполнением запроса.

Смежные вопросы