By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,963 Members | 904 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,963 IT Pros & Developers. It's quick & easy.

header(Location: $var) loops in IE

P: n/a
Hello everyone,

I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back
to page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.

Jul 13 '06 #1
Share this Question
Share on Google+
6 Replies


P: n/a
P-Rage wrote:
I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back to
page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.
Technically, the location you pass should be an absolute URL; try replacing
your code with something more like

header('Location: http://www.example.com/page2.php?name=' . $name);

That may or may not make your page work; I'm not sure.

(By the way, the statement $name='valid' in your if statement probably
doesn't do what you want it to do: it assigns the value 'valid' to $name,
instead of checking to see whether the two are equivalent. If that's an
actual excerpt from your code, change it to $name == 'valid' in order to
avoid unexpected behavior.)

HTH,
--
Benjamin D. Esham
bd*****@gmail.com | AIM: bdesham128 | Jabber: same as e-mail
"...English is about as pure as a cribhouse whore. We don't just
borrow words; on occasion, English has pursued other languages
down alleyways to beat them unconscious and rifle their pockets
for new vocabulary." — James Nicoll
Jul 13 '06 #2

P: n/a

Benjamin Esham wrote:
P-Rage wrote:
I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back to
page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.

Technically, the location you pass should be an absolute URL; try replacing
your code with something more like

header('Location: http://www.example.com/page2.php?name=' . $name);

That may or may not make your page work; I'm not sure.

(By the way, the statement $name='valid' in your if statement probably
doesn't do what you want it to do: it assigns the value 'valid' to $name,
instead of checking to see whether the two are equivalent. If that's an
actual excerpt from your code, change it to $name == 'valid' in order to
avoid unexpected behavior.)

HTH,
--
Benjamin D. Esham
bd*****@gmail.com | AIM: bdesham128 | Jabber: same as e-mail
"...English is about as pure as a cribhouse whore. We don't just
borrow words; on occasion, English has pursued other languages
down alleyways to beat them unconscious and rifle their pockets
for new vocabulary." - James Nicoll
Thanks for your reply! Yes that was a typo ($name == 'valid'). I am
still getting these loops occasionally after using an explicit
http-location header... any other ideas? Thanks again!

Jul 13 '06 #3

P: n/a
P-Rage, I'm not sure if this will help, but what if you put an exit();
after the header()? I've gotten in a habit of doing that due to some
weird issues I've found in the past (not sure if it was a buggy version
of PHP or IE).

Also, maybe try a couple variations in the header(). If you haven't
tried this already, try using the full URL (
"http://blah.com/page2.php?name={$name}" ) or maybe try prefixing it
with a ./ ( "./page2.php?name={$name}" ).

Hope that helps.
P-Rage wrote:
Benjamin Esham wrote:
P-Rage wrote:
I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.
>
For example, a page called 'page1.php':
>
if((isset($_POST['var'])) && ($name='valid')){
>
// insert some data into MySQL.
>
$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}
>
FireFox redirects the user to page2.php as planned. But IE6 loops back to
page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.
Technically, the location you pass should be an absolute URL; try replacing
your code with something more like

header('Location: http://www.example.com/page2.php?name=' . $name);

That may or may not make your page work; I'm not sure.

(By the way, the statement $name='valid' in your if statement probably
doesn't do what you want it to do: it assigns the value 'valid' to $name,
instead of checking to see whether the two are equivalent. If that's an
actual excerpt from your code, change it to $name == 'valid' in order to
avoid unexpected behavior.)

HTH,
--
Benjamin D. Esham
bd*****@gmail.com | AIM: bdesham128 | Jabber: same as e-mail
"...English is about as pure as a cribhouse whore. We don't just
borrow words; on occasion, English has pursued other languages
down alleyways to beat them unconscious and rifle their pockets
for new vocabulary." - James Nicoll

Thanks for your reply! Yes that was a typo ($name == 'valid'). I am
still getting these loops occasionally after using an explicit
http-location header... any other ideas? Thanks again!
Jul 13 '06 #4

P: n/a
P-Rage wrote:
Hello everyone,

I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back
to page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.
What does page2.php do? Is it possible it's doing some checking and
redirecting the user back to page1.php?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Jul 13 '06 #5

P: n/a

Jerry Stuckle wrote:
P-Rage wrote:
Hello everyone,

I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back
to page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.

What does page2.php do? Is it possible it's doing some checking and
redirecting the user back to page1.php?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Adam,

I have `exit();` at the end, and that's working, since it doesn't allow
an echo statement after that. I will try the `./` approach, but I find
it odd that IE is the only browser affected by whatever is causing this
issue.

Jerry,

There's nothing in page2.php that brings anything back to page1.php. In
fact, I don't even reach page2.php (tested with a `echo "Page 2.";
exit();` line at the very top of page2.php). Perhaps the answer lies
with previous headers? The following was include()'ed at the top of the
page. It seems pretty standard based on the docs I have read.

Expand|Select|Wrap|Line Numbers
  1. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  2. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  3. header("Cache-Control: no-store, no-cache, must-revalidate");
  4. header("Cache-Control: post-check=0, pre-check=0", false);
  5. header("Pragma: no-cache");
  6.  
Thanks for the replies you guys...

Jul 13 '06 #6

P: n/a
P-Rage wrote:
Jerry Stuckle wrote:
>>P-Rage wrote:
>>>Hello everyone,

I was wondering what could possibly cause Internet Explorer 6 to loop a
page usging a header(Location:) statement.

For example, a page called 'page1.php':

if((isset($_POST['var'])) && ($name='valid')){

// insert some data into MySQL.

$location = 'page2.php?name='.$name;
header(sprintf("Location: %s",$location));
exit();
}

FireFox redirects the user to page2.php as planned. But IE6 loops back
to page1.php (refreshes twice on most occasions). Any ideas? Thanks in
advance for any help and advice.

What does page2.php do? Is it possible it's doing some checking and
redirecting the user back to page1.php?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================


Adam,

I have `exit();` at the end, and that's working, since it doesn't allow
an echo statement after that. I will try the `./` approach, but I find
it odd that IE is the only browser affected by whatever is causing this
issue.

Jerry,

There's nothing in page2.php that brings anything back to page1.php. In
fact, I don't even reach page2.php (tested with a `echo "Page 2.";
exit();` line at the very top of page2.php). Perhaps the answer lies
with previous headers? The following was include()'ed at the top of the
page. It seems pretty standard based on the docs I have read.

Expand|Select|Wrap|Line Numbers
  1. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  2. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  3. header("Cache-Control: no-store, no-cache, must-revalidate");
  4. header("Cache-Control: post-check=0, pre-check=0", false);
  5. header("Pragma: no-cache");
  6.  

Thanks for the replies you guys...
Hmmm, that could be what's causing IE to not like it. When I'm going to
redirect I don't send *anything* before the Location: header.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Jul 14 '06 #7

This discussion thread is closed

Replies have been disabled for this discussion.