[PHP] Kiểm tra và lấy ảnh từ dịch vụ Gravatar

Trong bài viết hôm nay tôi sẽ giới thiệu đến các bạn cách kiểm tra một người nào đó có sử dụng dịch vụ Gravatar hay không. Và nếu có sử dụng thì chúng ta sẽ lấy ảnh của người đó. Nhưng đầu tiên tôi sẽ giới thiệu sơ lược về ý nghĩa, mục đích khi dùng dịch vụ Gravatar.

1, Gravatar là gì ?

Gravatar viết tắt của cụm từ Globally Recognized Avatar – Hình đại diện được nhận dạng toàn cầu. Đây là một hình đại diện có kích thước mặc định là 80×80, nó xuất hiện bên cạnh tên của bạn và có thể được hiển thị ở bất cứ đâu, chỉ cần bạn điền email của bạn là hình đại diện của bạn sẽ được hiển thị. Hiểu đơn giản nó chính là một avatar của các bạn nhưng avatar này có thể được sử dụng ở bất kỳ đâu, bất kỳ website nào các bạn muốn (tất nhiên website phải hỗ trợ Gravatar).

Gravatar có thể hiển thị trên các blog của WordPress, TextPattern, MovablePad, Expression Engine, Nucleus, Blojsom, Blogger, Live Journal.

Các bạn có thể đăng kí Gravatar tại đây. Ngoài ra các bạn có thể tham khảo thêm một số bài viết của tác giả khác về Gravatar.

2, Lấy ảnh từ Gravatar bằng PHP

Vì dịch vụ Gravatar liên kết với địa chỉ email nên đầu tiên các bạn cần 1 địa chỉ email mà bạn muốn lấy ảnh đại diện (avatar). Sau khi có được địa chỉ email, chúng ta sẽ lấy chuỗi băm MD5 (hash) chứa địa chỉ email đó.

<?php
$email= "your-email@domain.com";
// Xóa khoảng trống 2 đầu của email (nếu có)
$email = trim($email);
// Đổi sang chữ thường
$email = strtolower($email);
// Tạo chuỗi băm
$email_hash = md5($email);
?>

 

Sau khi có chuỗi băm, các bạn chỉ cần gởi yêu cầu (request) cho Gravatar theo cấu trúc sau:

https://www.gravatar.com/avatar/EMAIL_HASH

Như vậy, để lấy ảnh thì bạn chỉ cần thay EMAIL_HASH bằng biến $email_hash ở đoạn code trên. Ví dụ, để hiển thị ảnh, bạn chỉ cần dùng câu lệnh:

<img src="https://www.gravatar.com/avatar/<?php echo $email_hash?>" alt="" />

3, Quy định kích thước ảnh lấy về

Mặc định ảnh có kích thước là 80 x 80. Nhưng chúng ta có thể dùng tham số “s=” hoặc “size=” để quy định kích thước ảnh mà chúng ta lấy về. Các bạn có thể lấy các ảnh từ kích thước 1px đến 2048px.

<img src="https://www.gravatar.com/avatar/<?php echo $email_hash?>?s=125" alt="" />

4, Ảnh mặc định trả về

Nếu một người dùng chưa có ảnh đại diện thì ảnh trả về sẽ là ảnh mặc định của Gravatar (hình bên dưới).

Gravatar Default

Bạn không thích ảnh mặc định này và muốn sử dụng ảnh mặc định của riêng bạn (logo, biểu tượng vui…) ? Bạn có thể dùng tham số “d=” hoặc “default=” để thay đổi ảnh mặc định với đoạn code sau:

<?php
$path = "https://www.gravatar.com/avatar/".$email_hash;
$d = urlencode("http://example.com/images/avatar.jpg");
?>
<img src="<?php echo $path; ?>/?d=<?php echo $d; ?>" alt="" />

Khi đó đường dẫn sinh ra có dạng như sau:

<img src="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=http%3A%2F%2Fexample.com%2Fimages%2Favatar.jpg" alt="" />

Gavatar cũng cung cấp một số ảnh mặc định để bạn lựa chọn. Đó là:

  • 404 (Không load ảnh nếu email không có ảnh đại diện, thay vào đó sẽ trả về một HTTP Error 404)
  • mm (mystery-man)
  • identicon
  • monsterid
  • wavatar
  • retro
  • blank (Trả về một ảnh trong suốt định dạng PNG)

Và đây là ảnh mặc định của Gravatar

Gravatar Default images

Đoạn code sử dụng ảnh mặc định của Gravatar

<?php
$path = "https://www.gravatar.com/avatar/".$email_hash;
?>
<img src="<?php echo $path ?>/?d=404" alt="" />
<img src="<?php echo $path ?>/?d=mm" alt="" />
<img src="<?php echo $path ?>/?d=identicon" alt="" />
<img src="<?php echo $path ?>/?d=monsterid" alt="" />
<img src="<?php echo $path ?>/?d=wavatar" alt="" />
<img src="<?php echo $path ?>/?d=retro" alt="" />

Ngoài ra, vì một lí do nào đó, bạn chỉ muốn ảnh trả về luôn luôn là ảnh mặc định của Gravatar thì bạn hãy sử dụng tham số “f=” hoặc “forcedefault=” và thiết lập giá trị cho tham số là “y”

https://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50?f=y

5, Kiểm tra người dùng có sử dụng dịch vụ Gravatar

Trong một số trường hợp, bạn cần xác nhận rằng liệu người dùng có sử dụng một ảnh đại diện thật sự từ Gravatar (ảnh do chính người dùng ấy đăng kí với Gravatar) hay chỉ là ảnh mặc định trả về. Đoạn code dưới đây sẽ giúp bạn xác nhận điều đó.

<?php
function validate_gravatar($email) {
//Tạo chuỗi băm dựa trên địa chỉ email nhập vào
$hash = md5(strtolower(trim($email)));
$uri = 'https://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;
}
?>

Trong phần Lấy ảnh mặc định ở trên, tôi đã đề cập đến tham số “d=” với các giá trị tương ứng (404, mm, blank…) thì nếu các bạn sử dụng “d=404” thì các bạn có thể kiểm tra liệu người dùng có đăng kí ảnh đại diện với Gravatar hay chưa.

6, Tham khảo

Trên đây là những thông tin cơ bản và những thủ thuật nhỏ để các bạn làm việc với Gravatar. Hi vọng bài viết này giúp ích cho các bạn. Thân ái!

Tấn Việt

Tôi lập trang web này để thỏa mãn sở thích viết cái gì đó vui vui khi rãnh rỗi và đồng thời cũng chia sẻ những gì tôi biết hoặc đọc đâu đó trên mạng về Lập trình web. Tôi hi vọng những bài viết này sẽ giúp ích cho các bạn. Thân ái!

You may also like…

2 Responses

  1. Da Tran says:

    Tôi mới học gravatar

  2. Giấy dán tường Hà Nội says:

    Các website hay diễn đàn sử dụng tính năng này e thấy rất hay, giúp cho người dùng có thể dễ dàng comment để quảng bá thương hiệu, nhận diện thương hiệu riêng của mình, cũng như khi thành viên sử dụng gravatar cũng mang tính chuyên nghiệp hơn những bạn đi spam vô nghĩa