Upload script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Andytjuh Bruggeman

andytjuh Bruggeman

05/07/2015 10:42:56
Quote Anchor link
Hallo,

Ik ben bezig geweest met mijn game clan page.
Nu ben ik een screenshot upload systeem aan het maken.

En het gaat aardig goed ik weet dat ik nog gewoon de oude php gebruik.

Alleen nu zit ik met een probleempje mijn script upload elke soort bestand.
Hoe ken ik het nu maken dat die alleen Jpg,Png, ne Gif kan uploaden ?

Andy


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
include_once 'config.php';
if(isset($_POST['btn-upload']))
{
    
    
    $file = rand(1000,100000)."-".$_FILES['file']['name'];
    $file_loc = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
    $folder="upload/uploads/";
    
    // new file size in KB
    $new_size = $file_size/1024;  
    // new file size in KB
    
    // make file name in lower case

    $new_file_name = strtolower($file);
    // make file name in lower case
    
    $final_file=str_replace(' ','-',$new_file_name);
    
    if(move_uploaded_file($file_loc,$folder.$final_file))
    {

        $sql="INSERT INTO tbl_uploads(file,type,size) VALUES('$final_file','$file_type','$new_size')";
        mysql_query($sql);
        ?>

        <script>
        alert('successfully uploaded');
        window.location.href='index.php?success';
        </script>
        <?php
    }
    else
    {
        ?>

        <script>
        alert('error while uploading file');
        window.location.href='index.php?fail';
        </script>
        <?php
    }
}

?>


Toevoeging op 05/07/2015 11:08:09:

Mag deleted worden.

Ik heb een nieuwe gemaakt en heb daar dus de limit op kennen gooien door een tut van daniweb
 
PHP hulp

PHP hulp

25/04/2024 12:00:59
 
- Ariën  -
Beheerder

- Ariën -

05/07/2015 11:18:23
Quote Anchor link
Misschien handig om te vertellen hoe je het aangepast hebt?

Verder worden topics in het algemeen niet gesloten of verwijderd.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/07/2015 12:31:19
Quote Anchor link
Wellicht is deze informatie gedateerd, maar volgens mij zat het ongeveer zo:

Je browser doet (deed voorheen?) geen intelligente checks om te kijken van wat voor type het te uploaden bestand is. Deze kijkt simpelweg naar de extensie en probeert hier een MIME-type bij te vinden die vervolgens wordt meegestuurd.

Als je een upload verwerkt, zit er een hoop informatie in $_FILES. Hier kun je gebruik van maken om een aantal elementaire checks uit te voeren.

Hieronder staan een aantal dingen die je zou kunnen doen om specifiek te controleren of je met een afbeelding van doen hebt. Je zou behalve deze controles ook nog andere controles uit moeten voeren uiteraard (bijvoorbeeld of de upload geslaagd is en/of het bestand niet te groot is etc.).

In eerste instantie zou je naar de extensie van het bestand kunnen kijken. Dit doe je door het laatste deel van de bestansnaam te vergelijken met een lijst van toegestane extensies:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// aanname: het uploaden van het bestand zelf (afgezien van de controles) is correct verlopen
$parts = explode('.', $_FILES['upload_field']['name'][0]);
$extension = strtolower(array_pop($parts));
if (in_array($extension, array('jpg', 'png', 'gif')) === false) {
    // error handling for unsupported file
}
?>


Daarnaast zou je een test kunnen uitvoeren om te kijken of het geuploade bestand zich gedraagt als een afbeelding. Een manier om dit te doen is een aanroep van getimagesize() te doen op het tijdelijke bestand. Als deze aanroep false retourneert dan heb je vrijwel zeker niet van doen met een afbeelding. Ook kan het verstandig zijn (bijvoorbeeld op een productie-omgeving) om eventuele foutmeldingen te onderdrukken, vandaar de "@". Meestal heb je toch de dimensies van een afbeelding nodig, dus hiermee sla je twee vliegen in een klap.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// aanname: het uploaden van het bestand zelf (afgezien van de controles) is correct verlopen
if (($dimensions = @getimagesize($_FILES['upload_field']['tmp_name'][0])) === false) {
    // error handling for unknown image type / dimensions
}
?>
Gewijzigd op 05/07/2015 12:35:04 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.