How can I redirect a user?
Moderator: General Moderators
How can I redirect a user?
Hi guys,
I'm trying to teach myself PHP, and I've spent a while looking for some code that will do a particular job, but haven't had any luck so far.
What I want is to be able to redirect a user to a different page. The logic I'm trying to use is:
if (condition is true)
send user to the page they wanted
else
send user to the error page
Is these a nice easy way to do this?
I'm trying to teach myself PHP, and I've spent a while looking for some code that will do a particular job, but haven't had any luck so far.
What I want is to be able to redirect a user to a different page. The logic I'm trying to use is:
if (condition is true)
send user to the page they wanted
else
send user to the error page
Is these a nice easy way to do this?
Code: Select all
if ($foo) {
header('Location: http://example.org/page.php');
} else {
header('Location: http://example.org/error.php');
}Hmm, I think I've found a limitation to this, or I'm doing something else wrong.
I have a processing page for a form. It includes another file which has some universal functions in it - I wanted to keep them seperate for modularity. So I include the file, do some basic validation of the data, put the data into the database, create a folder on the server based on what was in the form, and then bump the user off to the results page.
That's the theory, anyway. What I get is the following error:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/_fuctions/directoryManagement.php:58) in /var/www/html/adminAdd.php on line 29
Line 29 is, unsurprisingly, header('Location: http://onehouseproductions.com/siteAdmin.php');
Why doesn't it like it? Why does my other processing page, which I was working on yesterday when I first asked the question, understand this code perfectly?
I is confuzzled.
I have a processing page for a form. It includes another file which has some universal functions in it - I wanted to keep them seperate for modularity. So I include the file, do some basic validation of the data, put the data into the database, create a folder on the server based on what was in the form, and then bump the user off to the results page.
That's the theory, anyway. What I get is the following error:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/_fuctions/directoryManagement.php:58) in /var/www/html/adminAdd.php on line 29
Line 29 is, unsurprisingly, header('Location: http://onehouseproductions.com/siteAdmin.php');
Why doesn't it like it? Why does my other processing page, which I was working on yesterday when I first asked the question, understand this code perfectly?
I is confuzzled.
Hmm... OK, so apparently I have something outputting something before the redirect. The trouble is, I can't figure out what. The included file has three functions in it, but they shouldn't be outputting anything as far as I can tell. And I can't find anything else in my code that will be outputting anything either.
In case anyone more familiar with PHP than me (which is pretty much everyone here - I began working with it for the first time yesterday) can see what I'm missing, here's the two files.
The processing file:
And the included file with the functions:
The functions have all been written by other people and gleaned from various sources (mostly the user comments in the php.net manual) so I must confess to not being entirely certain what they do or why.
I would be very grateful if someone could look over my code and tell me why it hates me.
In case anyone more familiar with PHP than me (which is pretty much everyone here - I began working with it for the first time yesterday) can see what I'm missing, here's the two files.
The processing file:
Code: Select all
<?php
include '_fuctions/directoryManagement.php';
// declare some relevant variables
$DBhost = "localhost";
$DBuser = "myname";
$DBpass = "mypass";
$DBName = "mydb";
$table = "client_site";
// this converts the form variables somehow
import_request_variables('p', 'p_');
// connect to database
$link = mysql_connect($DBhost,$DBuser,$DBpass);
@mysql_select_db("$DBName") or die("Unable to select database $DBName");
/**************************************/
/* check if client exists */
/**************************************/
// create the query to compare the form data with the records in the client_site table
$sqlquery = "SELECT * FROM $table WHERE clientName = '" . $p_clientName . "' OR sitePath = '" . $p_sitePath . "'";
// run the query and check it worked
$result = mysql_query($sqlquery,$link);
if (!$result = mysql_query($sqlquery,$link))
exit("Illegal query");
// get the number of rows returned by the query
$number = mysql_num_rows($result);
// if query returned any records, abort
if ($number != "0") {
header('Location: http://onehouseproductions.com/siteAdmin.php');
exit;
}
/*************************************/
/* add details to the database */
/*************************************/
// create the query to add data to the client_site table
$sqlquery = "INSERT INTO $table VALUES ('','" . $p_clientName . "','" . $p_sitePath . "')";
// run the query and check it worked
$result = mysql_query($sqlquery,$link);
if (!$result = mysql_query($sqlquery,$link))
exit("Illegal query");
/*************************************/
/* create folder on server */
/*************************************/
//is_emtpy_folder($p_sitePath);
if (!Another_is_dir($p_sitePath)) {
FtpMkdir(mainwebsite_html,$p_sitePath);
}
header('Location: http://onehouseproductions.com/siteAdmin.php');
?>Code: Select all
<?php
/****************************************/
/* check if folder exists */
/****************************************/
function Another_is_dir($file) {
return ((fileperms("$file") & 0x4000) == 0x4000);
}
/***************************************/
/* check if folder exists and is empty */
/***************************************/
function is_emtpy_folder($folder){
if(is_dir($folder) ){
$handle = opendir($folder);
while( (gettype( $name = readdir($handle)) != "boolean")){
$name_array[] = $name;
}
foreach($name_array as $temp)
$folder_content .= $temp;
closedir($handle);
if($folder_content == "...") {
return true;
} else {
return false;
}
}
else
return true; // folder doesnt exist
}
/*******************************************/
/* create directory through FTP connection */
/*******************************************/
function FtpMkdir($path, $newDir) {
$server='www.onehouseproductions.com'; // ftp server
$connection = ftp_connect($server); // connection
// login to ftp server
$user = "myname";
$pass = "mypass";
$result = ftp_login($connection, $user, $pass);
// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection,$newDir)) { // create directory
return $newDir;
} else {
return false;
}
ftp_close($conn_id); // close connection
}
}
?>The functions have all been written by other people and gleaned from various sources (mostly the user comments in the php.net manual) so I must confess to not being entirely certain what they do or why.
I would be very grateful if someone could look over my code and tell me why it hates me.
personally i like to use the handy of javascript to redirect.
u might give it a try.
u might give it a try.
Code: Select all
<script language="javascript">
location.replace("page.php");
</script>