upload script
in chrome werkt alles perfect het bestandje wordt geupload en wordt geinsert in de database
maar in alle andere browsers krijg ik het bericht "Extension not allowed" terwijl het exact hetzelfde bestand is.
dit is de code
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
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
<?php
require_once 'mysql.php';
$result = mysql_query("SELECT * FROM Songs");
$num_rows = mysql_num_rows($result);
$error = 0;
$songnumber = $num_rows +=1;
$songname = '';
if ((($_FILES["file"]["type"] == "audio/mp3") || ($_FILES["file"]["type"] == "audio/mp3")) && ($_FILES["file"]["size"] < 21000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "";//another echo to display after upload is complete
$query1 = mysql_query("SELECT * FROM Songs WHERE Songname = '". $_FILES["files"]["name"] ."");
if($query1 != '') {
$error +=1;
}
if (file_exists("../songs/" . $_FILES["file"]["name"]) || $error !=0)
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"../songs/" . $_FILES["file"]["name"]);
//Below shows the link for the mp3
$songname = $_FILES["file"]["name"];
mysql_query("INSERT INTO Songs (Songname, Songnumber) VALUES ('$songname', '$songnumber')");
echo "Your song has been uploaded <a href=\"../index.php\">Click here</a> to go back";
}
}
}
else
{
echo "Extension not allowed"; //Error message here if it's to big or wrong extension
}
?>
require_once 'mysql.php';
$result = mysql_query("SELECT * FROM Songs");
$num_rows = mysql_num_rows($result);
$error = 0;
$songnumber = $num_rows +=1;
$songname = '';
if ((($_FILES["file"]["type"] == "audio/mp3") || ($_FILES["file"]["type"] == "audio/mp3")) && ($_FILES["file"]["size"] < 21000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "";//another echo to display after upload is complete
$query1 = mysql_query("SELECT * FROM Songs WHERE Songname = '". $_FILES["files"]["name"] ."");
if($query1 != '') {
$error +=1;
}
if (file_exists("../songs/" . $_FILES["file"]["name"]) || $error !=0)
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"../songs/" . $_FILES["file"]["name"]);
//Below shows the link for the mp3
$songname = $_FILES["file"]["name"];
mysql_query("INSERT INTO Songs (Songname, Songnumber) VALUES ('$songname', '$songnumber')");
echo "Your song has been uploaded <a href=\"../index.php\">Click here</a> to go back";
}
}
}
else
{
echo "Extension not allowed"; //Error message here if it's to big or wrong extension
}
?>
PHP draait op de server, dus is niet browser afhankelijk. Laat het gedeelte van <form> tot </form> eens zien.
Heb je in de form tag wel enctype="multipart/form-data" meegegeven?
Niels op regel twee staat twee keer een id attribute, en dat mag natuurlijk niet!
oh ik zie het , wat een stomme fout ik zal het even aanpassen heeft dit ook betrekking tot de werking van het script?
Nee, is alleen browserafhankelijk. Je checkt op MIME-type, en die kunnen per browser/OS anders zijn. Je kan beter controleren op de extensie, door bijv end(explode('.', $_FILES['file']['name'])) te doen. Dan kun je controleren of het bestand eindigt op .mp3 bijv. Dan nog zou je eigenlijk wel moeten controleren of het daadwerkelijk een MP3 bestand is, anders kan men ook gewoon PHP in een bestand plaatsen, als bijv. test.mp3 opslaan en vervolgens proberen uit te voeren op de server..
Chris - op 08/08/2013 09:59:26:
... gewoon PHP in een bestand plaatsen, als bijv. test.mp3 opslaan en vervolgens proberen uit te voeren op de server..
Ik veronderstel dat dit in principe geen probleem mag geven; .mp3 bestanden worden niet uitgevoerd als php.
Maar ja, als de instellingen zo zijn dat willekeurige extensies toch worden uitgevoerd als php ... dan zit je natuurlijk wel met een probleem.
:) Tenzij je het bijv. in een andere pagina kan includen. Bijvoorbeeld een index.php?pagina= systeem. Als die niet goed is beveiligd en je dus bestanden kan includen, kan dat op die manier..
ja; dat soort scripters zal ook wel nog rondlopen
ja inderdaad dat is niet wat ik wil , maar het enigste wat dus het uploaden tegen houdt in firefox is die check in de php , alles werkt naar behoren maar krijg telkens de extension not allowed error als het uploaden klaar is. maar hij upload niks.
Code (php)
1
2
3
2
3
<?php
echo "Extension not allowed: " . $_FILES["file"]["type"]; // in jouw post lijn 53
?>
echo "Extension not allowed: " . $_FILES["file"]["type"]; // in jouw post lijn 53
?>
Dan kan je zien wat er gebeurt. Misschien verschijnt "audio/mp3" in hoofdletters, of zo.
Nu ja ... dan zie je het
Gewijzigd op 08/08/2013 11:10:54 door Kris Peeters
Toevoeging op 08/08/2013 12:37:36:
de reactie van firefox is : Extension not allowed: audio/mpeg
Toevoeging op 08/08/2013 12:50:09:
ohh hahahha ik heb het al gevonden , de vergelijking die ik maak is checken of het bestand een mp3 bestand is of een mp3 bestand is. dat is exact hetzelfde. firefox noemt het mpeg , chrome noemt het mp3. hat het gecopy paste van de eerste vergelijking maar nooit veranderd naar mpeg. net aangepast en het werkt perfect. iedereen bedankt voor de hulp!