用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2086|回复: 10
收起左侧

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

[复制链接]
发表于 2014-9-9 22:18:08 | 显示全部楼层 |阅读模式
现在在做权限验证,想将所有页面url写入数据库,然后做权限验证。比如一个用户列表页,页面路径是user/index这样,这样验证权限可以
但是如果是用户个人中心也,我获取的路径是:user/detail/1,这样的话,即使user/detail写入了权限表,仍然读不到user/detail/1这个权限

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

求大神们指点


 楼主| 发表于 2014-9-9 22:34:14 CI中国手机版 | 显示全部楼层
大神们都睡了吗?
 楼主| 发表于 2014-9-10 09:03:22 | 显示全部楼层
求指点啊,急急急
发表于 2014-9-10 09:20:28 | 显示全部楼层
$this -> router -> method 来获取当前调用的方法
发表于 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[1] 、$test[2]

這樣也是只取前面兩段


如果你有資料夾分類
用樓上的方式比較正規
因為 segment 會把資料夾也當作URL的一部份


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

上面這兩個就不會



 楼主| 发表于 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就找不到了?
 楼主| 发表于 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就找不到了?

发表于 2014-9-10 11:15:33 | 显示全部楼层
參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定

若非必要就別搞死自己了 XD
发表于 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();
 楼主| 发表于 2014-9-11 15:20:35 | 显示全部楼层
Closer 发表于 2014-9-10 11:15
參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定

谢谢啦,我大致了解了一下,等抽个空测试一下

本版积分规则