Jump to content


Photo

uploading images to a server


  • Please log in to reply
18 replies to this topic

#1 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 11:02 AM

I'm trying to upload images to a server using code that was given in a tutorial on this site: http://www.phpfreaks...orials/85/0.php

I'm very new to php so I am not sure if followed it correctly. I basically copied and pasted it all and modified the path where images are stored and the log directory and saved it as Upload_Class.php

<?php 


class Upload_Files { 

    var $temp_file_name; 
    var $file_name; 
    var $upload_dir; 
    var $upload_log_dir; 
    var $max_file_size; 
    var $banned_array; 
    var $ext_array; 
 


function validate_extension() { 
    //SECTION #1 
    $file_name = trim($this->file_name); 
    $extension = strtolower(strrchr($file_name,".")); 
    $ext_array = $this->ext_array; 
    $ext_count = count($ext_array); 

    //SECTION #2 
    if (!$file_name) { 
        return false; 
    } else { 
        if (!$ext_array) { 
            return true; 
        } else { 
            foreach ($ext_array as $value) { 
                $first_char = substr($value,0,1); 
                    if ($first_char <> ".") { 
                        $extensions[] = ".".strtolower($value); 
                    } else { 
                        $extensions[] = strtolower($value); 
                    } 
            } 

            //SECTION #3 
            foreach ($extensions as $value) { 
                if ($value == $extension) { 
                    $valid_extension = "TRUE"; 
                }                 
            } 

            //SECTION #4 
            if ($valid_extension) { 
                return true; 
            } else { 
                return false; 
            } 
        } 
    } 
} 
 

 

function validate_size() { 
    $temp_file_name = trim($this->temp_file_name); 
    $max_file_size = trim($this->max_file_size); 

    if (!$temp_file_name) { 
        $size = filesize($temp_file_name); 
            if ($size > $max_file_size) { 
                return false;                                                         
            } else { 
                return true; 
            } 
    } else { 
        return false; 
    }     
} 

function existing_file() { 
    $file_name = trim($this->file_name); 
    $upload_dir = $this->get_upload_directory(); 

    if ($upload_dir == "ERROR") { 
        return true; 
    } else { 
        $file = $upload_dir . $file_name; 
        if (file_exists($file)) { 
            return true; 
        } else { 
            return false; 
        } 
    }     
} 

function get_file_size() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $kb = 1024; 
    $mb = 1024 * $kb; 
    $gb = 1024 * $mb; 
    $tb = 1024 * $gb; 

        //SECTION #2 
        if ($temp_file_name) { 
            $size = filesize($temp_file_name); 
            if ($size < $kb) { 
                $file_size = "$size Bytes"; 
            } 
            elseif ($size < $mb) { 
                $final = round($size/$kb,2); 
                $file_size = "$final KB"; 
            } 
            elseif ($size < $gb) { 
                $final = round($size/$mb,2); 
                $file_size = "$final MB"; 
            } 
            elseif($size < $tb) { 
                $final = round($size/$gb,2); 
                $file_size = "$final GB"; 
            } else { 
                $final = round($size/$tb,2); 
                $file_size = "$final TB"; 
            } 
        } else { 
            $file_size = "ERROR: NO FILE PASSED TO get_file_size()"; 
        } 
        return $file_size; 
} 


function get_max_size() { 
    $max_file_size = trim($this->max_file_size); 
    $kb = 1024; 
    $mb = 1024 * $kb; 
    $gb = 1024 * $mb; 
    $tb = 1024 * $gb; 

    if ($max_file_size) { 
        if ($max_file_size < $kb) { 
            $max_file_size = "max_file_size Bytes"; 
        } 
        elseif ($max_file_size < $mb) { 
            $final = round($max_file_size/$kb,2); 
            $max_file_size = "$final KB"; 
        } 
        elseif ($max_file_size < $gb) { 
            $final = round($max_file_size/$mb,2); 
            $max_file_size = "$final MB"; 
        } 
        elseif($max_file_size < $tb) { 
            $final = round($max_file_size/$gb,2); 
                $max_file_size = "$final GB"; 
        } else { 
            $final = round($max_file_size/$tb,2); 
            $max_file_size = "$final TB"; 
        } 
    } else { 
        $max_file_size = "ERROR: NO SIZE PARAMETER PASSED TO  get_max_size()"; 
    } 
        return $max_file_size; 
} 

function validate_user() { 
    //SECTION #1 
    $banned_array = $this->banned_array; 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $count = count($banned_array); 

    //SECTION #2 
    if ($count < 1) { 
        return true; 
    } else { 
        foreach($banned_array as $key => $value) { 
            if ($value == $ip ."-". $cpu) { 
                return false; 
            } else { 
                return true; 
            } 
        } 
    } 
} 


function get_upload_directory() { 
    //SECTION #1 
  
     $upload_dir = trim('$this->clothes/'); 
    //SECTION #2 
    if ($upload_dir) { 
        $ud_len = strlen($upload_dir); 
        $last_slash = substr($upload_dir,$ud_len-1,1); 
            if ($last_slash <> "/") { 
                $upload_dir = $upload_dir."/"; 

            } else { 
                    $upload_dir = $upload_dir; 
            } 

        //SECTION #3 
        $handle = @opendir($upload_dir); 
            if ($handle) { 
                $upload_dir = $upload_dir; 
                closedir($handle); 
            } else { 
                $upload_dir = "ERROR"; 
            } 
    } else { 
        $upload_dir = "ERROR"; 
    } 
    return $upload_dir; 
} 


function get_upload_log_directory() { 
      $upload_dir = trim('$this->log_dir/');
    //$upload_log_dir = trim($this->log_dir/); 
    if ($upload_log_dir) { 
        $ud_len = strlen($upload_log_dir); 
        $last_slash = substr($upload_log_dir,$ud_len-1,1); 
            if ($last_slash <> "/") { 
                $upload_log_dir = $upload_log_dir."/"; 
            } else { 
                $upload_log_dir = $upload_log_dir; 
            } 
            $handle = @opendir($upload_log_dir); 
                if ($handle) { 
                    $upload_log_dir = $upload_log_dir; 
                    closedir($handle); 
                } else { 
                    $upload_log_dir = "ERROR"; 
                } 
    } else { 
        $upload_log_dir = "ERROR"; 
    } 
    return $upload_log_dir; 
}


function upload_file_no_validation() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $file_name = trim(strtolower($this->file_name)); 
    $upload_dir = $this->get_upload_directory(); 
    $upload_log_dir = $this->get_upload_log_directory(); 
    $file_size = $this->get_file_size(); 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $m = date("m"); 
    $d = date("d"); 
    $y = date("Y"); 
    $date = date("m/d/Y"); 
    $time = date("h:i:s A"); 

    //SECTION #2 
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) { 
        return false; 
    } else { 
        if (is_uploaded_file($temp_file_name)) { 
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) { 
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt"; 
                $fp = fopen($log,"a+"); 
                fwrite($fp," 
$ip-$cpu | $file_name | $file_size | $date | $time"); 
                fclose($fp); 
                return true; 
            } else { 
                return false;     
            } 
        } else { 
            return false; 
        } 
    } 
} 


function upload_file_with_validation() { 
    //SECTION #1 
    $temp_file_name = trim($this->temp_file_name); 
    $file_name = trim(strtolower($this->file_name)); 
    $upload_dir = $this->get_upload_directory(); 
    $upload_log_dir = $this->get_upload_log_directory(); 
    $file_size = $this->get_file_size(); 
    $ip = trim($_SERVER['REMOTE_ADDR']); 
    $cpu = gethostbyaddr($ip); 
    $m = date("m"); 
    $d = date("d"); 
    $y = date("Y"); 
    $date = date("m/d/Y"); 
    $time = date("h:i:s A"); 
    $existing_file = $this->existing_file();    //<-Add On 
    $valid_user = $this->validate_user();        //<-Add On 
    $valid_size = $this->validate_size();        //<-Add On 
    $valid_ext = $this->validate_extension();    //<-Add On 

    //SECTION #2 
    if (($upload_dir == "ERROR") OR ($upload_log_dir == "ERROR")) { 
        return false; 
    } 
    elseif ((((!$valid_user) OR (!$valid_size) OR (!$valid_ext) OR ($existing_file)))) { 
        return false; 
    } else { 
        if (is_uploaded_file($temp_file_name)) { 
            if (move_uploaded_file($temp_file_name,$upload_dir . $file_name)) { 
                $log = $upload_log_dir.$y."_".$m."_".$d.".txt"; 
                $fp = fopen($log,"a+"); 
                fwrite($fp," 
$ip-$cpu | $file_name | $file_size | $date | $time"); 
                fclose($fp); 
                return true; 
            } else { 
                return false; 
            } 
        } else { 
            return false; 
        } 
    } 
} 

}
?>

Then I called the class using a using a file called test_upload.php


<?php 
//SECTION #1 

include("Upload_Class.php");

$upload_class = new Upload_File;   //line 7
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']); 
$upload_class->file_name = trim(strtolower($_FILES['upload']['name'])); 
$upload_class->upload_dir = "uploads/"; 
$upload_class->upload_log_dir = "uploads/upload_logs/"; 
$upload_class->max_file_size = 524288; 
$upload_class->banned_array = array(""); 
$upload_class->ext_array = array(".jpg",".gif",".jpeg",".png"); 

//SECTION #2 
 
$upload_file = $upload_class->upload_file_with_no_validation(); 
 

?>

When I try to upload an image then I get the error message:

Fatal error: Cannot instantiate non-existent class: upload_file in /home/c/ciaracousins/public_html/test_upload.php on line 7

Would really appreciate if someone could point out where I am going wrong

#2 ToonMariner

ToonMariner
  • Members
  • PipPipPip
  • Advanced Member
  • 3,342 posts
  • LocationNewcastle upon Tyne, UK

Posted 21 August 2006 - 11:04 AM

make sure the path to the file in your include statment is correct
follow me on twitter @PHPsycho

#3 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 11:40 AM

use require not include
If the file is not including, require will throw an error
Tell me the problem, I will try tell you the solution

#4 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 12:04 PM

Thanks! realised what I had done, had misspelt one of the class names. Now though when I go to upload it just brings me from my fileupload.html page, to a blank page (test_upload.php), it doesnt even give me any errors and the file is not uploading. I changed the code for calling the class to this then to see if it would tell me why its not uploading but this too just brings me to a blank page (test_upload.php) and doesnt work.

<?php 

include("Upload_Class.php");
$upload_class = new Upload_Files; 
$upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']); 
$upload_class->file_name = trim(strtolower($_FILES['upload']['name'])); 
$upload_class->upload_dir = "clothes/"; 
$upload_class->upload_log_dir = "log_dir/"; 
$upload_class->max_file_size = 5242880; 
$upload_class->banned_array = array(""); 
$upload_class->ext_array = array(".zip",".rar",".ace",".tar"); 

$valid_ext = $upload_class->validate_extension(); 
$valid_size = $upload_class->validate_size(); 
$valid_user = $upload_class->validate_user(); 
$max_size = $upload_class->get_max_size(); 
$file_size = $upload_class->get_file_size(); 
$file_exists = $upload_class->existing_file(); 

    if (!$valid_ext) { 
        $result = "The file extension is invalid, please try again!"; 
    } 
    elseif (!$valid_size) { 
        $result = "The file size is invalid, please try again! The maximum file size is: $max_size and your file was: $file_size"; 
    } 
    elseif (!$valid_user) { 
        $result = "You have been banned from uploading to this server."; 
    } 
    elseif ($file_exists) { 
        $result = "This file already exists on the server, please try again."; 
    } else { 
        $upload_file = $upload_class->upload_file_with_validation(); 
        if (!$upload_file) { 
            $result = "Your file could not be uploaded!"; 
        } else { 
            $result = "Your file has been successfully uploaded to the server."; 
        } 
    } 
?>

Any idea why its doing this??

Here is the code to my fileupload.html page as well if it helps

<html>
<head>
<title>A simple file upload form</title>
</head>
<body>
<form action="test_upload.php" enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="51200">
<p><strong>File to Upload:</strong> <input type="file" name="fileupload"></p>
<p><input type="submit" value="upload!"></p>
</form>
</body>
</html>


#5 ToonMariner

ToonMariner
  • Members
  • PipPipPip
  • Advanced Member
  • 3,342 posts
  • LocationNewcastle upon Tyne, UK

Posted 21 August 2006 - 12:44 PM

yep...

in the script you look for $_FILES['upload'] and in the form you have called it name="fileupload"

so change name="fileuplaoad" to just name="upload"
follow me on twitter @PHPsycho

#6 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 12:53 PM

Thanks ToonMariner, I changed the line to

<p><strong>File to Upload:</strong> <input type="file" name="upload"></p>

Its still not working though, It keeps going to a blank test_upload.php page. It goes straight to the page as well, so its not even trying to upload anything. Any other advice??

#7 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 12:59 PM

It will go to test_upload straight away, as the form is being submitted

You are not echoing anything

echo $result;

Tell me the problem, I will try tell you the solution

#8 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 01:38 PM

Thanks onlyican! Now it is telling me why it wont upload. It keeps saying :

The file size is invalid, please try again! The maximum file size is: 5 MB and your file was: 1.35 KB

Can you point out where I have gone wrong with this?? Heres the validate size code

function validate_size() { 
    $temp_file_name = trim($this->temp_file_name); 
    $max_file_size = trim($this->max_file_size); 

    if (!$temp_file_name) { 
        $size = filesize($temp_file_name); 
            if ($size > $max_file_size) { 
                return false;                                                         
            } else { 
                return true; 
            } 
    } else { 
        return false; 
    }     
}

I'm really new to this and got the code from a website so sorry if I'm missing really obvious stuff here!

#9 ToonMariner

ToonMariner
  • Members
  • PipPipPip
  • Advanced Member
  • 3,342 posts
  • LocationNewcastle upon Tyne, UK

Posted 21 August 2006 - 01:40 PM

if (!$temp_file_name) {

get rid of the '!'

follow me on twitter @PHPsycho

#10 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 01:59 PM

if (!$temp_file_name) {

get rid of the '!'


The ! is saying if NOT true
Tell me the problem, I will try tell you the solution

#11 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 02:00 PM

Thanks! Ok now it is saying "This file already exists on the server, please try again" but the file is new and is not on the server. I removed all code then that checks to see if the file already exists because its not really important in my case but then it just says:

"Your file could not be uploaded!"

Can you see anything that is stopping it from uploading??



#12 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 02:02 PM

your CHMOD set to 777?
Tell me the problem, I will try tell you the solution

#13 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 02:08 PM

I dont even know what CHMOD is! Is this in my code somewhere?? I cant see it

#14 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 02:25 PM

ok ok
How do you upload the files to your website?
Right click on the folder where the uploaded files go
Choose Properties / File Attributes / Settings (Something)
and you should be able to change the Attributes, the CHMOD
Try 755, if it fails, try 777, if it fails, let us know
Tell me the problem, I will try tell you the solution

#15 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 02:43 PM

Ok I did that, but I am using a hosting site and when I choose properties it just brings up one page (common), there are no tabs to choose file attributes, but on that page it says "permission", here it has:

owner:  R  W  X  Set UID  //with check boxes beside each of them, all the R,W,X's are checked                            except 2 of the W's, when I put 0777 these were also checked
Group:  R  W  X  Set GID  // and the Set UID,GID and sticky bit are unchecked
Others: R  W  X  Sticky bit

Octal: 0755

I tried changing the octal to 0777 if that is the same as what you are talking about but there was no change

#16 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 02:50 PM

ok
That is what I am talking about
You are changing the folder where the files will be uploaded to?
Tell me the problem, I will try tell you the solution

#17 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 02:55 PM


Yes, my files are being uploaded to a folder called clothes, so that is the folder that I right clicked on...was that right?

#18 onlyican

onlyican
  • Members
  • PipPipPip
  • Advanced Member
  • 921 posts
  • LocationHants - UK

Posted 21 August 2006 - 03:09 PM

yep
Tell me the problem, I will try tell you the solution

#19 kikilahooch

kikilahooch
  • Members
  • PipPipPip
  • Advanced Member
  • 72 posts

Posted 21 August 2006 - 03:11 PM

Any other ideas why it mightnt be working?? Or even any other method for uploading files?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users