2010-08-30 53 views
0

你好我想創建一個用戶url的格式,例如用戶ninja123,他會得到example.com/ninja123的配置文件鏈接,即時通訊使用Apache上的php mysql。這是正常的鏈接!友好的網址爲用戶配置文件?

viewprofile.php?userid=2 

我怎麼可以appraoch這個問題呢?和IM不好.htaccesss新手:))感謝

回答

0

而不是做$_GET['userid']和尋找ID的......通過查找名稱,以便它就像打開它:viewprofile.php?userid=Ninja123

試試這個現代重寫發生器:http://www.generateit.net/mod-rewrite/

+0

謝謝!!!非常好的答案 – getaway 2010-08-30 16:09:36

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_querymysql_real_escape_string,而不是encode)。

之後,您可以部署一個簡單的RewriteCond !-f {%..}RewriteRule (.+) /viewprofile?username=$1以獲取短網址。

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/Ninja123

在index.php文件填寫$_GET['url'],從$_GET['url']獲取路徑組件:

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

Now $ username will co ntain Ninja123。您可以使用它來執行數據庫搜索以檢索用戶標識。如果你想要這個包含子目錄的請求(example.com/Ninja123/photos/party),你需要在執行查詢之前去掉這些子目錄。