在閱讀這篇前:會先建議閱讀
CodeIgniter4 藉由地址 email 取得用戶的頭像
如果查詢的電子郵件不存在Gravatar,您可以通過檢查返回的圖像URL是否與默認圖像URL相同來判斷。請按照以下步驟操作:
在gravatar_helper.php中,添加一個新函數email_has_gravatar:
function email_has_gravatar($email, $default_image = '404')
{
$url = 'https://www.gravatar.com/avatar/';
$url .= md5(strtolower(trim($email)));
$url .= "?d=$default_image";
$headers = @get_headers($url);
if (strpos($headers[0], '200') !== false) {
return true;
} else {
return false;
}
}
這個email_has_gravatar函數會向Gravatar發送請求並檢查HTTP響應代碼。如果響應代碼為200,則表示查詢的電子郵件存在Gravatar;否則,表示不存在Gravatar。
在控制器中調用email_has_gravatar函數,並將電子郵件地址作為參數傳遞。例如:
$email = 'user@example.com';
if (email_has_gravatar($email)) {
// 電子郵件地址存在Gravatar
$gravatar_url = get_gravatar($email);
} else {
// 電子郵件地址不存在Gravatar
// 在這裡設置自定義默認頭像或執行其他操作
}
這樣,您可以根據查詢的電子郵件地址是否存在Gravatar來決定如何處理頭像。如果不存在Gravatar,您可以設置自定義默認頭像或執行其他適當操作。
如果判斷到電子郵件地址不存在Gravatar。我們可以使用一些開源的圖像來作替代:
DiceBear Avatars: https://avatars.dicebear.com/
DiceBear Avatars提供多種風格的隨機生成SVG頭像,包括像素藝術、機器人等風格。您可以通
過API請求來生成隨機頭像,例如:
https://avatars.dicebear.com/api/:sprites/:seed.svg
其中,:sprites是頭像風格,如male、female、human等,:seed是用於生成頭像的隨機數字或字符串。
RoboHash: https://robohash.org/
RoboHash生成各種風格的機器人頭像。您可以通過簡單的URL格式來獲得隨機頭像,例如:https://robohash.org/:seed
其中,:seed是用於生成頭像的隨機數字或字符串。
以下我們用 DiceBear Avatars 做個範例:
您可以修改gravatar_helper.php中的get_gravatar函數,以便在沒有註冊Gravatar時使用DiceBear Avatars。請按照以下步驟操作:
修改gravatar_helper.php中的get_gravatar函數,將其重命名為get_avatar,並在其中添加檢查Gravatar存在與否的邏輯:
function get_avatar($email, $size = 80, $default_image = 'identicon', $rating = 'g')
{
if (email_has_gravatar($email)) {
$url = 'https://www.gravatar.com/avatar/';
$url .= md5(strtolower(trim($email)));
$url .= "?s=$size&d=$default_image&r=$rating";
} else {
$seed = md5(strtolower(trim($email)));
$url = "https://avatars.dicebear.com/api/identicon/$seed.svg?size=$size";
}
return $url;
}
這裡,我們使用email_has_gravatar函數檢查電子郵件地址是否存在Gravatar。如果存在Gravatar,則生成Gravatar的URL;否則,生成DiceBear Avatars的URL。
在控制器中調用get_avatar函數,並將電子郵件地址作為參數傳遞。例如:
$email = 'user@example.com';
$avatar_url = get_avatar($email);
這樣,在用戶未註冊Gravatar時,將使用DiceBear Avatars生成一個隨機頭像。

留言
張貼留言