手动设置md5密码
我使用下面的代码登录。
$sid = trim($_POST["id"]);
$pcode = trim(md5($_POST["pcode"]));
include_once "../conf.php";
$pdo = connect();
$sql_log = "select * from `manager` where `sid` = $sid limit 1";
$do_log = $pdo->prepare($sql_log);
$do_log->execute();
$num_log = $do_log->rowCount();
if($do_log){
if($num_log == 1){
while($row_log = $do_log->fetch()){
$pcode_db = $row_log["pcode"]; //md5 password
}
if(var_dump($pcode == $pcode_db)){ //or $pcode == $pcode_db, both return false
return true;
}else{
return false; // i get false for any password}
}
}
}
我无法登录正确的密码!使用phpmyadmin
我不知道为什么会这样,但它确实做到了。我设置md5密码(做md5与PHP)在我的数据库手动与phpMyAdmin(插入)!
structure column pcode >>varchar(32)
md5密码有32个字符,但是当它在phpMyAdmin中插入时,pcode列只包含31个字符…所以我在phpMyAdmin中使用SQL来设置md5密码!
update `manager` set `pcode` = MD5("my password") where `sid` = 7283
,然后完全设置为32个字符。有人能解释一下为什么会这样吗?
使用phpmyadmin手动设置md5密码
MySQL MD5与PHP MD5算法不同。
下面的代码就像你的代码一样,但是sql查询有一点变化
$sid = trim($_POST["id"]);
$pcode = trim(md5($_POST["pcode"]));
include_once "../conf.php";
$pdo = connect();
$sql_log = "select * from `manager` where `sid` = $sid and `pcode` = $pcode";
$do_log = $pdo->prepare($sql_log);
$do_log->execute();
if($do_log){ // if incoming sid and pcod will match
return true;
}else{
return false;
}
我不知道如何使用你的connect()函数。另一种连接sql的方式如下:
$sid = trim($_POST["id"]);
$pcode = trim(md5($_POST["pcode"]));
include_once "../conf.php";
mysql_connect('server_name','user_name','password');
mysql_select_db('DB_name');
$query = mysql_query("select * from `manager` where `sid` = $sid and `pcode` = $pcode");
if(mysql_fetch_array($query)){
return true;
}else {
return false;
}