您的位置:首页 > 编程语言 > PHP开发

php权限管理的一些细节问题

2016-02-29 17:16 471 查看
ps:改bug是怎么的一个过程? 。。。啊、啧啧、 我的天啊

正文:今天在做一个权限管理系统,每个页面都有一个checklogin(),通过用户登录时存储session的ulevstr来判断此页面需要的权限数字是否存在来验证能否查看,

  代码如下:

function checkAdminIsLogin($lev=''){
if(FuncClass::session('id')=='') die('<a href="login.php" target="_top">请先登录</a>');
  if(FuncClass::session('type')==1){
  if(!strstr(FuncClass::session('lev'),(string)$lev)){
    die('<b>没有权限</b>');
    }
  }
}//checkAdminIsLogin

定义了这个函数后,所有页面都变成了没有权限,醉了,。一开始以为是ststr这个函数和strpos函数一样,匹配的字符串在第一个的时候会返回0 ,这个想法是错的,返回的是这个字符串和字符串之后的组合字符串是个(string ),而匹配不到结果时候会返回bool类型的false ;而且就算是相同的字符串,strstr这个函数还是会返回这个字符串,不会返回false或者0.那是什么原因啊 。???

    后来各种var_dump才发现strstr 这个函数真的是只接受string类型的, 而我在验证时候的$lev是int类型,if(!strstr(FuncClass::session('lev'),$lev))所以strstr(string,int)无论输入是什么返回都是false!!!,在$lev之前加上(string)强制转换就行了! 问题解决。

    问题引申:php是怎么判断 int 的0 和bool 的false的呢 php是基于c语言的,我看下c中这2个有什么区别:

        简单百度一下;好像在判断中这2者没有什么区别,false 和 0 是效果一样的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: