为什么MySQL ENCRYPT()给出相同的值?

时间:2010-02-11 15:44:05

标签: mysql

我正在使用的部分代码是:

        $password = MD5($password);

        $account_created = date("Y-m-d H-i-s");

        db_insert("users","user_id,username,password,account_created,registration_ip","ENCRYPT('$_POST[username] $account_created'),'$_POST[username]',MD5('$_POST[password]'),'$account_created','$_SERVER[REMOTE_ADDR]'");

        $user = db_get_array("users","username='$_POST[username]'");

        db_insert("usersettings","user_id,timezone","'$user[user_id]','$_POST[timezone]'");

        db_update("users","login_id = ENCRYPT('$user[username] $password')","user_id='$user[user_id]'");

脚本在

之前和之后继续

无论如何,我遇到的问题是,在MySQL查询中有两次调用ENCRYPT(),但由于某些原因,它们都具有相同的值

用户ID和登录ID是不同的,这是什么问题?

1 个答案:

答案 0 :(得分:3)

  

ENCRYPT()忽略除第一个之外的所有内容   str的八个字符,至少在   一些系统。这种行为是   由执行决定   底层的crypt()系统调用。

http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_encrypt

因此,如果您的用户名超过8个字符......