Martin A. Skrevet 27. oktober 2006 Del Skrevet 27. oktober 2006 (endret) Nå kjenner jeg at jeg blir KRAFTIG irritert. 4. gangen jeg prøver å lage denne tråden, men hver gang får diskusjon.no et problem. Etter 2. gangen kopierte jeg innholdet, og prøvde i IE. Funket ikke der heller. Prøvde så å lage en testtråd i kategorien "Testposter" elns. DER fungerte det. Men da hadde jeg selvfølgelig kopiert over kopien med en kopi av feilmelding. Her er koden: <?php if(!defined('IS_INCLUDED')) { echo 'Filen kan ikke vises via direkte link!'; exit; } require_once('data/config.php'); $size = "500"; $dir = "img/"; $ext = array('jpg', 'gif', 'png'); $ip = ip2long($_SERVER['REMOTE_ADDR']); $time = time(); $id = $_SESSION['id']; $fil = basename($_FILES['file']['name']); $info = pathinfo($fil); $målmappe= $dir . strtoupper($fil[0]) . "/" . $fil; $submit = $_POST['submit']; $sql = "INSERT INTO subs(brukerid, navn, ip, dir, time) VALUES('$id', '$fil', '$ip', '$dir', '$time')"; if($_SESSION['Innlogget'] == "1") { if(!isset($submit)) { echo "Maks filstørrelse: " . $size/1000 . " MB <form enctype='multipart/form-data' action='' method='post'>\n <p><input type='hidden' name='MAX_FILE_SIZE' value='" . $size . "' /></p>\n <p>Velg undertekst: <input type='file' name='file' /></p>\n <p><input type='submit' name='submit' value='Last opp' /></p>\n </form>"; } if(isset($submit)) { if(basename($_FILES['file']['name']) != '') { if(in_array(strtolower($info['extension']), $ext)) { if(move_uploaded_file($_FILES['file']['tmp_name'], $målmappe)) { $opplastet = '1'; mysql_query($sql) OR die(mysql_errno() . " : " . mysql_error()); } else { $error = '1'; } // move } else { $error = '2'; }// in_array } else { $error = '3'; } //$fil = 0 } // $submit if($opplastet == '1') { $opplastet = '0'; echo "Bildet ditt ble lastet opp"; } if($error == '1') { $error = '0'; echo "Bildet ble ikke lastet opp. Prøv igjen, eller kontakt webmaster"; } if($error == '2') { $error = '0'; echo "Ulovlig filendelse."; } if($error == '3') { $error = '0'; echo "Velg ei fil før du forsøker å laste opp"; } if(isset($error)) // litt debug { echo $dir . " : " . $fil . " : " . $fil[0] . " : " . $målmappe; } } else { echo "Du må <a href='?side=login'>logge inn</a> før du kan laste opp"; } ?> $error = '1' slår ut. Det vil si at feilmeldingen "Bildet ble ikke lastet opp. Prøv igjen, eller kontakt webmaster" kommer, uten at PHP serverer meg noe på sølvfat, selv om jeg har error_reporting(E_ALL) på. move_uploaded_file() er det altså noe galt med. Har også en annen versjon av denne opplasting en annen plass på samme server, og det fungerer utmerket. Eneste forskjellen er flere filer i samme opplasting i det andre scriptet. -Martin Gjorde nå om [ php] til . EDIT: Faen det værste jeg har vært borti. Plages så mye for en så liten bagatell. Endret 27. oktober 2006 av M4rTiN Lenke til kommentar
Peter Skrevet 27. oktober 2006 Del Skrevet 27. oktober 2006 lages målmappen noe sted, vet ikke om move_uploaded_file lager mapper. Lenke til kommentar
Martin A. Skrevet 27. oktober 2006 Forfatter Del Skrevet 27. oktober 2006 Målmappen(e) eksisterer. Om de ikke hadde gjort det, burde det vel kommet en feilmelding på det? Bruker XAMPP om det har noen betydning. Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 28. oktober 2006 Del Skrevet 28. oktober 2006 (endret) Hvor store er filene du prøver å laste opp? MAX_FILE_SIZE saken skal nemmlig anngis i bytes, og du anngir i følge scriptet kun 500 bytes, og ikke 0,5MB som du tror du gjør. Hvis det fortsatt ikke virker etter å ha endret $size til 500000, så ta en print_r($_FILES) etter if(isset($submit)) {, og post resultatet her. Det er forøvrig ikke så rart at move_uploaded_file klager når filen faktisk ikke har blitt lastet opp til serveren :o) Edit: Du burde også legge inn en sjekk på om filen som er lastet opp faktisk er mindre enn maksgrensen, og ikke bare stole blindt på MAX_FILE_SIZE. Det er ikke sikkert nettleseren bryr seg om den tag'en der i det hele tatt. Aldri stol på brukerdata! if (filesize($_FILES['file']['tmp_name']) > $size) { // For stor } else { // Under grensa } Endret 28. oktober 2006 av Slettet-rXRozPkg Lenke til kommentar
FraXinuS Skrevet 28. oktober 2006 Del Skrevet 28. oktober 2006 Nå kjenner jeg at jeg blir KRAFTIG irritert. 4. gangen jeg prøver å lage denne tråden, men hver gang får diskusjon.no et problem. Jeg har samme problem, ser ut som om det bare skjer i Opera. Det skjer kun når du har i posten. Det du må gjøre er å poste eller forhåndsvise en gang slik at du får feilmeldingen, og så kopierer du teksten fra der du kan kopiere teksten når du får feilmeldingen. Og så går du tilbake til der du skriver posten og oppdaterer og så limer du inn det du skrev sist gang. Da vil alt fungere. Lenke til kommentar
Martin A. Skrevet 28. oktober 2006 Forfatter Del Skrevet 28. oktober 2006 Merkelig. Jeg var helt sikker på at jeg hadde prøvd å endre $size til 9999999, for nå fungerte det faktisk. Men takk for tipset ang filesize() lumted Lenke til kommentar
Peter Skrevet 28. oktober 2006 Del Skrevet 28. oktober 2006 Hvorfor kjøre på med ekstra funksjonskall? $_FILES inneholder allerede størrelsen på filen. $_FILES['userfile']['size'] Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 28. oktober 2006 Del Skrevet 28. oktober 2006 Hvorfor kjøre på med ekstra funksjonskall?$_FILES inneholder allerede størrelsen på filen. $_FILES['userfile']['size'] 7168814[/snapback] D'oh! 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å