关于账户激活的奇葩问题,

tgs1989 2015-01-09 12:26:48
请教大神我这段代码有什么问题,以前好好的 ,现在却出现莫名问题,编辑器是netbeans,也重新安装过.
现在运行时能执行到第二个_query函数,也就是对数据库的操作成功了,之后就跳过mysql_affected_rows()那段直接执行下面的 else {
_alert_back('非法操作');
}


if (isset($_GET['active']) && $_GET['action'] === 'ok') {

$_active = _mysql_string($_GET['active']);

if (mysql_fetch_array(_query("SELECT tg_active FROM tg_user WHERE tg_active='$_active' LIMIT 1"),MYSQL_ASSOC)) {

//将tg_active设置为actived
_query("UPDATE tg_user SET tg_active='actived' WHERE tg_active='$_active' LIMIT 1");

if (mysql_affected_rows() == 1) {

mysql_close();

_location('账户激活成功','login.php');

} else {

mysql_close();

_location('账户激活失败','register.php');
}
} else {

_alert_back('非法操作');
}
}

...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sherry7418 2015-01-09
  • 打赏
  • 举报
回复
检查了一下你的代码,应是 if (mysql_fetch_array(_query("SELECT tg_active FROM tg_user WHERE tg_active='$_active' LIMIT 1"),MYSQL_ASSOC)) 此段就发生问题,你确定有执行到_query阶段

if (mysql_fetch_array(_query("SELECT tg_active FROM tg_user WHERE tg_active='$_active' LIMIT 1"),MYSQL_ASSOC)) {
 
         //将tg_active设置为actived
        _query("UPDATE tg_user SET tg_active='actived' WHERE tg_active='$_active' LIMIT 1");
 
        if (mysql_affected_rows() == 1) {
 
            mysql_close();
 
            _location('账户激活成功','login.php');
 
        } else {
 
            mysql_close();
 
            _location('账户激活失败','register.php');
        }
    } else {
 
        _alert_back('非法操作');
    }
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
刚用linux试了下 这里面没问题 可能我的windows系统有问题了
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
还是不行, 算了 先不找了 等一段时间再看看吧 谢谢你们2位了
xuzuning 2015-01-09
  • 打赏
  • 举报
回复
你打印出 __FILE__ 和 __LINE__ 就可知道你找错了地方
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
最新又出现的一个情况是重启好几次电脑后,再打开项目后,第一个注册的可以激活,后面的就出现非法操作了 我都晕了 怀疑是不是电脑系统有问题了
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
引用 4 楼 wind74181 的回复:

if (isset($_GET['active']) && $_GET['action'] === 'ok') {
 
    $_active = _mysql_string($_GET['active']);
 
      if (mysql_fetch_array(_query("SELECT tg_active FROM tg_user WHERE tg_active='$_active' LIMIT 1"),MYSQL_ASSOC){
 
          echo "ok";
      } else {
 
        _alert_back('非法操作');
     }
}

这样会出现什麽结果?
打印出OK ,
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
就你贴出的代码而言,是不可能出现你说的情况的 因为 _query("UPDATE tg_user SET .... 和 _alert_back('非法操作'); 分属 if (mysql_fetch_array(_query("SELECT tg_active FROM... 的两个分支 不可能同时被执行! 因此,可以认为你实际运行的不是这段代码
对啊 所以我才会说奇葩啊 我都找了2天了 还没找出问题
Sherry7418 2015-01-09
  • 打赏
  • 举报
回复

if (isset($_GET['active']) && $_GET['action'] === 'ok') {
 
    $_active = _mysql_string($_GET['active']);
 
      if (mysql_fetch_array(_query("SELECT tg_active FROM tg_user WHERE tg_active='$_active' LIMIT 1"),MYSQL_ASSOC){
 
          echo "ok";
      } else {
 
        _alert_back('非法操作');
     }
}

这样会出现什麽结果?
xuzuning 2015-01-09
  • 打赏
  • 举报
回复
就你贴出的代码而言,是不可能出现你说的情况的 因为 _query("UPDATE tg_user SET .... 和 _alert_back('非法操作'); 分属 if (mysql_fetch_array(_query("SELECT tg_active FROM... 的两个分支 不可能同时被执行! 因此,可以认为你实际运行的不是这段代码
tgs1989 2015-01-09
  • 打赏
  • 举报
回复
嗯 是的 我去表里看过了 也试了好多次 我也有打印出mysql_fetch_array 有值

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧