在Codeigniter URL中隐藏ID

时间:2018-01-02 12:38:01

标签: php codeigniter

我想了解并使用codeigniter路由来隐藏传递给控制器​​的ID。

网址为:

http://172.24.130.150/umobility/user/index/2

下面,

umobility 是我的项目名称。

user 是我的控制器名称。

我搜索了网站,发现我可以定义这样的路线:

$route['user/index/(:any)'] = "user/index/$1/$2";

但是这仍然不会隐藏URL的最后ID。

请解释和帮助

3 个答案:

答案 0 :(得分:1)

$route['user/(:any)'] = 'user/user_by_name/$1';

这会将所有内容重新路由到用户控制器中的“user_by_name”方法,您需要使用该名称查询数据库。

http://www.codeigniter.com/userguide3/general/routing.html

答案 1 :(得分:1)

您可以对链接中的id进行base64编码,该ID不会隐藏它,但会使其略显模糊。

在视图中......

// http://172.24.130.150/umobility/user/index/2

$b64_uid = urlencode(base64_encode($user_id));

echo anchor('user/index/' . $b64_uid, 'Anchor Back to User');

// should create link like http://172.24.130.150/umobility/user/index/Mg%3D%3D

在控制器......

public function index($b64_uid = NULL) {

  // did we get an id?
  if (is_null($b64_uid)) {
    redirect($this->_redirect_url);
  }

  // decode it.
  $user_id = base64_decode(urldecode($b64_uid));

  // validate.
  if (!is_numeric($user_id)) {
    redirect($this->_redirect_url);
  }

  // do something with $user_id...

}

答案 2 :(得分:0)

您可以使用<form action="function_name" method="POST">代替在网址中添加ID。