Bestanden toestaan
Ik ben bezig met een script wat bepaalde bestands types mag uploaden. Nu heb
ik dat jpg of jpeg alleen mag. Maar zodra ik er nog 1 bij zet doet die dat
niet. Heeft iemand een idee hoe je dit kan aanpassen?
Dit is mijn script tot nu toe:
Code (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
include "config.php";
$path = "upload/";
$maxkb = 2097152;
if ($_POST['submit']
&& $_FILES['userfile']['size'] <= $maxkb && !file_exists($path .
$_FILES['userfile']['name'])
&& $_FILES['userfile']['size']
&& is_uploaded_file($_FILES['userfile']['tmp_name'])
&& (strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" ||
strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg" ))
{
move_uploaded_file($_FILES['userfile']['tmp_name'], $path .
$_FILES['userfile']['name']);
$bestand = $_FILES['userfile']['name'];
$ip = $_SERVER['REMOTE_ADDR'];
$grote = $_FILES['userfile']['size'];
mysql_query("INSERT INTO foto_log (bestand, datum, ip, grote) VALUES
('".$bestand."',NOW(),'".$ip."','".$grote."')") or die(mysql_error());
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
imagejpeg($image, $path . $_FILES['userfile']['name']);
imagedestroy($image);
echo "De foto is geupload.<br />";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"2; URL=upload.php\">";
}
else
{
if ($_POST['submit'])
{
if (file_exists($path . $_FILES['userfile']['name']) &&
$_FILES['userfile']['name'])
echo "<b>Error! Bestand bestaat al, hernoem de foto en probeer
het opnieuw.</b><p>";
elseif ($_FILES['userfile']['size'] > $maxkb)
echo "<b>Error! Bestand is groter dan " . $maxkb . "bytes.
Verklein de foto en probeer het opnieuw</b><p>";
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg"
&& strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
echo "<b>Error! De foto heeft een verkeerde bestandsnaam. Er
mogen alleen foto's geupload worden met als bestandsnaam .jpg.</b><p>";
else
echo "<b>Error! De foto is niet goed geupload of er is helemaal
geen foto geupload. Probeer het opnieuw.</b><p>";
}
else
echo "Selecteer een foto om te uploaden. LET OP: hij mag NIET groter
zijn dan 2MB en moet in je .jpg formaat zijn.<p>";
echo "<form method=\"post\" action=\"upload.php\"
enctype=\"multipart/form-data\">";
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $maxkb .
"\" />";
echo "Bestand:<br />";
echo "<input type=\"file\" name=\"userfile\" value=\"" .
$_POST['userfile'] . "\" /><br />";
echo "<input type=\"submit\" name=\"submit\" value=\"uploaden\" />";
echo "</form>";
}
?>
include "config.php";
$path = "upload/";
$maxkb = 2097152;
if ($_POST['submit']
&& $_FILES['userfile']['size'] <= $maxkb && !file_exists($path .
$_FILES['userfile']['name'])
&& $_FILES['userfile']['size']
&& is_uploaded_file($_FILES['userfile']['tmp_name'])
&& (strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" ||
strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg" ))
{
move_uploaded_file($_FILES['userfile']['tmp_name'], $path .
$_FILES['userfile']['name']);
$bestand = $_FILES['userfile']['name'];
$ip = $_SERVER['REMOTE_ADDR'];
$grote = $_FILES['userfile']['size'];
mysql_query("INSERT INTO foto_log (bestand, datum, ip, grote) VALUES
('".$bestand."',NOW(),'".$ip."','".$grote."')") or die(mysql_error());
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
imagejpeg($image, $path . $_FILES['userfile']['name']);
imagedestroy($image);
echo "De foto is geupload.<br />";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"2; URL=upload.php\">";
}
else
{
if ($_POST['submit'])
{
if (file_exists($path . $_FILES['userfile']['name']) &&
$_FILES['userfile']['name'])
echo "<b>Error! Bestand bestaat al, hernoem de foto en probeer
het opnieuw.</b><p>";
elseif ($_FILES['userfile']['size'] > $maxkb)
echo "<b>Error! Bestand is groter dan " . $maxkb . "bytes.
Verklein de foto en probeer het opnieuw</b><p>";
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg"
&& strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
echo "<b>Error! De foto heeft een verkeerde bestandsnaam. Er
mogen alleen foto's geupload worden met als bestandsnaam .jpg.</b><p>";
else
echo "<b>Error! De foto is niet goed geupload of er is helemaal
geen foto geupload. Probeer het opnieuw.</b><p>";
}
else
echo "Selecteer een foto om te uploaden. LET OP: hij mag NIET groter
zijn dan 2MB en moet in je .jpg formaat zijn.<p>";
echo "<form method=\"post\" action=\"upload.php\"
enctype=\"multipart/form-data\">";
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $maxkb .
"\" />";
echo "Bestand:<br />";
echo "<input type=\"file\" name=\"userfile\" value=\"" .
$_POST['userfile'] . "\" /><br />";
echo "<input type=\"submit\" name=\"submit\" value=\"uploaden\" />";
echo "</form>";
}
?>
Heerlijk dit soort upload formulieren waar je zonder problemen een shell-script kan uploaden en vervolgens de gehele website kan hacken :)