Avatar billede babysus85 Nybegynder
28. oktober 2008 - 23:27 Der er 10 kommentarer og
1 løsning

fileupload virker men vil ikke kendes ved det

Jeg har siddet længe og leget med http://www.w3schools.com/PHP/php_file_upload.asp 's eksempel på file upload. Og jeg har også prøvet eksemplet fra php manualen:

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

Men der sker det at filen bliver uploadet men fejlmeddelelserne, som i sidste tilfælde er "Possible file upload attack!" vises.

Og de to ting burde bare ikke ske samtidig jo. Forstår det bare ikke.
Avatar billede babysus85 Nybegynder
28. oktober 2008 - 23:31 #1
For en god ordens skyld: w3schools eksempel på en upload


<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";  // Denne er det eneste output jeg får
?>
Avatar billede kjeldsted Novice
29. oktober 2008 - 13:30 #2
Har du ikke andet kode end:


$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";
Avatar billede dkfire Nybegynder
29. oktober 2008 - 14:09 #3
Hvordan ser din form ud som du bruger til at uploade din fil med ??

Er du sikker på at din fil er af den type som er tilladt, dvs gif eller jpeg ??
Fylder din fil mere end 20 kb ?
Avatar billede babysus85 Nybegynder
29. oktober 2008 - 15:31 #4
Min <form>:

<form action="<?php echo $editFormAction; ?>" enctype="multipart/form-data" method="post" name="form1" id="form1">
Andre felter her
<input name="uploadedfile" type="file" />
<input type="submit" value="Ok" />

Kjeldsted: ikke når vi snakker om selve det kodestykke der har med upload at gøre. Jeg har prøvet med både det lille stykke, som du også gengav, og så det i kommentaren af 28/10-2008 23:31:11.
Hvis jeg afprøver koden fra w3schools, og den uploadede fil er af forkert type eller for stor, så uploader den ikke, og den viser stadig teksten "Invalid file".

Mit problem er at der bliver uploadet, men at der samtidig kommer den "invalid file"-meddelelse, som jo kun burde køres hvis filtype og størrelse ikke godkendes.

Som om der køres kode fra både den yderste if og else samtidig. Jeg har prøvet at sætte echo ved hver enkelt if og else, men det er stadig kun den omtalte linie der vises i browseren.
Avatar billede dkfire Nybegynder
29. oktober 2008 - 15:47 #5
Jamen den kode som du viser lige nu virker bestemt ikke sammen.
I din form har du:
<input name="uploadedfile" type="file" />

men i din php kode bruger du $_FILES['file'] eller $_FILES['userfile'].
Jeg har lidt svært ved at se at den skulle uploade noget som som helst til din mappe.
Har du vist ALT din php kode som ligger i din fil som håndtere din upload ??
Avatar billede dkfire Nybegynder
29. oktober 2008 - 15:50 #6
Hvis du bruger den form som du har vist, så skal du bruge $_FILES['uploadedfile']
Avatar billede kjeldsted Novice
30. oktober 2008 - 08:55 #7
Hvis du mere at koden fra W3Schools uploader og altid gier fejlen er der noget helt galt. Jeg har brugt den 1000-vis af gange, uden problemer. Der må være noget andet galt. Og så dkfire skriver så vil det lille stykke du skriver slet ikke uploade noget.
Avatar billede babysus85 Nybegynder
30. oktober 2008 - 11:54 #8
Jeg skrev en besked her i går eftermiddags, men der gik et eller andet galt med mit internet. Så jeg er altså ked af at i har brugt tid på det herefter.

Det handlede ikke om variabelnavnet. Det har jeg styr på. Jeg kopierede bare koden fra de to sider og herind i eksperten, fordi jeg synes det lige var det nemmeste. Og jeg synes det er fjollet at jeg lægger hele min 250 liniers fil herud, når det kun drejer sig om en brøkdel af dem.

Jeg løste problemet i går, da jeg havde lagt min form op. Jeg prøvede at dele form og uploadscript i to filer. Og da jeg testede virkede det perfekt. Der blev uploadet og informationerner om uploaden:

echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

...virkede perfekt. Men hvis scriptet lå i samme fil som formen, så der uploadet, herefter da siden blev læst ind igen, så var informationerne her ovenfor "smidt ud igen", og scriptet forsøgte at teste filtype og størrelse på filen indtastet i <input>-feltet. Efter som der ikke var nogen indtastning, vistes teksten "Invalid file".

Altså mit script virkede jo, men blev herefter kørt en ekstra gang. Det var svaret.

Beklager hvis jeg ikke fik forklaret ordentligt, og måske ikke fik formuleret mit spørgsmål ordentligt, men det er squ noget specielt stof at forklare, når man bare er selvlært.
Avatar billede babysus85 Nybegynder
30. oktober 2008 - 11:54 #9
lukker
Avatar billede dkfire Nybegynder
30. oktober 2008 - 13:40 #10
Hvorfor er det lige du har spildt vores tid med IKKE at vise din egen kode, men vise andres kode.
Hvis du har problemer med DIN kode, så vis DIN kode en anden gang. Ellers giver det slet ingen mening at hjælpe med de viste koder.
Avatar billede babysus85 Nybegynder
30. oktober 2008 - 19:36 #11
Fordi resten af min kode ikke havde noget med mit problem at gøre. Langt det meste var bare alm html. Så ville det jo være lidt fjollet. Mit problem var jo at jeg ikke kunne finde ud af at uploade filer, selvom jeg startede med at prøve med 2 pålidelige scripts.
Men du forstod jo slet ikke hvad mit problem var, for det kan jeg jo se på dine spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester