Re: Redirecting in a PHP script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




----- Original Message ----- From: "Larry Bradley" <lhbradley@xxxxxxx>
To: <php-general@xxxxxxxxxxxxx>
Sent: Monday, March 12, 2007 9:02 PM
Subject:  Redirecting in a PHP script


I need to "goto"  different PHP pages in my web site depending on what
happens within some PHP code.

For example, if the user is not logged in when he goes to a page, I want to
send him to a LOGIN page.

I've have everything working fine, using the following Javascript code:
            $location = 'login.php';
                echo "<script language='javascript'>\n";
                echo "document.location.href = '" . $location . "';\n";
                echo "</script>\n";

I also played around with using the header("location: ...") function.

I understand that the header() function must be issued before any HMTL is
output.

But I'm not sure about the Javascript code. In every instance in my code, I use the Javascript before any HTML - this type of action normally occurs in
PHP code called via a form POST.

I presume that the Javascript code really does the same as the PHP stuff,
and thus must obey the same rules, but I'm not sure.
Comments?

Larry Bradley
Orleans (Ottawa), Ontario, CANADA

The header function fails if anything at all is sent to the browser, be it plain HTML, JavaScript code or even a single space. The header function does not differentiate between the visible part of the page (that within the <body>) or what goes before, it fails even if a whitespace is sent before the <html> or <!doctype declaration.

A redirect via JavaScript can be done at any time and it is no different than a user clicking on a <a href=> tag. It will be executed when found or when invoked. If not contained within a function, it will be executed at once, no matter if the full page has not been loaded yet. If within a function, whenever it is called.

Notice, though, the effect on the History. The header() call will have only the destination page stored on the History, the JavaScript will have both the original and the final destination. Thus, redirecting with JavaScript will get you into a loop if after reaching the destination you click on the back button, because you will fall in the page containing the redirection. I'm sure you found places like that. The only way to actually go back in those is to open the dropdown list for the back button and skip over one item. That does not happen when using the header() PHP function.

Satyam

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux