Newsgroup: it.comp.www.php
Titolo: Redirect

ASP has <%Response.redirect("
http://blahblah
")%>
What is the equivalent command in php to redirect a user to a new URL in 
the same window? Or is there a Javascript command that does this job better?
Thanks,
Purple Haze

the same window? Or is there a Javascript command that does this job better?
http://www.php.net/header
Micha


After using:
header("Location: 
http://www.example.com/
");
Its complaining headers have already been sent, and doesn't redirect.


Read the entire section on the header() function, don't just skip down to 
the examples. header() must be called before any output (including 
whitespace before <?php) has been sent. 

Agelmar wrote:

I guess I should have been more specfic, I need a redirect-function that 
can be called anytime in the script. In this instance after the script 
has determined that a vaild user and pass have been submitted.
Purple Haze

has determined that a vaild user and pass have been submitted.
Of course you can do this with header(), but you either
* have to make sure there's no other output sent to the browser before
  (Does the check for a valid user prints anything out?)
or
* have to use output buffering.
Micha

Michael Fesser wrote:

I am still unclear what your referring to, perhaps a copy of the script 
will help...
<center>
<form ACTION="login.php" name="saveform" METHOD="POST" align="center">
<p><input NAME="username"VALUE SIZE="8" MAXLENGTH="16" tabindex="1"></p>
<p><input type="password"name="password" size="8" tabindex="2" 
maxlength="8"></p>
<p><input TYPE="button"NAME="FormsButton2" VALUE="Validate" 
ONCLICK="submit()" tabindex="3"style="font-family: Verdana; font-size: 
12pt">
</form>
</center>
<?php
$mysql_database="login";
$mysql_username="root";
$mysql_password="";
$link = mysql_connect("localhost",$mysql_username,$mysql_password) or 
die ("Unable to connect to SQL server");
mysql_select_db($mysql_database,$link) or die ("Unable to select database");
$username = $HTTP_POST_VARS['username'];
$password = $HTTP_POST_VARS['password'];
if (isset($password))
{
$qstr = "SELECT * from members where user ='$username' and pass 
='$password'";
$result = mysql_query($qstr);
if (mysql_num_rows($result))
{
echo "<font color=#008000><Center><b>**Successful 
Login**</b></Center></font>";
header("Location: 
http://www.example.com/
");
exit;
}
else echo "<font color=#ff0000><Center><b>**Failed 
Login**</b></Center></font>";
mysql_close();
}
else echo "<font color=#ff8000><Center><b>**No login 
attempted**</b></Center></font>";
?>

 
Found the answer to my own question :/
I had a feeling javascript was the key here:
echo "<script>window.location=\"login1.php\"</script>";
will do the job

 will do the job
What about any client without javascript?
Fix your php code instead...
-- 
  Daniel Tryba

will do the job
Unreliable.
Try to fix your script instead: First - before anything else - check if
the user is valid, then redirect or print out the form.
Micha
PS: Please don't send me copies of your postings by e-mail. I read the
groups I'm posting to.

Purple Haze wrote:

Bad idea. If they have Javascript disabled or Javascript blocking software
they aren't going to be redirected either.
You have two solutions:
1) Make the very first thing in the page BEFORE any HTML <?php
ob_start(); ?> which will start output buffering. You can then set any
headers you want at any point in the page and the HTML won't be sent to the
browser until the script ends.
2) Move all your HTML down to be underneath your PHP code and recode the
page as appropriate. 
In my opinion, and I'm sure many others here, (2) is the better solution as
it makes sense for your validation to be done before rendering any HTML .
-- 
Chris Hope - The Electric Toolbox - 
http://www.electrictoolbox.com/

 the same window? Or is there a Javascript command that does this job
better?
From reading your posts and the others responses, I have determined that you
almost have it.
FYI, do not use the javascript method -- that will not always work.
Your code is fine; what you need to do is, put your PHP code ABOVE your HTML
code.
In your PHP code, after you issue the header() command, you need to add
exit(); to the code
so that nothing else on the page executes once you redirect the browser's
location.
If the user's login failed, the html form will show up since it is below the
PHP code.
Hope this helps -
____________________________________
Wil Moore III, MCP | Integrations Specialist

laid...@hotmail.com
 wrote:

  Yep, I was able to accomplish that using a previous post, Thanks anyway.
I can also see why using header() is better than javascript.

 wrote in message 
news:MuI4d.741$%06....@newsread3.news.atl.earthlink.net...

There'e your problem right there - you have an echo statement just before 
the header(). Remove the echo and the header() will work.
-- 
Tony Marston
http://www.tonymarston.net
