-1

我在密码加密方面遇到了这个问题,现在,我使用 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)

我该如何解决这个问题?

4

6 回答 6

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) . "'"

于 2012-09-11T13:21:19.543 回答
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 函数断开字符串并连接值。

于 2012-09-11T13:21:32.243 回答
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]')";
于 2012-09-11T13:21:38.297 回答
1

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

您需要连接 md5 调用:

"blah blah blah".md5($data[1])."more blah";
于 2012-09-11T13:22:22.090 回答
0

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

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

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

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

于 2012-09-11T13:22:54.680 回答
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]."')";

我希望这有帮助。

于 2012-09-11T13:23:54.360 回答