如何使用yii框架从URL隐藏user_id?

时间:2012-02-29 21:52:23

标签: php yii url-routing

我正在使用yii框架并拥有不同的用户帐户。当我想查看用户4的视图页面时,我必须输入www.mydomain.com/user/4之类的网址进行更新,我有www.mydomain.com/user/update/4

有没有办法可以隐藏网址行的用户ID?

如何设置www.mydomain.com/user/usernamewww.mydomain.com/user/update/username等路线?我是否必须修改路线?

如果username包含@符号,该怎么办?

2 个答案:

答案 0 :(得分:5)

如果每个用户都有唯一的用户名,您可以通过将此自定义路由规则放在config/main中来描述不显示其用户ID的路​​由:

'urlManager' => array(
    'rules' => array(
        'user/<username:\S+>' => 'users/view',
    )
)

\S+应接受“@”。然后将该用户名传递给controllers/UsersController,如下所示:

public function actionView($username) {...}

而不是www.mydomain.com/user/update/username我会使用www.mydomain.com/user/<username>/update并将其放在上面的urlManager规则数组中:

'user/<username:\S+>/update' => 'users/update',

,这在UsersController

public function actionUpdate($username) {...}

您还可以在创建之前为每个用户生成一个唯一的随机数,并根据该数字进行路由。

答案 1 :(得分:0)

我认为最好在传递之前加密你的id。当你到达那里时解密它。生成这种随机/加密id的方法有很多种。为了更安全,你不应该给出像'user'这样的名字。尝试修改它甚至。希望你明白了...... :)