加密密码的问题

时间:2012-09-11 13:19:35

标签: php mysql

我有密码加密这个问题,现在,我使用md5 ..我知道它不是最安全的,但无论如何。

我有这段代码:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','md5($data[1]).','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

现在,这在数据库中张贴了这样的值:我的意思是即

  

MD5(A101)

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) 
       values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

这应该有效。

你不能通过函数调用执行类似$str = "$str1";的操作,所以你必须这样做:$str = "'" . md5($str1) . "'"

答案 1 :(得分:2)

该函数不是变量,不能在双引号内解析:

$import="
    INSERT into users
    (Username,Password,Email,first_name,last_name,phone,user_id) 
    values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

虽然PHP在双引号内解析变量,但它不会查找每个可能的函数。您需要使用. concat函数来中断字符串并连接值。

答案 2 :(得分:1)

你无法调用这样的函数:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')";

答案 3 :(得分:1)

在普通的PHP中你认为echo "md5($data[1]).";会调用该函数吗?当然不是,它是字符串的一部分。

您需要连接md5调用:

"blah blah blah".md5($data[1])."more blah";

答案 4 :(得分:0)

您的实际问题是您已将函数调用放入字符串中,您可以简单地将md5的返回值连接到字符串中,如下所示:

'" . md5($data[1]) . "'

那就是说,请不要写这样的插入,如果$data包含用户输入,那就很危险。

使用预准备语句将数据插入数据库时​​,您几乎总是更好。我强烈建议你阅读关于PDO / MySQLi的内容,或者至少如果你还没有使用它,mysql_real_escape_string

答案 5 :(得分:0)

首先,在字符串中使用数组是行不通的。您需要结束字符串并合并数组元素以使其具有值。对于诸如md5()函数之类的函数也是如此。

尝试:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('".$data[0]."','".md5($data[1])."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."')";

我希望这会有所帮助。