I'm pretty new to PHP, so if you have any thoughts or suggestions to point me in the right direction, I'd be grateful.
Trying to make a simple function to check if a user's email address translates into a valid Gravatar Image, but it seems gravatar.com has changed their headers.
Using get_headers('urlencoded_bad_email@example.com')
returns a 200 instead of 302.
Here are the headers from a bad gravatar image, none of which seem to be able to help because they are identical to a valid gravatar image:
array(13) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=>
string(13) "Server: nginx"
[2]=>
string(35) "Date: Sun, 26 Jul 2009 20:22:07 GMT"
[3]=>
string(24) "Content-Type: image/jpeg"
[4]=>
string(17) "Connection: close"
[5]=>
string(44) "Last-Modified: Sun, 26 Jul 2009 19:47:12 GMT"
[6]=>
string(76) "Content-Disposition: inline; filename="5ed352b75af7175464e354f6651c6e9e.jpg""
[7]=>
string(20) "Content-Length: 3875"
[8]=>
string(32) "X-Varnish: 3883194649 3880834433"
[9]=>
string(16) "Via: 1.1 varnish"
[10]=>
string(38) "Expires: Sun, 26 Jul 2009 20:27:07 GMT"
[11]=>
string(26) "Cache-Control: max-age=300"
[12]=>
string(16) "Source-Age: 1322"
}
p.s. I am aware of the '&d'
parameter, but it will not serve my purpose. :)
EDIT:
Use '?d'
instead of '&d'
. Must be a gravatar.com 'thang.
NOTE: at the time of writing, this was the only option. However, some later time ?d=404
was added, making Andrew's answer much cleaner.
Though you said you know about the d
parameter, do you know it actually returns a redirect header when applicable? So, the following yields 302 Found because the avatar does not exist:
HTTP/1.1 302 Found
...
Last-Modified: Wed, 11 Jan 1984 08:00:00 GMT
Location: http://www.google.com/images/logo.gif
Content-Length: 0
...
Expires: Sun, 26 Jul 2009 23:18:33 GMT
Cache-Control: max-age=300
Seems to me that all you need to do is add that d
parameter and check the HTTP result code then.