3

I have a PHP script that is supposed to redirect to a dynamic fallback URL after having executed some code. I use it to redirect user to a specific URL i.e. after a successful log in. The code is:

header('Location: '. rawurldecode('/index.php?'));

This code works well on all 3 major browsers, however, the header-location simply does not work work on iPhone. I have tested on Safari and also Chrome for iOS : both won't work.

I have also tried hard-coded full-length URLs, without success.

header("Location: http://google.com/");

EDIT

I have tried to input the domain in the redirect statement. This seems to fix the problem on the mobile browsers, but now breaks on desktop browsers...

   header('Location: http:' . $_SERVER[HTTP_HOST]. rawurldecode($_GET['redirect']));  
Rajesh
  • 10,318
  • 16
  • 44
  • 64
Yann
  • 877
  • 14
  • 25

2 Answers2

3

You can try the javascript way of redirecting the page:

Example :

    echo '<script>window.location = "'.$url.'";</script>';
    die;

It may help ...!!

Sharry India
  • 341
  • 1
  • 9
  • Thanks, using JavaScript works well. The only drawback is that the redirect occurs only after loading the body, hence the previous page is still visible for a second or so. Also, the die; statement as you mention is important to block the execution of other scripts on the page. – Yann Sep 25 '14 at 07:23
  • 1
    Good to know its work for you , happy to help ... :) – Sharry India Sep 25 '14 at 07:28
  • https://stackoverflow.com/questions/12525251/header-location-not-working-in-my-php-code this can also be the other solution – Vikas Chauhan Nov 15 '18 at 10:34
0

try this if you reload current page.

echo '<script>location.reload();</script>';