2010-09-23 41 views
0

如何在PHP中爲每個用戶實現虛榮URL?我正在實施我的網絡應用程序的登錄系統,作爲Drax LLP登錄系統的調整版本。在PHP中爲單個用戶實現虛榮URL

因此,每個用戶都應該能夠修改他的個人資料,這個個人資料最終會出現在他的虛榮URL上。就像xyz.com/user一樣。

任何提示/想法?謝謝..

+1

虛空網址將是user.xyz.com,而不是xyz.com/user :)那麼,簡單的mod_rewrite規則,如果可用,將做伎倆 – 2010-09-23 07:53:23

+0

爲什麼子域的方法? – 2010-09-23 07:56:15

+0

哦,對不起:)的困惑。是的,我正在尋找像xyz.com/user – 0xff0000 2010-09-23 08:03:09

回答

0

這裏所涉及的文件的一個例子:

的.htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
</IfModule> 

的index.php

<?php 
function getWebPath() { 
    $location = ""; 

    // Read the relative URL into an array 
    if(isset($_SERVER['HTTP_X_REWRITE_URL'])) { // IIS Rewrite 
     $location = $_SERVER['HTTP_X_REWRITE_URL']; 
    } elseif(isset($_SERVER['REQUEST_URI'])) { // Apache 
     $location = $_SERVER['REQUEST_URI']; 
    } elseif(isset($_SERVER['REDIRECT_URL'])) { // Apache mod_rewrite (breaks on CGI) 
     $location = $_SERVER['REDIRECT_URL']; 
    } elseif(isset($_SERVER['ORIG_PATH_INFO'])) { // IIS + CGI 
     $location = $_SERVER['ORIG_PATH_INFO']; 
    } 

    return $location; 
} 

$location = getWebPath(); 

print_r($location); 

功能上面應該成爲你的前面的方法控制器類在某處。你只需要從$ location中減去你的基本路徑,這樣你就剩下了虛擬路徑。然後你可以做任何你想做的事 - 例如簡單地分割'/',然後按照路徑工作,根據URI將每個剩餘部分傳遞給下一個控制器。你也可以使用正則表達式來編寫更復雜的路由規則(Django和其他一些框架)。

例如: /型材/ hardik988

將被傳遞給負責「設定」,然後決定如何處理該路徑的剩餘部分做控制器。它可能會查找用戶名並顯示適當的模板。

+0

謝謝你們。我得到它的工作:) – 0xff0000 2010-09-27 17:52:29

0

這是相對簡單的:你有一個mod_rewrite規則將請求映射到www.domain.com/usernamewww.domain.com/users/username

但是,您需要知道禁止用戶名是什麼,因爲我認爲您將擁有其他頂級頁面,例如www.domain.com/aboutwww.domain.com/terms。因此,您不希望註冊aboutterms的用戶成爲用戶名。

+0

好吧,我會看看,:)我是新來的PHP,仍然鑽研手冊..謝謝。另外,感謝用戶名異常的提示:) – 0xff0000 2010-09-23 08:04:03

+0

您可以使用的一種方法是當用戶註冊用戶名時,使用'cURL'或類似的方式檢查URL是否已經存在('200 OK')。如果是,請拒絕他們註冊的能力。 – 2010-09-23 10:49:35

+0

如果前端無法輕鬆訪問數據存儲區(例如,準備向Web服務發送請求),則cURL技巧非常聰明,並且當然非常高效。 – 2010-09-24 05:20:24