Avatar billede -kenner- Nybegynder
30. juni 2006 - 12:04 Der er 10 kommentarer og
1 løsning

Fil upload, små justeringer

Hej eksperter,

je har en fin lille kode her, der uploader filer. Jeg skal bare lige have den justeret, sådan at den tillader alle filer med undtagelse af skadelige filer, så som .php, og hvad der eller kan skade systemet.

Source:

<?php

  define( 'MAPPE', 'en_mappe/' );

  if ( isset( $_POST['gem'] ) )
  {
      if ( is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
      {
        $tmpimg = MAPPE . uniqid('tmpimg') . uniqid('a');
        move_uploaded_file( $_FILES['fil']['tmp_name'], MAPPE . $tmpimg );
        if ( $inf = @getimagesize( $tmpimg ) )
        {
          if ( $inf[2] == 2 )
          {
              // hent id fra databasen
              $id = 1;
              rename( $tmpimg, MAPPE . $id . '.jpg' );
              echo "Fil gemt.";
          }
          else
          {
              echo "Det er ikke et jpeg billede.";
              @unlink( $tmpimg );
          }
        }
        else
        {
          echo "Det er ikke et jpeg billede.";
        }
      }
  }

?>
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
<input type="file" name="fil">
<input type="submit" name="gem" value="Upload">
</form>
Avatar billede jakobdo Ekspert
30. juni 2006 - 12:43 #1
Sådan:

<?php

define( 'MAPPE', 'en_mappe/' );

if(isset($_POST['gem']))
{
    if(is_uploaded_file($_FILES['fil']['tmp_name']))
    {
        $tmpfile = MAPPE . md5(uniqid(rand(), true));

        move_uploaded_file( $_FILES['fil']['tmp_name'], MAPPE . $tmpfile );
    }
}
?>
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
<input type="file" name="fil">
<input type="submit" name="gem" value="Upload">
</form>
Avatar billede -kenner- Nybegynder
30. juni 2006 - 18:23 #2
Vil den returnere fejl, hvis der f.eks. bliver uploaded en .php fil?
Avatar billede Bjarne Novice
01. juli 2006 - 18:53 #3
Sørg for at filerne ikke kan eksekveres. En .htaccess fil med følgende indhold i upload-mappen:

<Files *.*>
ForceType text/plain
</Files>

<Files *>
ForceType text/plain
</Files>
Avatar billede jakobdo Ekspert
02. juli 2006 - 11:52 #4
kenner: Jeg glemte at melde fejl på upload af php filer.
Nu acceptedede den bare alt.
Avatar billede -kenner- Nybegynder
02. juli 2006 - 11:54 #5
okay, så jeg smider bare en fil ind i den mappe, som filerne bliver uploaded til, der indeholder dette lille stykke kode og hedder .htaccess?

<Files *.*>
ForceType text/plain
</Files>

<Files *>
ForceType text/plain
</Files>
Avatar billede jakobdo Ekspert
02. juli 2006 - 11:58 #6
Ja, så vil koden altid blive opfattet som text/plain og vil altså ikke blive eksekveret.
Avatar billede -kenner- Nybegynder
06. juli 2006 - 10:41 #7
skal der stå noget foran .htaccess ? altså et fil navn?
Avatar billede jakobdo Ekspert
06. juli 2006 - 10:49 #8
Nej, .htaccess er filens fulde navn.
Avatar billede -kenner- Nybegynder
24. december 2006 - 17:59 #9
okay, tak - smid et svar
Avatar billede jakobdo Ekspert
25. december 2006 - 09:24 #10
svar
Avatar billede jakobdo Ekspert
02. januar 2007 - 08:13 #11
takker for point.
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