MYSQL - 使用 CRYPT 散列时出现特殊字符问题
MYSQL - problems with special characters when hashing with CRYPT
我正在尝试使用 PHP 和 mysql 创建一个用户系统。我在数据库中创建了一个名为 userz 的 table 并设置了我需要的一切。只要散列不生成任何特殊字符,我的代码 100% 就可以工作,因此它随机成功。我已经尝试将 mysql 中的编码设置为多种 utf-8 并且我已经尝试过 header('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!";
它总是死,我会看到这样一个角色:�
也许我需要先转义我的查询?有任何想法吗?谢谢!
(顺便说一句,如果您看到任何安全问题,请随时发表评论)。
黑钻问号通常来自
- 您的字节以 latin1(而非 utf8)编码。
- 您没有指定 SET NAMES utf8。您应该使用 mysqli_* 接口,而不是 mysql_*l,然后使用 set_charset('utf8').
- 您确实在 html 的元标记中指定了 UTF-8。
我正在尝试使用 PHP 和 mysql 创建一个用户系统。我在数据库中创建了一个名为 userz 的 table 并设置了我需要的一切。只要散列不生成任何特殊字符,我的代码 100% 就可以工作,因此它随机成功。我已经尝试将 mysql 中的编码设置为多种 utf-8 并且我已经尝试过 header('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!";
它总是死,我会看到这样一个角色:�
也许我需要先转义我的查询?有任何想法吗?谢谢! (顺便说一句,如果您看到任何安全问题,请随时发表评论)。
黑钻问号通常来自
- 您的字节以 latin1(而非 utf8)编码。
- 您没有指定 SET NAMES utf8。您应该使用 mysqli_* 接口,而不是 mysql_*l,然后使用 set_charset('utf8').
- 您确实在 html 的元标记中指定了 UTF-8。