Coldfusion 为数据库插入创建唯一的用户名

Coldfusion 为数据库插入创建唯一的用户名,coldfusion,url-rewriting,Coldfusion,Url Rewriting,我将唯一的名称插入到一个数据库表中,该表已由用户作为用户名提交 当通过表单提交名称时,我的ColdFusion代码会检查数据库,查看该名称是否已经存在。如果它确实存在,则通过向其添加序列号使其成为唯一的用户名 我的问题是,虽然检查数据库中的名称冲突很容易,但我也不希望名称与网站中任何文件夹、.cfm文件或.html文件的名称冲突 目前,我正在使用一个简单的ListFindNoCase('folder1,folder2,folderN',username)函数来检查冲突,但这是手动完成的。每当我向

我将唯一的名称插入到一个数据库表中,该表已由用户作为用户名提交

当通过表单提交名称时,我的ColdFusion代码会检查数据库,查看该名称是否已经存在。如果它确实存在,则通过向其添加序列号使其成为唯一的用户名

我的问题是,虽然检查数据库中的名称冲突很容易,但我也不希望名称与网站中任何文件夹、.cfm文件或.html文件的名称冲突

目前,我正在使用一个简单的
ListFindNoCase('folder1,folder2,folderN',username)
函数来检查冲突,但这是手动完成的。每当我向站点添加新文件或文件夹时,我都必须将其添加到此列表中。这不是一个好办法


如何获取站点中所有内容的列表并将其设置为分隔列表,然后执行
ListFindNoCase()
函数检查用户名是否在该内容列表中?这是一种实用的方法吗?

将您的
'folder1,folder2,folderN'
转换为一个getter函数,返回文件夹列表

然后您可以决定如何收集文件夹列表

以下是我能想到的几种方法:

  • 某些全局配置文件,或者如果使用coldbox,则使用coldbox的config.cfc设置
  • 执行一个
    directoryList()
    并动态计算它,还可以选择缓存结果
  • 在数据库中存储禁止的文件夹名称,并使用sql对照数据库进行检查

这一请求背后的动机是什么?此外,如果您向站点添加的文件与数据库中的用户名冲突,会发生什么情况?动机是URL重写。如果你去facebook.com/friends,它会去哪里?它应该进入情景喜剧《老友记》的个人资料页面,还是应该进入网站中名为“老友记”文件夹中的默认文档?我将用户名写入一个表中,该表告诉我的应用程序从何处获取用户名的详细信息,例如facebook.com/friends>>facebook.com/profile.cfm?userid=145。但是我不希望任何人有“friends”的用户名,因为我的应用程序中有一个顶级文件夹使用这个名称。也许你想把这两个分开
/index.cfm/user/myuser
/index.cfm/folder/myfolder
似乎您在编写自己的框架时发现了另一个问题,几乎所有其他框架都解决了这个问题。随着应用程序的运行,您在创建文件夹/文件时需要注意用户名,这一事实应该会让您意识到您的解决方案不是最优的。您可能需要重新考虑更改用户提供的用户名。这不是一个很好的用户体验。您可以让用户知道用户名已被使用,也可以提供建议,但让他们选择用户名。仔细考虑后,我认为最好在我的数据库中设置一个保留字表,并进行检查。因为除了文件和文件夹的名称之外,还有一些单词不应该注册。例如亵渎或商标。