PHP应用程序页面/用户名冲突解决


PHP Application Page / Username Conflict Resolution

我正在构建一个PHP应用程序。对于我的应用程序,首先通过访问domain.com/username或domain.com/accountnumber来设置和显示用户的配置文件/页面。

我的问题是——如何做到这一点,同时保留制作具有domain.com/pagename url的信息应用程序页面的能力?我的主要例子是vimeo,它有vimeo.com/about, vimeo.com/developers等,同时允许您将用户名设置为vimeo.com/username。我担心的是,我将启动我的应用程序,而不是有能力创建我想在未来的链接,因为它是作为一个用户名。

你的建议是什么,或者你的经历是什么?有推荐的共同名单吗?我不知道该怎么办。谢谢你的帮助。,

有很多方法可以达到你的要求-阅读路由和路由以获得更好的理解。

许多框架提供了一种方法来实现你所要求的- Zend框架是其中之一。

或者,如果你从头开始构建它,你可以实现一个不同的结构,例如

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

这有效地确保您的url不会受到某人用户名的影响。如果要创建自己的路由,你需要查看Mod Rewrite

已经有很多框架提供了这个功能,试试Zend Framework。

你需要阅读ZF的路由来实现你所需要的。

答案是你不这样设计你的url。我知道vimeo是这样做的,但他们可能已经遇到了这个令人头疼的问题。

一个更好的解决方案是命名您的资源。请仔细查看stackoverflow的url,以获得更好的url设计示例。

如果你绝对坚持这种url设计,考虑将你的"内容令牌"(url中标识你想要的东西的部分)组织成组,并给它们一个优先级顺序。例如:

  1. 如果令牌匹配静态页面,则显示静态页面
  2. else按账号名搜索并显示用户页面
  3. else按账号搜索并显示用户页面

当用户注册时,不要允许他们使用静态页面的名称。(您可能需要提前保留一组静态页面名称)

如果您稍后创建一个新的静态页面并且用户名冲突,您可以强制更改他的用户名并向他发送"I'm sorry"电子邮件。希望这种情况很少发生,您不需要用代码来解决它。

一种方法是在注册时使用curl或类似的请求domain.com/requestedname,如果URL没有返回404,则向用户返回错误。对于未来的冲突,根本没有办法这样做。您要么必须在所有潜在的未来保留词的开头列出一个列表,并禁止这些用户名(不切实际),要么交叉手指并希望冲突不会发生(也不切实际),要么在未来发生冲突时请求用户更改用户名(不专业?),要么为用户名和系统页面使用不同的名称空间。