我有密码加密这个问题,现在,我使用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)
我该如何解决这个问题?
答案 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]."')";
我希望这会有所帮助。