Upload script

Status
Niet open voor verdere reacties.

slabbetje

Gebruiker
Lid geworden
5 mei 2007
Berichten
290
Beste helpers ik heb een scriptje gevonden om dingen te uploaden alleen nu wil ik weten is dit veilig genoeg?

PHP:
<?php
$types['L'] = array ("image/gif"); // mime types die toegelaten zijn
$types['S'] = array ("gif"); // extenties die daar bijhoren en dus ook toegestaan zijn
$maxbreedte = 100; // maximum breedte
$maxhoogte = 100; // maximum hoogte
$maxsize = 6024 * 50; // maximale groote ik nam 10 kb
$map = 'content/avatars/'; //  dan map waar de geuploaden dingen naar verdwijnen
?>
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
 
<html>
<head>
    <title>Upload script</title>
</head>
<body>
 
 
<?php
 
$uri = $_SERVER['REQUEST_URI'];
 
    if(isset($_POST['upl'])) {
        $r = ''; // komen error in
 
 
 
        if(in_array($_FILES['file']['type'] , $types['L'])){
            $file = explode( "." , $_FILES['file']['name'] );
            $type = array_pop($file); // de extensie uit de naam halen
            $naam = $file; // de naam zonder de extensie
 
 
 
 
            if( in_array( strtolower($type) , $types['S'] )){
                $naam = implode( "." , $naam );
                $stat = getimagesize($_FILES['file']['tmp_name']);
                $breedte = $stat[0];
                $hoogte = $stat[1];
 
 
 
 
                if($breedte < $maxbreedte+1 && $hoogte < $maxhoogte+1){
                    $size = $_FILES['file']['size'];
 
 
 
                    if($size < $maxsize){
 
 
 
                        if( is_dir($map) ){
                            chmod($map, 0777);
 
 
 
                            if(move_uploaded_file($_FILES['file']['tmp_name'], $map . $_FILES['file']['name'])){
 
                                echo 'Je afbeelding is geupload.';
 
 
        # hoopje errors
 
                            } else{
                                $r .= 'Je avatar kon om een of andere reden niet worden geupload.';
                            }
 
                        } else{
                            $r .= 'Het plaatje kan niet worden geupload! Dit is een server reden, neem contact op.';
                        }
 
                    }else{
                        $r .= 'Je afbeelding is te groot, de maximale toegelate groote is: '. $maxsize .'  Bytes (= '. round( $maxsize/6024/6024, 3 ) .' Mb).';
                    }
 
                }else{
                    $r .= 'Je afbeelding is te groot, max. '. $maxbreedte .' x '. $maxhoogte .' pixels.';
                }
 
            }else{
                $r .=  'De extensie is niet toegelaten.';
            }
 
        }else{
            $r .=  'Deze extensie bestaad niet.';
        }
 
        # error indien hij er is, weergeven
        if(!empty($r)){
            echo $r;
        }
 
    } else{
 
    ?>
 
 
 
 
    <form method="post" enctype="multipart/form-data" name="upload"> 
 
 
        <input type="file" class="input" name="file"><br><br>
 
        <input type="submit" name="upl" value="   upload   ">
 
 
    </form>    
 
    <?php
 
        }
    ?>
</body>
</html>
 
Laatst bewerkt:
PHP:
$maxsize = 6024 * 50; // maximale groote ik nam 10 kb

Geeft volgens mij geen 10 kb.

Van:
PHP:
if(isset($_POST['upl'])) {

Kun je beter maken:

PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST') {

In plaats van:

PHP:
if($breedte < $maxbreedte+1 && $hoogte < $maxhoogte+1){

is het netter om:

PHP:
if($breedte <= $maxbreedte && $hoogte <= $maxhoogte){

te gebruiken.

En dit:

PHP:
$r .= 'Je afbeelding is te groot, de maximale toegelate groote is: '. $maxsize .'  Bytes (= '. round( $maxsize/6024/6024, 3 ) .' Mb).';

Moet denk ik zijn

PHP:
"$r .= 'Je afbeelding is te groot, de maximale toegelate groote is: '. $maxsize .'  Bytes (= '. round( $maxsize/1024/1024, 3 ) .' Mb).';

Je gebruikt de hele tijd 6024 waar je volgens mij 1024 wilt gebruiken.

Verder is het script volgens mij prima!
 
Ja ik heb het script wat aangepast vandaar dat die 10kb niet meer klopt
en ik zal die wijzigingen van jouw even doorvoeren en dan kan ik hem online zetten
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan