Gå til innhold

Filopplasting, ville ikke laste opp


Anbefalte innlegg

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 av M4rTiN
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-rXRozPkg

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! :thumbup:

 

if (filesize($_FILES['file']['tmp_name']) > $size) {

// For stor

} else {

// Under grensa

}

Endret av Slettet-rXRozPkg
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...