MYSQL - 使用CRYPT进行散列时出现特殊字符的问题

时间:2015-10-01 16:01:31

标签: php mysql utf-8 character crypt

我正在尝试使用PHP和mysql创建用户系统。我在数据库中创建了一个名为userz的表,并设置了我需要的所有内容。只要哈希不生成任何特殊字符,我的代码100%就可以工作,所以它随机成功。我已经尝试将mysql中的编码设置为多种utf-8并且我已尝试过标题('Content-Type:text / html; charset = utf-8');在我的PHP脚本中,但我无法让它工作!

$salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
$enc= base64_encode($salt);
$hash = crypt($passwordz, $salt);
$qry = "INSERT INTO `userz` VALUES('0', '$fname', '$lname', '$email', '$hash', '$enc')";

mysql_query($qry) or die ($enc.$hash);
echo "Account created!";

它总是会死,我会看到这样一个角色:

也许我需要先逃避查询?有任何想法吗?谢谢! (如果你看到任何安全问题,请随时评论)。

1 个答案:

答案 0 :(得分:0)

黑钻石问号通常来自

  1. 您的字节以latin1(不是utf8)编码。
  2. 您尚未指定SET NAMES utf8。你应该使用mysqli_ *接口,而不是mysql_ * l,然后使用set_charset('utf8')。
  3. 您确实在html中的元标记中指定了UTF-8。