我正在尝试检查是否存在一个gravatar。当我尝试早期问题中推荐的方法时,我收到错误“警告:get_headers()[function.get-headers]:此函数只能用于URL”任何人看到这个或看到我的代码中的错误? PS我不想指定gravatar的默认图像,因为如果没有gravatar退出,可能会有多个默认图像。
另外,我发现错误的引用可能与我的ini文件有关,我认为我的主机不允许我访问。如果是这样,有没有替代getheaders?非常感谢。
$email = $_SESSION['email'];
$email= "person@gmail.com"; //for testing
$gravemail = md5( strtolower( trim( $email ) ) );
$gravsrc = "http://www.gravatar.com/avatar/".$gravemail;
$gravcheck = "http://www.gravatar.com/avatar/".$gravemail."?d=404";
$response = get_headers('$gravcheck');
echo $response;
exit;
if ($response != "404 Not Found"..or whatever based on response above){
$img = $gravsrc;
}
答案 0 :(得分:11)
观察
一个。由于使用单引号get_headers('$gravcheck');
'
无效
B中。调用exit;
会过早终止脚本
℃。 $response
会返回一个您无法使用echo
打印信息的数组{/ 1}}
d。 print_r
无效,因为$response != "404 Not Found"
是数组
这是正确的方法:
$response
答案 1 :(得分:0)
在做我的一个项目时,我在php中做了一个Gravatar的简单功能。
您可以看到它。
<?php
class GravatarHelper
{
/**
* validate_gravatar
*
* Check if the email has any gravatar image or not
*
* @param string $email Email of the User
* @return boolean true, if there is an image. false otherwise
*/
public static function validate_gravatar($email) {
$hash = md5($email);
$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
$has_valid_avatar = FALSE;
} else {
$has_valid_avatar = TRUE;
}
return $has_valid_avatar;
}
/**
* gravatar_image
*
* Get the Gravatar Image From An Email address
*
* @param string $email User Email
* @param integer $size size of image
* @param string $d type of image if not gravatar image
* @return string gravatar image URL
*/
public static function gravatar_image($email, $size=0, $d="") {
$hash = md5($email);
$image_url = 'http://www.gravatar.com/avatar/' . $hash. '?s='.$size.'&d='.$d;
return $image_url;
}
}
在这里,有两个功能。
validate_gravatar()
将根据电子邮件中是否包含图片而返回true或false。gravatar_image()
将返回您的电子邮件的图片图像网址希望对其他人有帮助。