[solved] Upload form validatie volgorde
Ik probeer upload fomulier voor een afbeelding te valideren, maar loop vast op de volgorde van de code.
Nu stopt hij wel bij sommige vreemde bestanden, maar bij psd bijvoorbeeld, komt er wel een errror en vervolgens wel een upload..(niet de bedoeling).
Ik heb al flink lopen schuiven en variëren, maar kom er niet uit.
Kan iemand mij opweg helpen qua structuur, dus dat er daadwerkelijk gestopt wordt bij een error.
Heel erg Bedankt!
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
70
71
72
73
74
75
76
77
78
79
80
81
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
70
71
72
73
74
75
76
77
78
79
80
81
<?
include 'library/config.php';
include 'library/opendb.php';
$uploadDir = 'upload/';
$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); // welke wel
$max_filesize = 524288; // Maximale bestandsgrootte in BYTES (nu 0.5MB).
$errors=0;
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$ext= substr(strrchr($fileName, "."), 1);
$naam = substr($fileName, 0, strrpos($fileName, '.'));
$randName = $naam. '-' .substr(md5(rand() * time()), 0, 6);
$filePath = $uploadDir . $randName . '.' . $ext;
//// extenstie check
<!-- -->
if(!in_array($ext,$allowed_filetypes))
{
echo '<h1>Unknown filtype!</h1>';
$errors=1;
}
/////////////// verder.. gaat het ergens fout denk ik zo...
$result = move_uploaded_file($tmpName, $filePath);
$query = "INSERT INTO upload (name, size, type, path ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')";
mysql_query($query) or die('Error, query failed : ' . mysql_error());
if (!$result) {
echo "Error uploading file";
$errors=1;
}
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
include 'library/closedb.php';
}
if(isset($_POST['Submit']) && !$errors)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
include 'library/config.php';
include 'library/opendb.php';
$uploadDir = 'upload/';
$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); // welke wel
$max_filesize = 524288; // Maximale bestandsgrootte in BYTES (nu 0.5MB).
$errors=0;
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$ext= substr(strrchr($fileName, "."), 1);
$naam = substr($fileName, 0, strrpos($fileName, '.'));
$randName = $naam. '-' .substr(md5(rand() * time()), 0, 6);
$filePath = $uploadDir . $randName . '.' . $ext;
//// extenstie check
<!-- -->
if(!in_array($ext,$allowed_filetypes))
{
echo '<h1>Unknown filtype!</h1>';
$errors=1;
}
/////////////// verder.. gaat het ergens fout denk ik zo...
$result = move_uploaded_file($tmpName, $filePath);
$query = "INSERT INTO upload (name, size, type, path ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')";
mysql_query($query) or die('Error, query failed : ' . mysql_error());
if (!$result) {
echo "Error uploading file";
$errors=1;
}
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
include 'library/closedb.php';
}
if(isset($_POST['Submit']) && !$errors)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door David david
Sorry dat ik de fout niet zie, maar haal in je query de variabelen buiten haakjes
Code (php)
1
2
3
2
3
<?php
$query = "INSERT INTO upload (name, size, type, path ) VALUES ('".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')";
?>
$query = "INSERT INTO upload (name, size, type, path ) VALUES ('".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')";
?>
[/not helping mode]
edit: Je controleert op file type, en indien die niet herkent word geeft hij een error, en word $errors op 1 gezet, heel prima. Maar voor je gaat inserten, controleer je niet of $errors op 1 staat, en die voert hij dus sowiezo uit. Kwestie van logica in mijn ogen...
edit2: je controleert trouwens wel of move uploaded file gelukt is, maar niet of de query gelukt is. is misschien wel leuk plannetje
edit3: On request, of als vanmiddag om half 1 nog niemand het gedaan heeft, kan ik het hele gefixte script even posten
edit4: Hierbij het werkende script (in theorie). Ben nog niet helemaal wakker (ochtendkrant, daarna slapen), dus is volgens mij nog niet helemaal soepel. Trouwens:
Weet niet of je het echt nodig hebt, maar php.net zegt:
php.net:
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources.
Verder nog: waarom zou je in vredesnaam op het eind nog addslashes doen, aangezien je er daarna verder niks meer mee doet. (ik heb trouwens nog geen mysql_real_escape_string ingebouwd, dat mag je zelf doen.) En geen shorttags gebruiken! (url=http://www.bin-co.com/php/articles/using_php_short_tags.php]klik[/url]
Zoiets moet het worden:
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
include 'library/config.php';
include 'library/opendb.php';
$uploadDir = 'upload/';
$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); // welke wel
$max_filesize = 524288; // Maximale bestandsgrootte in BYTES (nu 0.5MB).
$errors=0;
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$ext= substr(strrchr($fileName, "."), 1);
$naam = substr($fileName, 0, strrpos($fileName, '.'));
$randName = $naam. '-' .substr(md5(rand() * time()), 0, 6);
$filePath = $uploadDir . $randName . '.' . $ext;
//// extenstie check
<!-- -->
if(!in_array($ext,$allowed_filetypes))
{
echo '<h1>Unknown filtype!</h1>';
$errors=1;
}
else
{
$result = move_uploaded_file($tmpName, $filePath);
if (!$result)
{
echo "Error uploading file";
$errors++;
}
else
{
$query = "INSERT INTO upload (name, size, type, path ) VALUES ('".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')";
$sql = mysql_query($query);
if(!$sql)
{
$errors++;
trigger_error('Error, query failed : ' . mysql_error());
}
}
}
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
include 'library/closedb.php';
}
if(isset($_POST['Submit']) && $errors!=0)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}
else
{
echo 'File upload failed. Please reread the rules of uploading and try again.';
}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
include 'library/config.php';
include 'library/opendb.php';
$uploadDir = 'upload/';
$allowed_filetypes = array('.jpg','.gif','.bmp','.png', '.jpeg'); // welke wel
$max_filesize = 524288; // Maximale bestandsgrootte in BYTES (nu 0.5MB).
$errors=0;
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$ext= substr(strrchr($fileName, "."), 1);
$naam = substr($fileName, 0, strrpos($fileName, '.'));
$randName = $naam. '-' .substr(md5(rand() * time()), 0, 6);
$filePath = $uploadDir . $randName . '.' . $ext;
//// extenstie check
<!-- -->
if(!in_array($ext,$allowed_filetypes))
{
echo '<h1>Unknown filtype!</h1>';
$errors=1;
}
else
{
$result = move_uploaded_file($tmpName, $filePath);
if (!$result)
{
echo "Error uploading file";
$errors++;
}
else
{
$query = "INSERT INTO upload (name, size, type, path ) VALUES ('".$fileName."', '".$fileSize."', '".$fileType."', '".$filePath."')";
$sql = mysql_query($query);
if(!$sql)
{
$errors++;
trigger_error('Error, query failed : ' . mysql_error());
}
}
}
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}
include 'library/closedb.php';
}
if(isset($_POST['Submit']) && $errors!=0)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}
else
{
echo 'File upload failed. Please reread the rules of uploading and try again.';
}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
bedankt voor de genomen moeite!, ik ga er mee verder puzzelen..
zo is het nu:
Code (php)
maar als dit neerzet werkt het wel..:
Code (php)
iets fout in de array? ik zie het niet..
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door david david
in_array checkt toch echt een array. En naar mijn idee is $ext niet een array maar een string......
En valt me op dat je in de eerste situatie de "allowed filetypes" met een punt aangeeft (.jpeg, .png) en in de tweede situatie slechts met "jpeg" en "png" , miscchien dat dat uitmaakt?
Misschien dat ik achterlijk ben, maar de functie En valt me op dat je in de eerste situatie de "allowed filetypes" met een punt aangeeft (.jpeg, .png) en in de tweede situatie slechts met "jpeg" en "png" , miscchien dat dat uitmaakt?
Brengt mij op een ander puntje..
Hij blijft nu bij het laden van de script in de browser steeds de tekst tonen dat het niet gelukt is.. "File upload failed..." Dus ook als ik nog niks gedaan heb..
Die else wordt steeds uitgevoerd als het formulier niet verzonden is. En wanneer wordt het formulier niet verzonden? Juist ja, bij elke keer dat je de pagina bezoekt.
Gewijzigd op 01/01/1970 01:00:00 door david david