masks2014 发表于 2014-9-9 22:18:08

segment_array()能不能区分url段是参数还是页面或者方法名

现在在做权限验证,想将所有页面url写入数据库,然后做权限验证。比如一个用户列表页,页面路径是user/index这样,这样验证权限可以
但是如果是用户个人中心也,我获取的路径是:user/detail/1,这样的话,即使user/detail写入了权限表,仍然读不到user/detail/1这个权限

所以现在的想法是:ci或者php中有什么判断是参数的方法吗?
用segment_array()分段组的url会把参数也带着,可不可能去掉参数呢

求大神们指点


masks2014 发表于 2014-9-9 22:34:14

大神们都睡了吗?

masks2014 发表于 2014-9-10 09:03:22

求指点啊,急急急

因為愛 发表于 2014-9-10 09:20:28

$this -> router -> method 来获取当前调用的方法

Closer 发表于 2014-9-10 09:37:50

本帖最后由 Closer 于 2014-9-10 09:59 编辑

直接用 segment(1) 、segment(2)
這樣就會只取前面兩段而不取參數

segment() 取 index.php 後的指定位置
segment_array() 取 index.php 後全部

堅持要用 $test = segment_array() 的話
那取出的變數你就得 $test 、$test

這樣也是只取前面兩段
static/image/hrline/line3.png
如果你有資料夾分類
用樓上的方式比較正規
因為 segment 會把資料夾也當作URL的一部份

$this->router->class;
$this->router->method;

上面這兩個就不會



masks2014 发表于 2014-9-10 10:58:17

因為愛 发表于 2014-9-10 09:20
$this -> router -> method 来获取当前调用的方法

解决了,太谢谢了,不过ci是不是只能有一级子目录如:controllers/user/user_1.php

如果是contollers/user/user_1/user_2.php就找不到了?

masks2014 发表于 2014-9-10 10:58:34

Closer 发表于 2014-9-10 09:37
直接用 segment(1) 、segment(2)
這樣就會只取前面兩段而不取參數



解决了,太谢谢了,不过ci是不是只能有一级子目录如:controllers/user/user_1.php

如果是contollers/user/user_1/user_2.php就找不到了?

Closer 发表于 2014-9-10 11:15:33

參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定

若非必要就別搞死自己了 XD

aqxinzhuan 发表于 2014-9-10 21:17:27

$this->router->class;//当前控制器
$this->router->method;//当前方法
$this->router->directory;//当前目录
当然也可以这样
$this->router->fetch_class();
$this->router->fetch_method();
$this->router->fetch_directory();

masks2014 发表于 2014-9-11 15:20:35

Closer 发表于 2014-9-10 11:15
參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定



谢谢啦,我大致了解了一下,等抽个空测试一下
页: [1] 2
查看完整版本: segment_array()能不能区分url段是参数还是页面或者方法名