[字号:  ]

还是大小写不敏感的问题,求教

发布时间:2008-10-10 01:25   作者: wcnb   信息来源: PHPChina 开源社区门户
各位大侠:
还是密码大小写的问题,一下是dreamweaver自动生成的用户登陆代码,问题是,用户登陆的时候,密码不关是大小写都可以登陆,问题出在哪里?应该怎么该代码,验证密码的时候是大小写敏感。
谢谢

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['name'])) {
  $loginUsername=$_POST['name'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "jian1.php";
  $MM_redirectLoginFailed = "../../no-name.html";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_green, $green);
  
  $LoginRS__query=sprintf("SELECT name, password FROM `user` WHERE name=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
   
  $LoginRS = mysql_query($LoginRS__query, $green) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
   
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;         

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];   
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );die;
  }
}

最新回复

彪形大汉 at 2008-10-10 02:51:21
$LoginRS__query=sprintf("SELECT name, password FROM `user` WHERE name=%s AND password=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));

不懂sprintf和GetSQLValueString是什么意思,可能就是在这个查询中忽略了大小写,平常的密码验证都不是这么查询的
异度冰晶 at 2008-10-10 13:22:32
MySQL里Char和Varchar类型的字段,即便是用等号来做比较,依然是大小写不敏感的。
如果你想要大小写敏感,可以将密码字段改为CHAR BINARY或者VARCHAR BINARY
但大多数应用并不是直接存储密码原文,而是存储密码的一个加密串,由于加密算法本身是大小写敏感的,所以加密后的密码比较自然就是大小写敏感