Php 无法将验证码数据插入mysql数据库
我正在尝试将数据插入mysql数据库,这是一个带有验证的电子邮件注册。唯一随机数未插入到数据库表中。请帮帮我。非常感谢Php 无法将验证码数据插入mysql数据库,php,mysql,database,Php,Mysql,Database,我正在尝试将数据插入mysql数据库,这是一个带有验证的电子邮件注册。唯一随机数未插入到数据库表中。请帮帮我。非常感谢 else { $user_confirm = md5(uniqid(rand())); echo "$user_confirm"; //the form has been posted without, so save it //notice the use of mysql_real_escape_string, keep everything
else {
$user_confirm = md5(uniqid(rand()));
echo "$user_confirm";
//the form has been posted without, so save it
//notice the use of mysql_real_escape_string, keep everything safe!
//also notice the sha1 function which hashes the password
$sql = "INSERT INTO users(
user_name,
user_pass,
user_email,
user_date,
user_level,
user_confirm
)
VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',
'" . sha1($_POST['user_pass']) . "',
'" . mysql_real_escape_string($_POST['user_email']) . "',
NOW(),
0,
'$user_confirm'
)";
$email = $_POST["user_email"];
$result = mysql_query($sql);
您有两个问题:
$user\u confirm
是一个字符串(我用您的代码生成了beba256f79e888013bb34e5a774fe7f9
),您试图将其存储在为整数指定的列中(INT(11)
)
散列字符串应存储在文本字段中,以允许md5()
和sha1()
生成的字符串大小
第二,您真的不应该使用MD5密码哈希,您真的应该使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()
如果可以,你应该这样做。已在PHP7中删除。了解有关使用PDO的语句,并考虑使用../P>< P>MySQL MD5函数返回32个十六进制数字的字符串,如果参数为NULL则返回NULL。对字段使用varchar(32)而不是int(11)
此外,请确保在字符串字段中正确添加引号。用户确认的列类型是什么,以及列的长度。请注意,您没有将密码散列到数据库中。对于mysqli
或pdo
。作为一项额外的功能,您可能会发现参数传递的方式比您使用不推荐使用的库时传递的方式稍微不那么神秘和容易出错。mysql.*
一些错误检查,例如mysql\u error()
,可以更轻松地找出错误和修复方法。INT(11)
不够大,并且是存储SHA1字符串的错误字段类型。检查错误日志。您真的应该使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u散列()
。与$user\u confirm
相同,它是一个字符串(如beba256f79e888013bb34e5a774fe7f9),而不是INT。