尝试在网站上实施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);
答案 0 :(得分:0)
当您回显$userInfo['email']
时,浏览器不会显示表达式可能包含的不可打印字符或HTML代码。您可以检查十六进制转储是否有任何意外字节:
echo bin2hex($userInfo['email'])
答案 1 :(得分:0)
不同的编码可能导致不同的哈希值,即使字符串在显示时看起来相同。查询可能返回一个unicode字符串。检查数据库编码并查看utf8_decode()
(或者iconv()
或mb_convert_encoding()
),以便在必要时转换地址。
$email = utf8_decode($userInfo['email']);