Meddelande

Minska
No announcement yet.

Bästa och säkraste sättet att ladda upp bilder?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Bästa och säkraste sättet att ladda upp bilder?

    Hej alla glada!

    Jag vill ha ett bilduppladdningsscript som är säkert och som funkar i så många fall som möjligt med vissa begränsningar Det som saknas i det jag knåpat ihop hittills är: maxstorlek MB, maxstorlek pixlar, check så att endast .jpg eller .gif tillåts samt att man ska kunna skicka med ett meddelande. Det går inte att hämta form-info från textfält och spara direkt till databas när man kör multiform-data-grej va? Eller är jag kvar i ASP-banor nu då man fick göra på ett speciellt sätt..?

    Jag funderar även på hur svårt det är att ordna så att väldigt stora filer sparas om till mindre format direkt i uppladdningen. Har sett att en rad sidor använder det systemet. Vilket är mycket smart då långt ifrån alla vet hur man sparar om en fil till rätt storlek osv.

    Blir glad för alla förslag hur jag kan utveckla mitt script Eller en länk till ett bra bilduppladdningsscript, trådar om samma ämne osv Min kod hittills. (så hoppas vi att wF inte gör om den allt för mycket...)

    [kod] if(isset($_FILES['userfile']))
    {
    // mappen där filerna ska hamna
    $upload_dir = 'bilder/';

    // kolla om en fil har blivit angiven
    if(empty($_FILES['userfile']['name']))
    die('Var god välj en fil att ladda upp!');

    // flytta filen
    if(is_uploaded_file($_FILES['userfile']['tmp_name']))
    move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_dir.$_FILES['userfile']['name']);
    // skriv ut ett meddelande
    echo "<b>Filen ".$_FILES['userfile']['name']." har laddats upp!</b><br><br>Sökväg till bilden: \"bilder/".$_FILES['userfile']['name'];
    }[/kod]
    Mvh, Sebastian
    bassebhu - din kompis bland kompisar

    Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
    eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

    Rapportera till bassebhu

  • #2
    Här kommer några tips.
    PHP-kod:
    // Ta bort STORA bokstäver mellanslag å ä och ö
    $_FILES["userfile"]["name"] = strtolower($_FILES["userfile"]["name"]);
    $_FILES["userfile"]["name"] = str_replace(' ''_'$_FILES["userfile"]["name"]);
    $_FILES["userfile"]["name"] = str_replace('å''a'$_FILES["userfile"]["name"]);
    $_FILES["userfile"]["name"] = str_replace('ä''a'$_FILES["userfile"]["name"]);
    $_FILES["userfile"]["name"] = str_replace('ö''o'$_FILES["userfile"]["name"]); 
                
    $fil_storlek $_FILES['userfile']['size'];
    $fil_typ substr($_FILES["userfile"]["name"], -44);
            
    // Godkänn storleken (307200 bytes = 300 kb)    
    if ($fil_storlek 307200) {
        
    $reg_error[] = 0
    }
    //  Godkänn filändelsen
    if ($fil_typ != ".jpg" && $fil_typ != ".gif" && $fil_typ != "jpeg") {
        
    $reg_error[] = 1;
    }

    // errorlista 
    $error_list[0] = "Bilden är för stor. Får max vara 300kb."
    $error_list[1] = "Bilden är av fel filtyp. Måste vara JPG, JPEG eller GIF."
    $error_list[2] = "Bilden är för bred. Får max vara 600px.";
    $error_list[3] = "Bilden är för hög. Får max vara 600px.";
                
    if (isset(
    $reg_error)){ 
        
    // Någon uppgift är fel, skriv ut felmeddelande...
        
    echo "Något blev fel:<br>\n"
        echo 
    "<ul>\n"
        for (
    $i=0$i<sizeof($reg_error); $i++) { 
            
            echo 
    "<li>{$error_list[$reg_error[$i]]}</li>\n"
        } 
            echo 
    "</ul>\n"
            echo 
    "<br><a href=\"javascript:history.back()\">Tillbaka</a>\n";
            exit;

    Att skicka med information från samma formulär är inga problem även om det formuläret är satt till enctype="multipart/form-data"
    Om jag var blygsam,skulle jag vara perfekt
    ><((((º>

    Kommentera


    • #3
      Schyrre

      Men som jag förstått det så skapas tre variabler med ändelserna _name, _size och _type.

      Om nu filtypen finns i denna variabel, vore inte det smartare att använda den i en if-sats i stället för:
      PHP-kod:
      $fil_typ substr($_FILES["userfile"]["name"], -44);
      if (
      $fil_typ != ".jpg" && $fil_typ != ".gif" && $fil_typ != "jpeg") {
      $reg_error[] = 1
      Jag menar. Det händer väl att det laddas upp filer utan ändelse i filnamnet. Och om den bara går på ändelsen så kan man väl ladda upp nån annan typ av fil fast med t ex .jpg som ändelse? Vilket inte vore så lyckat.

      Tackar för svar.
      bassebhu - din kompis bland kompisar

      Om du mot förmodan inte är nöjd med kompositionen av ovanstående inlägg,
      eller att det helt enkelt inte nådde upp till dina förväntningtar - var god:

      Rapportera till bassebhu

      Kommentera


      • #4
        Tyvärr är det väl endast IE (och kanske ytterligare någon/några läsare) som kollar filen för att försöka bedöma rätt mime-typ.

        Mozilla/Firefox och Opera kollar endast efter filändelsen och sätter mime-typ efter denna.

        Jag tog upp det med Firefox-folket, men de ansåg detta var en säkerhetsrisk hos IE.
        Funktion är vackert

        Kommentera


        • #5
          Ja, jag har läst otaliga artiklar och forumsinlägg ang hur man bäst kollar filtyp, och alla har haft olika syner på saken.
          Så vilket sätt som är bäst vet jag faktiskt inte.
          Om jag var blygsam,skulle jag vara perfekt
          ><((((º>

          Kommentera


          • #6
            Är det bilder det handlar om brukar jag göra kontrollen med getimagesize mot $_FILES['userfile']['tmp_name'].
            Funktion är vackert

            Kommentera


            • #7
              Hur gör jag enkel formatering i formulärfält?

              Hej alla wFare - och mycket God och Glad Påsk!

              Har gjort ett nyhetsscript, som andvänds av ganska många i klubben
              och det är ju jätttekul, men de flesta kan inte datorscrilt eller html.

              Jag vill i inmatningen kunna ha symboler för textformatering
              - precis som i just denna inmatingsrutan.

              Självklart finns det någon som redan gjort detta typ av script.

              Tips mottages tacksamt



              Hoppsan mitt inlägg skulle nog ha en egen tråd.
              _/) _/) _/)
              // Tomas

              Kommentera


              • #8
                http://www.webforum.nu/showthread.ph...79#post1176479

                du får använda javascript för att infoga t.ex i formuläret
                Om jag var blygsam,skulle jag vara perfekt
                ><((((º>

                Kommentera


                • #9
                  Letade reda på en gammal kod jag skrev för några år sen.
                  Forumet här klagade på att jag bifogade för många bilder, så jag laddar upp det istället.
                  Bifogade filer
                  Om jag var blygsam,skulle jag vara perfekt
                  ><((((º>

                  Kommentera

                  Working...
                  X