mySQL中的字符串是否与手动指定的字符串匹配?

时间:2012-02-29 15:18:29

标签: mysql md5 gravatar

尝试在网站上实施gravatar。这是返回gravatar链接的代码。

function getGravatar(){
    $email = $userInfo['email'];
    $trimmed = trim($email);
    $md5 = md5(strtolower($trimmed));
    $gravatar = "http://www.gravatar.com/avatar/" . $md5;
    return $gravatar;
}

上述代码不起作用,但如果我将$email = $userInfo['email'];替换为$email = "crumrinece@gmail.com";(与gravatar相关联的电子邮件),则会有效。在这两种情况下,我都回显了$ md5,并发现每种情况的散列都不同。

我认为这意味着我遇到了$ userInfo ['email']的问题,但是echo $userInfo['email']打印了“crumrinece@gmail.com”。所以我不知道为什么两者产生不同的哈希值。

电子邮件存储在MySql数据库中。生成$ userInfo的代码:

$query = "select * from users where username = '$username'";
$result = mysql_query($query);
$userInfo = mysql_fetch_array($result);

2 个答案:

答案 0 :(得分:0)

当您回显$userInfo['email']时,浏览器不会显示表达式可能包含的不可打印字符或HTML代码。您可以检查十六进制转储是否有任何意外字节:

echo bin2hex($userInfo['email'])

答案 1 :(得分:0)

不同的编码可能导致不同的哈希值,即使字符串在显示时看起来相同。查询可能返回一个unicode字符串。检查数据库编码并查看utf8_decode()(或者iconv()mb_convert_encoding()),以便在必要时转换地址。

$email = utf8_decode($userInfo['email']);