segment_array()能不能区分url段是参数还是页面或者方法名
现在在做权限验证,想将所有页面url写入数据库,然后做权限验证。比如一个用户列表页,页面路径是user/index这样,这样验证权限可以但是如果是用户个人中心也,我获取的路径是:user/detail/1,这样的话,即使user/detail写入了权限表,仍然读不到user/detail/1这个权限
所以现在的想法是:ci或者php中有什么判断是参数的方法吗?
用segment_array()分段组的url会把参数也带着,可不可能去掉参数呢
求大神们指点
大神们都睡了吗? 求指点啊,急急急 $this -> router -> method 来获取当前调用的方法 本帖最后由 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;
上面這兩個就不會
因為愛 发表于 2014-9-10 09:20
$this -> router -> method 来获取当前调用的方法
解决了,太谢谢了,不过ci是不是只能有一级子目录如:controllers/user/user_1.php
如果是contollers/user/user_1/user_2.php就找不到了?
Closer 发表于 2014-9-10 09:37
直接用 segment(1) 、segment(2)
這樣就會只取前面兩段而不取參數
解决了,太谢谢了,不过ci是不是只能有一级子目录如:controllers/user/user_1.php
如果是contollers/user/user_1/user_2.php就找不到了?
參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定
若非必要就別搞死自己了 XD $this->router->class;//当前控制器
$this->router->method;//当前方法
$this->router->directory;//当前目录
当然也可以这样
$this->router->fetch_class();
$this->router->fetch_method();
$this->router->fetch_directory();
Closer 发表于 2014-9-10 11:15
參考 http://codeigniter.org.cn/forums/thread-16838-1-1.html
預設是一級,要多級就還得設定
谢谢啦,我大致了解了一下,等抽个空测试一下
页:
[1]
2