【问题标题】:Codeigniter: I would like create user URL's for my users when they create a usernameCodeigniter:我想在我的用户创建用户名时为其创建用户 URL
【发布时间】:2011-01-08 07:12:47
【问题描述】:

我希望在我的用户注册用户名时为他们创建这种 URL mysite.com/用户名

我在这个网站上搜索了很多帖子,我看到有人这样做 mysite.com/user/username

我想删除用户,直接访问 mysite.com/username

最好的方法是什么?

【问题讨论】:

    标签: php mysql codeigniter codeigniter-routing


    【解决方案1】:

    您可以查看路线:

    http://codeigniter.com/user_guide/general/routing.html

    你在 config/routes.php 中输入路由

    举个例子:

    $route['([a-zA-Z]+)'] = "main_controller/user_function/$1";
    

    但正如@Nylon Smile 上面所说,如果您尝试使用注销,它将尝试访问注销的用户页面。

    【讨论】:

    • 我明白 Nylon 在说什么,所以如果我使用 mysite.com/user/username 将无法更改 URL 路由以显示 mysite.com/username 并且用户可以输入它以进入他们的个人资料页面?
    • 我认为这正是我所要求的:stackoverflow.com/questions/3614705/codeigniter-remap-function 如果我错了,请纠正我
    • 是的,这几乎是一回事。不过,按照我的方式,它将确保只拾取第一段,因为它只接受字母字符。没有符号。您也可以随时添加数字。这取决于你的情况。
    【解决方案2】:

    我不熟悉 CodeIgniter,但这里是人们为什么不使用 mysite.com/username 的一般答案:

    mysite.com/user/username 是一个很好的解决方案,因为 URL 调度程序通常会将用户名传递给处理用户页面的函数/模块。

    mysite.com/username 是一个糟糕的解决方案,因为您的调度员必须在所有其他规则之后有一个贪婪规则,才能将除先前规则之外的所有内容传递给处理用户页面的模块/函数。

    现在假设您想使用 mysite.com/username 并假设您有 mysite.com/logout 将用户带到注销页面。用户来并使用“注销”作为他的用户名来注册自己。那你怎么访问mysite.com/logout 说注销先生想注销还是想看他的页面呢?

    【讨论】:

    • 我完全理解你。必须有一个解决方案,我的网站是使用原始 php 构建的,然后我就失去了它,这就是访问配置文件的方式,但我从来没有遇到过问题。嗯不知道如何解决这个问题。
    • 如果我保留了无法注册的名称怎么办?顺便说一句,用户使用他们的名字和姓氏电子邮件地址、密码、性别和出生日期进行注册。一旦进入会员区,用户名选项就可用,他们可以立即选择一个并分配给他们的帐户。
    • 如果您真的想要 mysite.com/username ,那么此解决方案将适合您。正如您所说,即使您不保留名称,创建奇怪用户名的可能性也很小。但我仍然坚持认为这不是最佳做法。
    【解决方案3】:

    您可以通过在 'config/routes.php' 中的 $route 数组中添加一个项目来做到这一点:

    $route['([a-zA-Z0-9_-]+)'] = "user/index/$1";
    

    这会将 example.com/whatever 映射到“用户”控制器的“索引”功能。

    是的,如果您有一个“注销”控制器和一个名为“注销”的用户,就会发生冲突。您可以通过将以下项目添加到 $route 数组上面的一个来解决这个问题:

    $route['logout'] = "logout";
    

    并保留包含您的控制器的用户名黑名单。这需要一些维护,因此您可能希望使用此处列出的其他解决方案,这些解决方案在其用户名之前的 URL 中添加类似“user/”的前缀,并避免所有这些。

    【讨论】:

    • 如何使用注销作为子域,例如logout.mystie.com
    • 每个控制器的子域似乎很麻烦。
    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 2022-06-10
    • 2014-12-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2015-10-26
    相关资源
    最近更新 更多