Tullen007 Skrevet 28. april 2006 Del Skrevet 28. april 2006 (endret) Jeg har et par problemer med scriptet mitt. tabellen i mysql består av 3 felt, fil_id = primær nøkkel not null navn = varchar(100) not nul fil = varchar(100) not null <?php require("config/db.php"); $navn= $_POST['navn']; $fil = $_FILES['fil']; $temp_fil = $fil['tmp_name']; $filnavn = "fil/".$fil['name']; move_uploaded_file($temp_fil, $filnavn) or die ("Klarte ikke å flytte filen."); $fil_type = $fil['type']; $fil_storrelse = $fil['size']; echo "<img src='$filnavn' align='center' height='100'><br>"; echo "<center>Filnavn: ".$filnavn."<br>"; echo "Filtype: ".$filtype."<br>"; echo "Filstørrelse: ".$fil_storrelse."<br></center>"; $sql = "INSERT INTO tbl_file (navn, fil) VALUES ('$navn', '$fil')"; mysql_query($sql, $db); mysql_close($db); ?> Med dette scriptet får jeg til å plasere filene jpeg og wma i mappen fil, men ikke mp3. Når jeg prøver å laste opp mp3 filen Yo.mp3 får jeg beskjed at filen kan ikke flyttes. I tillegg blir navnet rett på filene jeg får laste opp, men i kolonen fil i databasen står det bare Array. I tillegg lurte jeg på hvordan jeg kan kontrollere at det bare er jpeg, jpg, gif, mp3 og wma som lastes opp? Håper noen kan hjelpe meg med dette. Takk på forhånd (god helg) Endret 1. mai 2006 av Tullen007 Lenke til kommentar
kakkle Skrevet 28. april 2006 Del Skrevet 28. april 2006 Grunnen til at du ikke kan laste opp mp3 fil, kan være at størrelsen på filen er over det som er satt i php.ini. Mener at den som default er satt til 2 MB, og de fleste mp3 filer er jo over 2 MB Kolonnen fil blir array, fordi $fil er et array ($fil = $_FILES['fil']. Kolonnen fil trenger du vel ikke i det hele tatt ? Eller vil ertt og slett lagre selve filen i databasen ? Det er flere måter å kontrollere hvilke filer som lastes opp. En måte er å sjekke filendelsen: $filendelse = substr($filanvn, strrpos($filnavn, ".")); Dette er en måte å finne endelsen på. Men det er sikkert mange som sverger til andre måter. Evt så kan nok sikkert også ta nytte av $file[type] som vil gi deg filtype på filen, uavhengig av filendelsen. (F.eks en exe fil som har navnet sang.mp3, vil ikke bli identifisert som en mp3 fil) For å lese litt mer om dette: strrpos substr Handling file uploads /k Lenke til kommentar
CruellaDeVille Skrevet 28. april 2006 Del Skrevet 28. april 2006 Grunnen til at du ikke kan laste opp mp3 fil, kan være at størrelsen på filen er over det som er satt i php.ini. Mener at den som default er satt til 2 MB, og de fleste mp3 filer er jo over 2 MB Kolonnen fil blir array, fordi $fil er et array ($fil = $_FILES['fil']. Kolonnen fil trenger du vel ikke i det hele tatt ? Eller vil ertt og slett lagre selve filen i databasen ? Det er flere måter å kontrollere hvilke filer som lastes opp. En måte er å sjekke filendelsen: $filendelse = substr($filanvn, strrpos($filnavn, ".")); Dette er en måte å finne endelsen på. Men det er sikkert mange som sverger til andre måter. Evt så kan nok sikkert også ta nytte av $file[type] som vil gi deg filtype på filen, uavhengig av filendelsen. (F.eks en exe fil som har navnet sang.mp3, vil ikke bli identifisert som en mp3 fil) For å lese litt mer om dette: strrpos substr Handling file uploads /k 6004148[/snapback] en annen måte å sjekke filendelse på er å bruke pathinfo slik: $fileinfo = pathinfo($file); $extension = $fileinfo['extension']; $allowed_files = array("mp3", "wma", "jgeg"); if(in_array($allowed_files, $extension)){ // do stuff } if( Lenke til kommentar
pej Skrevet 30. april 2006 Del Skrevet 30. april 2006 en annen måte å sjekke filendelse på er å bruke pathinfo slik: $fileinfo = pathinfo($file); $extension = $fileinfo['extension']; $allowed_files = array("mp3", "wma", "jgeg"); if(in_array($allowed_files, $extension)){ // do stuff } Tror det ville vært bedre å sjekke Content-type da filendelser kan lyve. Lenke til kommentar
CruellaDeVille Skrevet 1. mai 2006 Del Skrevet 1. mai 2006 en annen måte å sjekke filendelse på er å bruke pathinfo slik: $fileinfo = pathinfo($file); $extension = $fileinfo['extension']; $allowed_files = array("mp3", "wma", "jgeg"); if(in_array($allowed_files, $extension)){ // do stuff } Tror det ville vært bedre å sjekke Content-type da filendelser kan lyve. 6019104[/snapback] Nå vet jeg svært lite om content-type, men kan den ekstraheres automatisk? Lenke til kommentar
arnizzz Skrevet 1. mai 2006 Del Skrevet 1. mai 2006 Hva med å bruke denne funksjonen? http://no.php.net/manual/en/function.mime-content-type.php Da har du kommet et stykke iallefall. I tillegg bør man vel ha noen check på klient-siden slik at ubrukelig filer ikke lastes opp. Med javascript så kan du iallefall sjekke om det er riktig filetternavn. OM brukeren har skrudd av javascript så blir jo denne ubrukelig. Men du får jo luket ut en god del trafikk. Noe jeg fant på nettet: html: <input type="file" id="myfile" name="myfile"> javascript: var filename = document.getElementById('myfile').value; var fileext = filename.substring(filename.lastIndexOf('.')+1); if (fileext != 'wmv') alert('invalid file type'); php: $filetype = $_FILES['myfile']['type']; if ($filetype != 'audio/x-mpegurl') echo "invalid file type"; Lenke til kommentar
CruellaDeVille Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 Hva med å bruke denne funksjonen?http://no.php.net/manual/en/function.mime-content-type.php Da har du kommet et stykke iallefall. I tillegg bør man vel ha noen check på klient-siden slik at ubrukelig filer ikke lastes opp. Med javascript så kan du iallefall sjekke om det er riktig filetternavn. OM brukeren har skrudd av javascript så blir jo denne ubrukelig. Men du får jo luket ut en god del trafikk. Noe jeg fant på nettet: html: <input type="file" id="myfile" name="myfile"> javascript: var filename = document.getElementById('myfile').value; var fileext = filename.substring(filename.lastIndexOf('.')+1); if (fileext != 'wmv') alert('invalid file type'); php: $filetype = $_FILES['myfile']['type']; if ($filetype != 'audio/x-mpegurl') echo "invalid file type"; 6025165[/snapback] Men jeg forstår ikke at det skal gjøre noen forskjell. Siden tydligvis mime-type ekstraheres fra file extension lyver den også hvis file extension er feil. Men kan en skjule evilvirus.vb som en mp3-fil og likevel bli kjørt som en vb-fil? Vil ikke da en file handler for mp3 overta og returnere en error siden dette er ukjent filinnhold? Lenke til kommentar
arnizzz Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 Jeg tror ikke den funksjonen ser på extension, men innholdet. Men jeg tar sikkert feil. Lenke til kommentar
pej Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 Jeg tror ikke den funksjonen ser på extension, men innholdet. Men jeg tar sikkert feil. Nei, du har helt rett. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå