Want to add re-direct when Submit is selected

Discussion in 'PHP' started by chrisj, Aug 17, 2007.

  1. #1
    Hi,

    I'm using this Upload script and would simply like to re-direct the User, after he's Uploaded, to a different location. I don't know where/how to do it?

    Can you help me?
    Someone suggested:
    At the very bottom of this file, right after this line: return $message;
    Add this: header("Location: http://whereveryouwantthemtogo.com");

    Which I did, but I wasn't redirected. Any thoughts/suggestions/assistance will be greatly appreciated.


    <?
    		// Begin options
    
    	$allow_file_deletion = true; // To allow visitors to delete files, leave this at true; otherwise, change it to false
    
    	$file_extensions = array(".doc", ".rtf", ".htm", ".html", ".pdf", ".txt"); // Add or delete the file extensions you want to allow
    
    	$file_extensions_list = "doc,  rtf,  htm,  html,  pdf,  txt"; // Type the same as above, without the quotes separating them
    
    	$max_length = 50; // The maximum character length for a file name
    
    	$maximum_file_size = "2048000"; // In bytes
    
    	$upload_log_file = "upload_log.txt"; // Change this to the log file you want to use
    
    	// End options
    
    	$folder_directory = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]);
    	$message = "";
    	$set_chmod = 0;
    	$site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
    	$upload_directory = "files/";
    	$upload_uri = $folder_directory."/files/";
    
    	if($allow_file_deletion == true) $status = "enabled";
    	else $status = "disabled";
    
    	if($_REQUEST["delete"] && $allow_file_deletion) {
    	$resource = fopen($upload_log_file,"a");
    	fwrite($resource,date("F d, Y / h:i:sa")." - ".$_REQUEST["delete"]." deleted by ".$_SERVER["REMOTE_ADDR"]."\n");
    	fclose($resource);
    
    	if(strpos($_REQUEST["delete"],"/.") > 0);
    	elseif(strpos($_REQUEST["delete"],$upload_directory) === false);
    	elseif(substr($_REQUEST["delete"],0,6) == $upload_directory) {
    	unlink($_REQUEST["delete"]);
    	$message = "File has been deleted.";
    	header("Location: $site_uri?message=$message");
    	}
    	}
    
    	elseif($_FILES["userfile"]) {
    	$resource = fopen($upload_log_file,"a");
    	
    fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"] ["name"]." ".$_FILES["userfile"]["type"]." (".$_FILES["userfile"]["size"]." bytes) uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
    	fclose($resource);
    
    
    	$file_type = $_FILES["userfile"]["type"]; 
    	$file_name = $_FILES["userfile"]["name"];
    	$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
    	@chmod($upload_uri."".$file_name, 0755);
    	if($_FILES["userfile"]["size"] > $maximum_file_size) {
    	$message = "ERROR: File size cannot be over ".$maximum_file_size." bytes.";
    	}
    
    	elseif($file_name == "") $message = "ERROR: Please select a file to upload.";
    	elseif(strlen($file_name > $max_length)) $message = "ERROR: The maximum length for a file name is ".$max_length." characters.";
    	elseif(!preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: Your file name contains invalid characters.";
    	elseif(!in_array($file_ext, $file_extensions))
    	$message = "ERROR: <ins>$file_ext</ins> is not an allowed file extension.";
    	else $message = upload_file($upload_directory, $upload_uri);
    	header("Location: $site_uri?message=$message");
    	}
    
    	elseif(!$_FILES["userfile"]);
    	else $message = "ERROR: Invalid file specified.";
    
    	$open = opendir($upload_directory);
    	$uploaded_files = "";
    	while($file = readdir($open)) {
    	if(!is_dir($file) && !is_link($file)) {
    	$uploaded_files .= "		<tr>
    				<td style=\" font-size:12px;color:#900;text-align: left; width: 70%\"> <a href=\"$upload_directory$file\" title=\"$file (".filesize($upload_directory."".$file)." bytes)\">".$file."</a> (".filesize($upload_directory."".$file)." bytes)</td>";
    	if($allow_file_deletion)
    	$uploaded_files .= "
    				<td style=\"background: #fff; font-size:12px;color:#6B6B6B; text-align: right; width: 30%\"><a href=\"?delete=$upload_directory".urlencode($file)."\" title=\"Delete File\">Delete File</a></td>";
    	else
    	$uploaded_files .= "
    				<td style=\"background: #fff; font-size:12px;color:#6B6B6B; text-align: right; width: 30%\"><del>Delete File</del></td>";
    	$uploaded_files .= "
    			</tr>
    			<tr>
    				<td colspan=\"2\" style=\"background: #eee; font-size:12px;color:#6B6B6B; text-align: left; text-indent: 20px\">        Uploaded--"     .date("F d, Y ", filemtime($upload_directory.$file))."</td>";
    	$uploaded_files .="
    			</tr>
    	";
    	}
    	}
            function upload_file($upload_directory, $upload_uri) {global $account;
            $file_name = $_FILES["userfile"]["name"];
    	$file_name = str_replace(" ","_",$file_name);
    	$ext=pathinfo($file_name,PATHINFO_EXTENSION);
            $file_name = basename($file_name, '.' . $ext);
            $file_path = $upload_directory. $file_name.'~~'. $account->get_user_name().'.'.$ext;
    
    	$temporary = $_FILES["userfile"]["tmp_name"];
    
    	$result = move_uploaded_file($temporary, $file_path);
    	if(!chmod($file_path,0777))
    	$message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777.";
    	else $message = ($result)?"File has been uploaded." : "An error has occurred.";
    	return $message;
    header("Location: http://www.adifferentwebpage.com");
    	}
    ?>
    
    Code (markup):
     
    chrisj, Aug 17, 2007 IP
  2. ars_oguz

    ars_oguz Peon

    Messages:
    9
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    you have
    return $message;
    header("Location: http://www.adifferentwebpage.com");

    So your header function never runs as you return before it.
    You should move it before return or out of your function.
     
    ars_oguz, Aug 17, 2007 IP
  3. chrisj

    chrisj Well-Known Member

    Messages:
    606
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    101
    #3
    Thanks for your reply.

    I put the header function BEFORE the return message, it didn't re-direct.
    I removed the return message, added the header function, it didn't re-direct.

    I appreciate your suggestion, but no luck.

    Any other ideas would be appreciated.
     
    chrisj, Aug 17, 2007 IP
  4. ars_oguz

    ars_oguz Peon

    Messages:
    9
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    i cant know the running order of the code without executing it. But i can suggest you to use die("something"); in several lines and see if the code executes until that line correctly.
    Because header should redirect if it has been executed. Also i put die(); after all redirection codes to guarantee that it wont execute below code.

    Hope those will work, see you...
     
    ars_oguz, Aug 17, 2007 IP
  5. chrisj

    chrisj Well-Known Member

    Messages:
    606
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    101
    #5
    thanks for your reply.

    I don't understand what you're suggesting I do with "die"

    Can you clarify/elaborate?
     
    chrisj, Aug 17, 2007 IP
  6. HuggyCT2

    HuggyCT2 Guest

    Messages:
    222
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #6
    You can use html, javascript aswell for a redirect only reason a header will not work is if you have already outputted a response before it was requested.

    You can just echo out the html redirect which will work fine.

    
    <meta http-equiv='refresh' content='5; url=http://domain.com'>
    
    HTML:
     
    HuggyCT2, Aug 18, 2007 IP