ExtMail服务器社区's Archiver

ryuhi 发表于 2009-5-13 15:06

fengyong老大请进,请教个PHP的问题

最近在写一个系统,关于有无权限进入这个系统的检查方法,我的方法是,模仿Unix系统对权限的做法,设定一个15位数,如果第一位为4,则可以进入系统,为其他任何数都不可以。

但现在这个检测的函数出了点问题,很多次登陆的时候,都会跳出“你的权限不正确,请核实你的权限。”的提示,但是刷新一下,就会OK,有时候也可以很正常登陆,不知道为什么,请帮我看看代码有没有什么问题。
[code]if (!function_exists("check_crm_auth")) {
function check_crm_auth() {
require_once 'Connections/conn_bb.php'; //连接数据库
$cokusr = $_COOKIE['usr'];
$crm_auth_sql = sprintf("SELECT `usr_cus-auth` FROM usr_users WHERE usr_name = '$cokusr'"); //选择权限的15位数的SQL语句,用户名登录后存在Cookie内
$crm_auth_query = mysql_query($crm_auth_sql) or die (mysql_error());
$crm_auth_result = mysql_fetch_assoc($crm_auth_query);
$crm_auth = $crm_auth_result['usr_cus-auth'];
$crm_auth = (string)$crm_auth; //将查询出的15位数强行转换成字符串格式。
//对用户的权限指数进行判断,看是否有权进入系统,首先检验权限的数字,如果没有15位数,直接拒绝。如果有15位数,再看第一位是不是4,如果是4,不做反应,可以进入,否则就跳出错误,提示无权进入。
if (strlen($crm_auth)  == "15") {
        if (substr($crm_auth,0,1) <> 4) {
        die("你没有权限进入客户关系管理系统。");
        }
} else {die("你的权限不正确,请核实你的权限。");
}
}
}[/code]

lwter 发表于 2009-5-19 15:09

echo $crm_auth_sql  后再进行检测。

ryuhi 发表于 2009-5-25 13:58

感谢楼上的指教,本人实属编程菜鸟一级的。
经过echo $crm_auth_sql 后发现,是因为在第一次登录的时候cookie没有生成造成的,刷新之后就有Cookie生成了。后来我把这段函数定义直接放入登录程序中,就OK了,谢谢。

fengyong 发表于 2009-8-29 09:44

其实应该 是缺少调试的经验,你可以用frefox 的freebug
或IE 8 看看HTML 头的输出。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.