views:

489

answers:

4

I have some code like:

header('Refresh: 15; url=' . $url);

This works fine, except when people are visiting this url via Twitter (posted from a Hootesuite client). Apparently, in all browsers other than IE this works properly. With IE, from the Hootesuite link, this does not refresh properly; a direct link does.

Why?

+1  A: 

I always advocate a combination to avoid problems with the inevitable WebTV user:

  • Header (as you're doing)
  • Meta tag (in the HTML head)
  • Javascript timeout

If the Twitter client is using a link shortener, the type of redirect may be influencing IE in an unanticipated way.

Pestilence
A: 

Have you tired setting the location header instead, for example.

$url = "http://www.example.com/";
header("Location: " . $url);
stukelly
A: 

It turns out that, because the URL we're using sets a cookie, and Hootsuite creates a frame, that IE won't trust the third party cookie (our site). So I've added some framebuster code to the page, and triggered it to happen "immediately" if the browser is IE. Code is below:

<meta http-equiv="refresh" content="15;url=<?php echo $url ?>" />
<script type="text/javascript">
var timeout = 1;
if (navigator.userAgent.match(/MSIE/)) { timeout = 1; } else { timeout = 14500; }
setTimeout('if (top != self) top.location.replace(self.location.href)', timeout);
</script>

Maybe this will help some other random user out there some day.

gms8994
A: 

Maybe this will help some other random user out there some day.

It did - thanks

Sidesteal