Error formmail extensie in capitalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cid Meeuwis

Cid Meeuwis

17/02/2011 11:37:23
Quote Anchor link
Hallo,

Ik ben bezig met een formmail en alles werkt perfect. Alleen kom ik ergens niet uit.

Wanneer ik iets wil uploaden met de extensie in capitalen (bijv. .PNG) dan werkt het niet. Alleen wanneer ik iets upload met de extensie in kleine letters (zoals .png) dan werkt het wel.

Heeft iemand hier een oplossing voor?

Ik ben vrij nieuw met php...

Dit is de code:

Quote:
function findexts ($filename) {
$filename = strtolower($filename);
$fileArr = split(" ", $filename);
$filename = join("_", $fileArr);
$exts = split("[.]", $filename);
$exts[count($exts) - 2] .= '_' . rand(0, 999);
return join(".", $exts);
}

function checkExtension ($filename) {
$checkType = false;

if ($filename == "") {
$checkType = true;
}
$extensionArray = Array('jpeg', 'jpg', 'gif', 'png', 'pdf', 'eps', 'ai', 'doc', 'docx', 'svg', 'bmp', 'swf', 'tiff', 'xls', 'xlsx');
$exts = split("[.]", $filename);

$fileType = $exts[count($exts) - 1] ;
for ($i = 0; $i < count($extensionArray); $i++) {
if ($fileType == strtolower($extensionArray[$i])) {
$checkType = true;
}
}
return $checkType;
}


Alvast bedankt voor de hulp!

Cid.
 
PHP hulp

PHP hulp

22/12/2024 06:38:41
 
- Mark -

- Mark -

17/02/2011 11:44:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if ($fileType == strtolower($extensionArray[$i])) {
$checkType = true;
}


?>


Wat denk je dat die regel in je script doet?
 
Cid Meeuwis

Cid Meeuwis

17/02/2011 11:48:31
Quote Anchor link
Die zal waarschijnlijk de extensie controleren. Dit is om te voorkomen dat ongewenste bestanden worden geupload zoals .exe en dergelijke.

strtolower, betekend dit dat het beperkt wordt tot lowercase?
 
Jelle -

Jelle -

17/02/2011 11:52:58
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
function findexts ($filename) {
$filename = strtolower($filename);
$fileArr = split(" ", $filename);
$filename = join("_", $fileArr);
$exts = split("[.]", $filename);
$exts[count($exts) - 2] .= '_' . rand(0, 999);
return join(".", $exts);
}

De extentie van een file kan je vinden met de function pathinfo.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
function checkExtension ($filename) {
$checkType = false;

if ($filename == "") {
$checkType = true;
}

Als je klaar bent met de functie kan je ook gewoon returnen ipv de return value op te slaan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($fileType == strtolower($extensionArray[$i])) {

Je strtolowered hier de array en niet de userinput

Je zou je code kunnen herschrijven naar:
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
<?php

function checkExtension ($filename) {
    
    // Get extension
    $file = pathinfo($filename);
    $extension = @$file['extension'];
    
    // Decline if file hasnot an extension
    if(!$extension)
        return false;
    
    // Allowed extensions
    $allowed = array('jpeg', 'jpg', 'gif', 'png', 'pdf', 'eps', 'ai', 'doc', 'docx', 'svg', 'bmp', 'swf', 'tiff', 'xls', 'xlsx');
    
    // If extension is in allowed then its oke
    // We strtolower extension because my allowed values are also strtolowered

    if(in_array(strtolower($extension), $allowed))
        return true;
}


?>
Gewijzigd op 17/02/2011 11:54:19 door Jelle -
 
- Mark -

- Mark -

17/02/2011 11:53:03
Quote Anchor link
De functie strtolower converteerd alles in een string tot lowercase.

Maar ik bedenk me net dat die functie totaal geen nut heeft want alle extentions staan al als lowercase in je array.
 

17/02/2011 11:53:39
Quote Anchor link
Sowieso, split is verouderd.
Waarom gebruik je niet gewoon een combinatie van substr, strlen, stripos etc?
 
Cid Meeuwis

Cid Meeuwis

17/02/2011 12:07:38
Quote Anchor link
Dank voord de snelle response.

Code van Moozzie werkt perfect!

Mijn dank is groot!
 



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.