De manier waarop je het bestand checkt is wel risicovol, was latst nog een headline op tweakers.net, dat een verkeerde mime een groot securitylek kon openen.
Ik heb ook een fileupload script geschreven ooit, dat doet het perfect. let wel, bij de functie rename fileheb ik wat overhead, ik moet het script nog gaan aanpassen in de nabije toekomst.
PHP:
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
| function upload( $file , $folder )
{
$maxsize = 500;
$upload = 0;
if( !empty( $_FILES[$file]['name']) && is_uploaded_file( $_FILES[$file]['tmp_name'] ) ) $upload++;
if( !empty( $folder ) ) $upload++;
if ( renamefile( $file ) != false ) $upload++;
if ( $_FILES[$file]['size'] < $maxsize*1000 ) $upload++;
if( $upload == 4)
{
if( $folder[ strlen( $folder ) - 1 ] != '/') $folder .= '/';
$file_tmp = $_FILES[$file]['tmp_name'];
$file_name = renamefile( $file );
$file_path = $folder . $file_name;
move_uploaded_file( $file_tmp , $file_path );
return $file_name;
}
else return false;
}
function renamefile( $file )
{
// MIME type of accepted files
$file_type = array();
$file_type[0] = array( 'image/bmp' , 'bmp' );
$file_type[1] = array( 'image/gif' , 'gif' );
$file_type[2] = array( 'image/png' , 'png' );
$file_type[3] = array( 'image/x-png' , 'png' );
$file_type[4] = array( 'image/jpeg' , 'jpg' );
$file_type[5] = array( 'image/pjpeg' , 'jpg' );
$file_name = false;
for( $i = 0; isset( $file_type[$i] ) ; $i++)
{
if( $_FILES[$file]['type'] == $file_type[$i][0] )
$file_name = explode ( "." , $_FILES[$file]['name'] );
$file_name = $file_name[1];
$file_name = ereg_replace("[^A-Za-z0-9]", "", basename( $_FILES[$file]['name'] )) . '.' . $file_type[$i][1];
$file_name = explode( '.' , $file_name );
$file_name = time() . '.' . $file_name[1];
}
return $file_name;
} |
Nog iets wat je niet uit het oog moet verliezen is dat sommige servers doodgewoon niet meer reageren (ERROR 404 geven) als je een te groot bestand probeerd te uploaden, dus prober altijd eerst met een heel klein bestandje
[
Voor 6% gewijzigd door
g4wx3 op 19-07-2007 14:04
]