php编程中遇到的cookie问题

2013 年 1 月 24 日3230

  以前我们刚写PHP的时候,做后台,需要管理员身份认证。一般用COOKIE这么做的,特别是刚接触PHP的PHP爱好者:
  
  admin/login.php
  
  PHP代码:
  
  if(用户名&&密码正确){
  
  setcookie('admin',1,time()+36400);
  
  echo'登录成功';
  
  }
  
  PHP代码:
  
  if($_COOKIE[admin]==1){
  
  echo'有权限';
  
  }
  
  但是这样会造成很大的安全隐患,很多浏览器可以直接修改COOKIE,或者直接在系统里修改。
  
  只要伪造cookie,那么管理权限就拿到了
  
  为了安全,这么做:
  
  PHP代码:
  
  if(用户名&&密码正确){
  
  setcookie('userid',用户在系统中的ID,time()+36400);
  
  setcookie('userpass',用户在系统中的32位md5密码,time()+36400);
  
  echo'登录成功';
  
  }
  
  判断权限的时候这么做:
  
  PHP代码:
  
  if($_COOKIE[userid]){
  
  $query=mysql_query(select*usertablewhereuserid='$_COOKIE[userid]'anduserpass='$_COOKIE[userpass]');
  
  $row=mysql_fetch_array($query);
  
  if($row[rank]<>1){
  
  echo'没有权限';
  
  }
  
  }
  
  这样伪造cookie就没有任何作用了
  
  现在我一般都这么做,如果这个方法有什么不对的还请指出。

点这里查看更多PHP教程

0 0