Avatar billede Slettet bruger
31. marts 2006 - 16:09 Der er 2 kommentarer og
1 løsning

fejl med upload class's

Hej eksperter, jeg har dette script som indeholder min class og upload funktioner => "upload_classes.php".

Her kan du se scriptet:

<?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->upload_dir);
   
        //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_log_dir = trim($this->upload_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;
            }
        }
    }
}
?>


--------------- Mit script hvos jeg inkluder min class fil:
<?php
if(isset($_POST['go_upload'])) {
include ('upload_classes.php');
    $upload_class = new FileUpload;
    $upload_class->temp_file_name = trim($_FILES['upload']['tmp_name']);
    $upload_class->file_name = trim(strtolower($_FILES['upload']['name']));
    $upload_class->upload_dir = "/htdocs/www/test/uploads/";
    $upload_class->upload_log_dir ="/htdocs/www/test/uploads/upload_log/";
    $upload_class->max_file_size = 5242880;
    $upload_class->banned_array = array("" );
    $upload_class->ext_array = array(".zip",".rar",".ace",".tar",".jpg");
    $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.";
        }
    }
    echo $result;
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upload" />
<input type="submit" name="go_upload" value="upload file" />
</form>







Håber virkeligt I kan hjælpe mig!?
Avatar billede Slettet bruger
31. marts 2006 - 16:10 #1
UPS-> fejlen den medler er ikke dirkete en fejl, men den skriver:
The file size is invalid, please try again! The maximum file size is:5 MB and your file was:912.58 KB, og dette burde jo kunne lade sig gøre.! ?
Avatar billede Slettet bruger
31. marts 2006 - 19:44 #2
Her kan man egentlig se hvordan man opbygger den.
http://www.phpfreaks.com/tutorials/85/0.php, men for mig melder den fejl,  andre gider at prøve..? der er 200 points på tilbud.
Avatar billede Slettet bruger
10. august 2006 - 08:52 #3
Lukker fandt aldrig ud af det, men byggede min egen ud fra eksemplet (ca.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester