Jump to content

Access POST VARS inside PHP CLASS?


interex

Recommended Posts

Hi,

Can someone tell me how to access POST VARS from within the following class. I'm passing in a project_id along with the file upload part but I can't seem to access it. the file upload part works perfect, I'm just in the last stage of recording it to mysql database and am missing the project_id. The form is posting and is a multipart form data. Thanks.

 

<?php session_start();

include("dblink.php");

class BigUpload

{

/**

* Temporary directory for uploading files

*/

const TEMP_DIRECTORY = '../files/tmp/';

 

/**

* Directory files will be moved to after the upload is completed

*/

const MAIN_DIRECTORY = '../files/';

 

/**

* Max allowed filesize. This is for unsupported browsers and

* as an additional security check in case someone bypasses the js filesize check.

*

* This must match the value specified in main.js

*/

const MAX_SIZE = 2147483648;

 

/**

* Temporary directory

* @var string

*/

private $tempDirectory;

 

/**

* Directory for completed uploads

* @var string

*/

private $mainDirectory;

 

/**

* Name of the temporary file. Used as a reference to make sure chunks get written to the right file.

* @var string

*/

private $tempName;

 

 

    

/**

* Constructor function, sets the temporary directory and main directory

*/

public function __construct() {

$this->setTempDirectory(self::TEMP_DIRECTORY);

$this->setMainDirectory(self::MAIN_DIRECTORY);

 

}

 

/**

* Create a random file name for the file to use as it's being uploaded

* @param string $value Temporary filename

*/

public function setTempName($value = null) {

if($value) {

$this->tempName = $value;

}

else {

$this->tempName = mt_rand() . '.tmp';

}

}

 

/**

* Return the name of the temporary file

* @return string Temporary filename

*/

public function getTempName() {

return $this->tempName;

}

 

/**

* Set the name of the temporary directory

* @param string $value Temporary directory

*/

public function setTempDirectory($value) {

$this->tempDirectory = $value;

return true;

}

 

/**

* Return the name of the temporary directory

* @return string Temporary directory

*/

public function getTempDirectory() {

return $this->tempDirectory;

}

 

/**

* Set the name of the main directory

* @param string $value Main directory

*/

public function setMainDirectory($value) {

$this->mainDirectory = $value;

}

 

/**

* Return the name of the main directory

* @return string Main directory

*/

public function getMainDirectory() {

return $this->mainDirectory;

}

 

/**

* Function to upload the individual file chunks

* @return string JSON object with result of upload

*/

public function uploadFile() {

 

//Make sure the total file we're writing to hasn't surpassed the file size limit

if(file_exists($this->getTempDirectory() . $this->getTempName())) {

if(filesize($this->getTempDirectory() . $this->getTempName()) > self::MAX_SIZE) {

$this->abortUpload();

return json_encode(array(

'errorStatus' => 1,

'errorText' => 'File is too large.'

));

}

}

 

//Open the raw POST data from php://input

$fileData = file_get_contents('php://input');

 

//Write the actual chunk to the larger file

$handle = fopen($this->getTempDirectory() . $this->getTempName(), 'a');

 

fwrite($handle, $fileData);

fclose($handle);

 

 

return json_encode(array(

'key' => $this->getTempName(),

'errorStatus' => 0

));

}

 

/**

* Function for cancelling uploads while they're in-progress; deletes the temp file

* @return string JSON object with result of deletion

*/

public function abortUpload() {

if(unlink($this->getTempDirectory() . $this->getTempName())) {

return json_encode(array('errorStatus' => 0));

}

else {

 

return json_encode(array(

'errorStatus' => 1,

'errorText' => 'Unable to delete temporary file.'

));

}

}

 

/**

* Function to rename and move the finished file

* @param  string $final_name Name to rename the finished upload to

* @return string JSON object with result of rename

*/

public function finishUpload($finalName) {

$this->addToDatabase($finalName);

if(rename($this->getTempDirectory() . $this->getTempName(), $this->getMainDirectory() . $finalName)) {

return json_encode(array('errorStatus' => 0));

}

else {

return json_encode(array(

'errorStatus' => 1,

'errorText' => 'Unable to move file after uploading.'

));

}

}

 

// change this function to insert into DB once we have the info we need. //DB INSERT CLASS

public function addToDatabase($finalName){

$file_name = $finalName;

$dir_path = self::MAIN_DIRECTORY;

$path = $dir_path . $file_name;

$id = $_POST['project_id'];

mail("jonathan.wichmann@interex.com","project ID","ID is $id","From:jonathan.wichmann@interex.com");

//create insert record

$sql = "insert into files(file_name,file_path,project_id)VALUES('$file_name','$path','$project_id')";

global $dblink;

$insert = mysqli_query($dblink,$sql);

if($insert) $_SESSION['project_id'] = " ";

}

 

/**

* Basic php file upload function, used for unsupported browsers. 

* The output on success/failure is very basic, and it would be best to have these errors return the user to index.html

* with the errors printed on the form, but that is beyond the scope of this project as it is very application specific.

* @return string Success or failure of upload

*/

public function postUnsupported() {

$name = $_FILES['bigUploadFile']['name'];

$size = $_FILES['bigUploadFile']['size'];

$tempName = $_FILES['bigUploadFile']['tmp_name'];

 

if(filesize($tempName) > self::MAX_SIZE) {

return 'File is too large.';

}

 

if(move_uploaded_file($tempName, $this->getMainDirectory() . $name)) {

return 'File uploaded.';

}

else {

return 'There was an error uploading the file';

}

 

}

}

 

//Instantiate the class

$bigUpload = new BigUpload;

 

//Set the temporary filename

$tempName = null;

if(isset($_GET['key'])) {

$tempName = $_GET['key'];

}

if(isset($_POST['key'])) {

$tempName = $_POST['key'];

}

$bigUpload->setTempName($tempName);

 

switch($_GET['action']) {

case 'upload':

print $bigUpload->uploadFile();

break;

case 'abort':

print $bigUpload->abortUpload();

break;

case 'finish':

print $bigUpload->finishUpload($_POST['name']);

break;

case 'post-unsupported':

print $bigUpload->postUnsupported();

break;

}

?>

Link to comment
Share on other sites

You shouldn't be accessing globals within a class. You need to pass whatever data is required by your methods in as arguments.

 

ps: Failing to use the boards syntax highlighter or any indentation makes my eyes bleed.

Link to comment
Share on other sites

Hi,

Thanks for responding. What would that look like, I've been searching google for a few hours and can't seem to piece it in. I'm updating my coding skills from PHP4 so I'm on a rough learning curve at the moment and frusturated lol.

Any examples you can point me to would be great.

 

Thanks.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.