2011-12-04 88 views
1

我正在構建一個PHP應用程序。對於我的應用程序,可以通過訪問domain.com/username或domain.com/accountnumber來設置和顯示用戶的配置文件/頁面。PHP應用頁面/用戶名衝突解決方案

我的問題是這樣的 - 你如何做到這一點,同時保留製作具有domain.com/pagename url信息的應用程序頁面的能力?我的主要示例是vimeo,它有vimeo.com/about,vimeo.com/developers等,同時允許您將用戶名設置爲vimeo.com/username。我擔心的是,我將啓動我的應用程序,並且無法創建我想要的鏈接,因爲它被視爲用戶名。

你的建議是什麼?或者你有什麼經驗?是否有一個共同的名單來保留,建議?我不知道該怎麼做。謝謝您的幫助。  

+0

如果在StackOverflow網絡(如stackapps)中有更好的地方提出這個問題,請告訴我。謝謝! – ingage

+0

你是在正確的地方:)如果你是新來的SO或StackExchange請務必查看[常見問題](http://stackoverflow.com/faq) – lethalMango

回答

2

有很多方法可以實現您的要求 - 閱讀路線和路線以獲得更好的理解。

許多框架提供了一種方法來實現你所要求的東西--Zend Framework就是其中之一。

Alterantivly,如果你是從頭開始構建它,你可以實現不同的結構,即

domain.com/u/joebloggs 
domain.com/user/joebloggs 
domain.com/a/123456 
domain.com/account/123456 

此用途不同可確保您的網址,可以不被別人的用戶名的影響。如果使用創建自己的路線,則需要查看Mod Rewrite

+0

lethalmango,我已經考慮過這條路線(domain.com/u/username),並且這是我名單上最高的。我的應用程序的優勢是能夠爲您的帳戶頁面設置一個自定義域名(想想Tumblr),所以我應該稍微介紹一下這一部分。我的目標是希望使用自定義域名的用戶,而不是那些滿足於app.com/username的用戶。 **所以謝謝你的回答!** – ingage

+0

@ weingage - 不是問題,祝你的發展順利。 – lethalMango

0

有很多已經提供此功能的框架,請嘗試Zend Framework

您需要閱讀有關ZF的路線才能實施您需要的內容。

+0

儘管我從頭開始構建(太多去了在這一點上的框架路線) - **感謝您的答案。** – ingage

0

答案是你不要這樣設計你的網址。我知道vimeo是這樣做的,但他們可能會遇到這種頭痛。

更好的解決方案是命名空間資源。仔細查看stackoverflow的url以獲得更好的url設計示例。

如果你完全堅持使用這種網址設計,可以考慮將你的「內容令牌」(標識你想要的東西的url的位)組織成組,並給它們一個優先級。例如:

  1. 如果令牌匹配的靜態頁面,顯示靜態頁面
  2. 其他搜索和顯示用戶頁面的帳戶名
  3. 別的搜索並顯示用戶頁面的賬號

用戶註冊時,請勿讓他們使用靜態頁面的名稱。 (您可能需要預先保留一組靜態頁面名稱。)

如果您稍後創建新的靜態頁面並且用戶名發生衝突,則可以強制更改其用戶名並向他發送「我很抱歉「電子郵件。這將有希望成爲罕見的事件,您不需要使用代碼來解決它。

+0

感謝您的回答! – ingage

0

一種方法是使用curl或類似的註冊請求domain.com/requestedname,返回一個錯誤給用戶,如果網址不返回404。至於未來衝突,根本就沒有辦法的事那。您必須在所有潛在未來保留字的開頭列出一個列表,並禁止這些用戶名(不切實際),交叉手指,並希望不會發生衝突(也不切實際),請求未來用戶更改用戶名發生衝突(不專業?)或爲用戶名和系統頁面使用不同的名稱空間。

+0

感謝您的回答。 – ingage