This is close to what I have done for testing for users/browsers acceptance of cookies. Instead of using a test cookie though, directly set the necessary cookie and pass a query string in the redirect. I have run into situations where a user may accept one cookie but not the next!
Modifying dvergin's pseudo-code:
if $cookie = $cgi->cookie("CookieName")
check to see if it meets our standards
do business
else
if $cgi->param("TestingCookie") # no need to test value
#we tried to set a cookie and failed
bailout # or notify user of cookie failure and continue
set the cookie
set a http location: header line that includes:
the url by which we arrived here +
CookieName=value in the query string +
a query string TestingCookie=1
clean up and exit
end