Problem here need help!

by 7 replies
9
Hi professional coders..

I have been tinkering around with php scripts for an online ebook store..

I did everything according to the instructions, however when I tried to access the "./admin" of the site, this appeared.

Fatal error: Cannot re-assign $this in /home/CENSORED4Privacy/public_html/admin/includes/classes/upload.php on line 24

is that got to do some php part which I left out?

Help please!

Ed
#programming #problem


  • <?php
    /*

    */

    class upload {
    var $file, $filename, $destination, $permissions, $extensions, $tmp_filename, $message_location;

    function upload($file = '', $destination = '', $permissions = '777', $extensions = '') {
    $this->set_file($file);
    $this->set_destination($destination);
    $this->set_permissions($permissions);
    $this->set_extensions($extensions);

    $this->set_output_messages('direct');

    if (tep_not_null($this->file) && tep_not_null($this->destination)) {
    $this->set_output_messages('session');

    if ( ($this->parse() == true) && ($this->save() == true) ) {
    return true;
    } else {
    // self destruct
    $this = null;

    return false;
    }
    }
    }

    function parse() {
    global $messageStack;

    if (isset($_FILES[$this->file])) {
    $file = array('name' => $_FILES[$this->file]['name'],
    'type' => $_FILES[$this->file]['type'],
    'size' => $_FILES[$this->file]['size'],
    'tmp_name' => $_FILES[$this->file]['tmp_name']);
    } elseif (isset($GLOBALS['HTTP_POST_FILES'][$this->file])) {
    global $HTTP_POST_FILES;

    $file = array('name' => $HTTP_POST_FILES[$this->file]['name'],
    'type' => $HTTP_POST_FILES[$this->file]['type'],
    'size' => $HTTP_POST_FILES[$this->file]['size'],
    'tmp_name' => $HTTP_POST_FILES[$this->file]['tmp_name']);
    } else {
    $file = array('name' => (isset($GLOBALS[$this->file . '_name']) ? $GLOBALS[$this->file . '_name'] : ''),
    'type' => (isset($GLOBALS[$this->file . '_type']) ? $GLOBALS[$this->file . '_type'] : ''),
    'size' => (isset($GLOBALS[$this->file . '_size']) ? $GLOBALS[$this->file . '_size'] : ''),
    'tmp_name' => (isset($GLOBALS[$this->file]) ? $GLOBALS[$this->file] : ''));
    }

    if ( tep_not_null($file['tmp_name']) && ($file['tmp_name'] != 'none') && is_uploaded_file($file['tmp_name']) ) {
    if (sizeof($this->extensions) > 0) {
    if (!in_array(strtolower(substr($file['name'], strrpos($file['name'], '.')+1)), $this->extensions)) {
    if ($this->message_location == 'direct') {
    $messageStack->add(ERROR_FILETYPE_NOT_ALLOWED, 'error');
    } else {
    $messageStack->add_session(ERROR_FILETYPE_NOT_ALLOWED, 'error');
    }

    return false;
    }
    }

    $this->set_file($file);
    $this->set_filename($file['name']);
    $this->set_tmp_filename($file['tmp_name']);

    return $this->check_destination();
    } else {
    if ($this->message_location == 'direct') {
    $messageStack->add(WARNING_NO_FILE_UPLOADED, 'warning');
    } else {
    $messageStack->add_session(WARNING_NO_FILE_UPLOADED, 'warning');
    }

    return false;
    }
    }

    function save() {
    global $messageStack;

    if (substr($this->destination, -1) != '/') $this->destination .= '/';

    if (move_uploaded_file($this->file['tmp_name'], $this->destination . $this->filename)) {
    chmod($this->destination . $this->filename, $this->permissions);

    if ($this->message_location == 'direct') {
    $messageStack->add(SUCCESS_FILE_SAVED_SUCCESSFULLY, 'success');
    } else {
    $messageStack->add_session(SUCCESS_FILE_SAVED_SUCCESSFULLY, 'success');
    }

    return true;
    } else {
    if ($this->message_location == 'direct') {
    $messageStack->add(ERROR_FILE_NOT_SAVED, 'error');
    } else {
    $messageStack->add_session(ERROR_FILE_NOT_SAVED, 'error');
    }

    return false;
    }
    }

    function set_file($file) {
    $this->file = $file;
    }

    function set_destination($destination) {
    $this->destination = $destination;
    }

    function set_permissions($permissions) {
    $this->permissions = octdec($permissions);
    }

    function set_filename($filename) {
    $this->filename = $filename;
    }

    function set_tmp_filename($filename) {
    $this->tmp_filename = $filename;
    }

    function set_extensions($extensions) {
    if (tep_not_null($extensions)) {
    if (is_array($extensions)) {
    $this->extensions = $extensions;
    } else {
    $this->extensions = array($extensions);
    }
    } else {
    $this->extensions = array();
    }
    }

    function check_destination() {
    global $messageStack;

    if (!is_writeable($this->destination)) {
    if (is_dir($this->destination)) {
    if ($this->message_location == 'direct') {
    $messageStack->add(sprintf(ERROR_DESTINATION_NOT_WRITEABLE, $this->destination), 'error');
    } else {
    $messageStack->add_session(sprintf(ERROR_DESTINATION_NOT_WRITEAB LE, $this->destination), 'error');
    }
    } else {
    if ($this->message_location == 'direct') {
    $messageStack->add(sprintf(ERROR_DESTINATION_DOES_NOT_EXIST, $this->destination), 'error');
    } else {
    $messageStack->add_session(sprintf(ERROR_DESTINATION_DOES_NOT_EX IST, $this->destination), 'error');
    }
    }

    return false;
    } else {
    return true;
    }
    }

    function set_output_messages($location) {
    switch ($location) {
    case 'session':
    $this->message_location = 'session';
    break;
    case 'direct':
    default:
    $this->message_location = 'direct';
    break;
    }
    }
    }
    ?>


    Is anyone able to find the mistake within the script?
    • [1] reply
    • Thats the problem.

      This should resolve the problem; although I cant vouch this will actually work how it was intended, nor cause any other problems.



      Although, __destruct() would be better ......
      • [ 1 ] Thanks
      • [1] reply
  • Thanks guys!! The php scripts are working fine now..

    Now all I have to do is to settle the MySqL issues.. Rrrr...

    Shouldn't have gotten a cheap script.. All the bugs are irritating. haha..

    Thanks again guys!

    Ed

Next Topics on Trending Feed