PHP header(“Refresh”) problems

前端 未结 3 1041
再見小時候
再見小時候 2020-12-22 11:26

I have some code like:

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

This works fine, except when people are visiting this url via Twitter (posted

相关标签:
3条回答
  • 2020-12-22 11:33

    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.

    0 讨论(0)
  • 2020-12-22 11:44

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

    $url = "http://www.example.com/";
    header("Location: " . $url);
    
    0 讨论(0)
  • 2020-12-22 11:48

    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.

    0 讨论(0)
提交回复
热议问题