【发布时间】:2015-12-29 18:27:13
【问题描述】:
我正在尝试使用 PHP 和 mysql 创建一个用户系统。我在数据库中创建了一个名为 userz 的表并设置了我需要的所有内容。只要哈希不生成任何特殊字符,我的代码 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!";
它总是会死,我会看到这样的角色:�
也许我需要先转义我的查询?有任何想法吗?谢谢! (顺便说一句,如果您看到任何安全问题,请随时发表评论)。
【问题讨论】:
-
看起来像 wring 编码。检查数据库、数据库连接、文件、标题等
-
@bish 是的,就是这样。我已经尝试了几乎所有东西,但仍然无法正常工作。但我想我会继续尝试……
-
不要在 SQL 语句中使用 $variable,使用绑定变量。它将解决您的问题,并使您的代码更安全。请参阅此示例:stackoverflow.com/questions/23511341/…
-
您真的不应该再编写依赖于
mysql_函数的代码了。 MySQL 扩展已被弃用多年,并将在今年晚些时候即将发布的 PHP7 版本中删除。另见Why shouldn't I use mysql_* functions in PHP?。在最新的服务器上,此代码的生命周期约为 2 个月。试试 PDO,它也应该可以解决您似乎遇到的 SQL 注入问题。
标签: php mysql utf-8 character crypt