Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20

Discussione: upload

  1. #11
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?php
    $cercafile
    =$_GET['file'];



    $new_incremental_name=incremental_name($cercafile);
    echo 
    $new_incremental_name;



    function 
    incremental_name($name)
      {
      if (!
    file_exists($name)) return $name;
      
      
    $blocks   explode('.',$name);
      
    $ext      $blocks[count($blocks)-1];
      
    $filename basename($name);
      
    $path     str_replace($filename,"",$name);
      
      unset(
    $blocks[count($blocks)-1]);
      
      for (
    $n=1;$n 1000$n++)
        {
        
    $new=$path.basename($filename,".$ext")."_$n.$ext";
        
        if (!
    file_exists($new)) return  $new;
        }
      }

    ?>

    una sua applicazione

    Codice PHP:
    if (is_uploaded_file($_FILES['userfile']['name'][$i]))
      {
      
    $new_name=incremental_name("cartella/{$_FILES['userfile']['name'][$i]}");
      
    move_uploaded_file($_FILES['userfile']['tmp_name'][$i],$new_name) or die('errore!!');
      
    chmod($new_name,0777);
      } 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #12
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    In pratica salvo la prima parte come se fosse uno script che poi richiamo nella pagina per l'upload del file con 'require once'

    Giusto ?

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Ho anche un altro dubbio. Nella riga:

    Codice PHP:
    $new_name=incremental_name("cartella/{$_FILES['userfile']['name'][$i]}"); 
    Quando scrivi 'cartella' è la cartella di destinazione del file ?

  4. #14
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    esattamente
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #15
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Funziona !!! (Grazie) Ma...

    succede che ora mi salta un controllo sui caratteri speciali e gli spazi nel nome che ho più su nel codice di upload.

    Codice PHP:
            $uploaddir IMAGES_DIR;
            
    $char = array(' ',"]","[");
            
    $uploadfile $uploaddir str_replace($char,"_",$_FILES['userfile']['name'][$i]); 

  6. #16
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Questo è il codice completo

    Codice PHP:
    <?php
      
    // ---------------
      // INITIALIZE PAGE
      // ---------------
      
    require_once('scripts/sb_functions.php');
      require_once(
    'scripts/sb_incrementalname.php');
      global 
    $logged_in;
      
    $logged_in logged_intruetrue );
      
      
    read_config();
      
      require_once(
    'languages/' $blog_config'blog_language' ] . '/strings.php');
      
    sb_language'upload_img' );
      
      
    // ---------------
      // POST PROCESSING
      // ---------------
      
      
    for ($i=0;$i<count($_FILES['userfile']);$i++) {
      
        if (
    $ok == null) {
          
    $ok false;
        }
        
        if (
    is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
          if ( 
    $_FILES'userfile' ][ 'error' ][$i] == ) {         // se folder non esiste lo crea ndrob
            
    if (!file_exists(IMAGES_DIR)) {
              
    $oldumask umask(0);
              @
    mkdir(IMAGES_DIR0777 );
              @
    umask($oldumask);
            }
             
    // Mod rob: aggiunte le parentesi quadre alla sostituzione con underscore (le parentesi quadre nell'immagine vanno in                  // conflitto con il tag per inserire l'immagine nel post) 
             // Old: $uploadfile = $uploaddir . preg_replace("/ /","_",$_FILES['userfile']['name'][$i]);
            
    $uploaddir IMAGES_DIR;
            
    $char = array(' ',"]","[");
            
    $uploadfile $uploaddir str_replace($char,"_",$_FILES['userfile']['name'][$i]);
            
            
    /* Mod rob: controllo presenza altro file con lo stesso nome (Sostituita dall'aggiunta della data)
            if (file_exists($uploadfile)) {
              echo('Esiste già un immagine con lo stesso nome.');
              exit;
            } */
            
            
    if ( @getimagesize($_FILES['userfile']['tmp_name'][$i]) == FALSE ){
              echo(
    'Il file selezionato non è un file immagine valido');
              exit;
            }
            
            if (
    strpos($uploadfile".") === false) {
              echo(
    'File does not have an extension');
              exit;
            }
            
            if (
    strpos($uploadfile".") == 0) {
              echo(
    'File begins with "."');
              exit;
            }
            
            if (
    strrpos($uploadfile".") == strlen($uploadfile)-1) {
              echo(
    'File ends with "."');
              exit;
            }
            
            
    $extension strtolower(substr(strrchr($uploadfile"."), 1));
            
            if (
    strlen($extension) == 0) { // Not really needed...
              
    echo('File ends with "." and does not have an extension');
              exit;
            }
            
            
    // Allowed files
            
    $upload_valid_extentions = array( "jpg""gif""png" );
            
    $extension strtolower(substr(strrchr($uploadfile"."), 1));
            if (!
    in_array($extension$upload_valid_extentions)) {
              echo(
    'That filetype is not allowed');
              exit;
            }
            
            
    // Explicitly denied files (we don't really need this anymore...) - provided by ReZEN (rezen@xorcrew.net)
            
    $upload_denied_extentions = array( "exe""pl""php""php3""php4""php5""phps""asp","cgi""html""htm""dll""bat""cmd" );
            foreach (
    $upload_denied_extentions AS $denied_extention) {
              if(
    $denied_extention == $extension) {
                echo(
    'That filetype is not allowed');
                exit;
              }    
            }

            
    //$day = date("d",time());
            //$month = date("m",time());
            //$year = date("y",time());
            //$hourH = date("H",time());
            //$houri = date("i",time());
            //$hours = date("s",time());
            
    $new_name=incremental_name("images/{$_FILES['userfile']['name'][$i]}");
            if ( 
    move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $new_name) ) {
              
    chmod$uploadfile0777 );
              
    $ok true;
            } else {
              
    $ok false;
            }
          }
        }
      }
      if ( 
    $ok === true ) {
        
    redirect_to_url'add.php' );
      }
      
    // ------------
      // PAGE CONTENT
      // ------------
      
    function page_content() {
        global 
    $lang_string$user_colors;
        if ( 
    $ok !== true ) {
          echo( 
    $lang_string'error' ] . $ok '

    );
        }
        
    //echo(count($_FILES['userfile']));
        //print_r($_FILES['userfile']);
        //echo($_FILES['userfile']['name'][0]);
        
    echo( '[url="index.php"]' $lang_string'home' ] . '[/url]

    );
      }
      
      
    // ----
      // HTML
      // ----
    ?>
      <?php echo( get_init_code() ); ?>
      <?php require_once('themes/' $blog_theme '/user_style.php'); ?>
      
      <title><?php echo($blog_config'blog_title' ]); ?> - <?php echo( $lang_string'title' ] ); ?></title>
    </head>
      <?php 
        
    // ------------
        // BEGIN OUTPUT
        // ------------
        
    theme_pagelayout();
      
    ?>
    </html>

  7. #17
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    @blackx:

    non ti fa il controllo perchè gli passi il nome del file originale nudo e crudo, lasciandoti dietro il controllo....

    la riga la devi modofocare così...
    Codice PHP:
    $new_name=incremental_name("images/".str_replace($char,"_",$_FILES['userfile']['name'][$i]); 
    in pratica gli passi il nome del file GIA` controllato


    @luigi_v1:

    la funzione a se stante la puoi inserire dove ti pare, purchè sia reperiibile (es in un include, a fine pagina o inizio pagina ecc...)

    per un esempio pratico ti riporto quello che c'è su php.net (esempio classico con un solo file)
    ma con la funzioncina applicata
    codice:
    <form enctype="multipart/form-data" action="fileupload.php" method="POST">
        
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
    </form>
    e fileupload.php
    Codice PHP:
    <?php
    // Nelle versioni di PHP precedenti alla 4.1.0 si deve utilizzare  $HTTP_POST_FILES anzichè 
    // $_FILES.
    $uploaddir '/var/www/uploads/';
    $uploadfile incremental_name($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 
    "Possibile attacco tramite file upload!\n"
    }
    echo 
    'Alcune infromazioni di debug:';
    print_r($_FILES); 

    print 
    "</pre>";



    function 
    incremental_name($name)
      {
      if (!
    file_exists($name)) return $name;
      
      
    $blocks   explode('.',$name);
      
    $ext      $blocks[count($blocks)-1];
      
    $filename basename($name);
      
    $path     str_replace($filename,"",$name);
      
      unset(
    $blocks[count($blocks)-1]);
      
      for (
    $n=1;$n 1000$n++)
        {
        
    $new=$path.basename($filename,".$ext")."_$n.$ext";
        
        if (!
    file_exists($new)) return  $new;
        }
      }

    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    [QUOTE]Originariamente inviato da dottwatson
    @blackx:

    non ti fa il controllo perchè gli passi il nome del file originale nudo e crudo, lasciandoti dietro il controllo....

    la riga la devi modofocare così...
    Codice PHP:
    $new_name=incremental_name("images/".str_replace($char,"_",$_FILES['userfile']['name'][$i]); 
    in pratica gli passi il nome del file GIA` controllato

    Esatto. Però mi da errore (ho fatto una prova al volo) mi sa che stò aggiungendo troppa 'ciccia a cuocere' in questa pagina

  9. #19
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Niente. Ho provato in vari modi ma non va.

  10. #20
    Io avrei fatto così:

    Codice PHP:
    /**
    $nome_file = "cicciolinaporno.jpg";
    */

    function nome_file_libero($nome_file)
    {
     
    $nome_file substr...
     
    $ext substr(strrpos(...
     
    $nr "";
     while (
    file_exists($nome_file.$nr.$ext))
      
    $nr++;
     return 
    $nome_file.$nr.$ext;

    Mettere un controllo limitato da un for fino a 1000 elementi non è corretto... Come non è corretto usare numeri casuali, che per quanto lo siano, si possono ripetere..
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.