Php 如何使用yii框架从URL隐藏用户id?

Php 如何使用yii框架从URL隐藏用户id?,php,yii,url-routing,Php,Yii,Url Routing,我使用的是yii框架,拥有不同的用户帐户。当我想查看用户4的查看页面时,我必须输入一个url,如www.mydomain.com/user/4,以便进行更新。我有www.mydomain.com/user/update/4 有没有一种方法可以在url行中隐藏用户id 如何设置像www.mydomain.com/user/username和www.mydomain.com/user/update/username这样的路由?我必须修改路线吗 如果用户名包含@symbols怎么办?如果每个用户都有一

我使用的是yii框架,拥有不同的用户帐户。当我想查看用户4的查看页面时,我必须输入一个url,如www.mydomain.com/user/4,以便进行更新。我有www.mydomain.com/user/update/4

有没有一种方法可以在url行中隐藏用户id

如何设置像www.mydomain.com/user/username和www.mydomain.com/user/update/username这样的路由?我必须修改路线吗


如果用户名包含@symbols怎么办?

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

我将使用www.mydomain.com/user/update/username代替www.mydomain.com/user//update,并将其放入上述urlManager规则数组中:

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

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

我认为最好在传递id之前对其进行加密。当你到达那里时解密它。有许多方法可以生成这样的随机/加密ID。为了更安全,您不应该像“用户”那样给出名称。试着修改一下。希望你明白了……:

那么你会同时使用这两条规则吗用户/“=>”用户/视图“,”用户//”更新“=>”用户/更新“,即,每个操作一条规则?第二条规则真的隐藏了用户名吗?www.mydomain.com/user//update如果您想要自定义路由,我认为这两个规则都需要。也许有一些聪明的方法可以组合成1,但我不确定。自定义路由会降低Yii的性能。把第二条规则打错了。第二条规则的url不会隐藏用户名。应该是www.mydomain.com/user//updatec您能给这样的加密ID举个例子吗?下面是一些您可以查看的例子=>。您还可以在项目模型中创建自己的加密功能。
public function actionView($username) {...}
'user/<username:\S+>/update' => 'users/update',
public function actionUpdate($username) {...}