Aiuto con PHP [Controllo estensioni caricate]

« Older   Newer »
 
  Share  
.
  1. <D@niel>
        Like  
     
    .

    User deleted


    Ciao ragazzi ho bisogno di voi, io ho uno script in PHP e devo far si che controlli le estensioni caricate, poi se sono quelle permesse carica altrimenti no, avevo pensato ad un if, ma non so come fare...

    Lo script è questo:

    CODICE
    <?php
    $file_name = $_FILES['upfile']['name'];
    $file_temp = $_FILES['upfile']['tmp_name'];
    $file_type = $_FILES['upfile']['type'];
    $file_size = $_FILES['upfile']['size'];

    $upload_dir = "altervista_ht_";

    $righe = file("db.txt");
    $righe[count($righe)-1] = explode("|",$righe[count($righe)-1]);
    $fgt = $righe[count($righe)-2][0]+1;
    unset($righe);

    if ( !is_uploaded_file($_FILES["upfile"]["tmp_name"]) )

    {
       echo "File non inserito (".$_FILES["upfile"]["error"].")";
    }
    else
    {
     $ext = explode (".", $file_name);

    $num=1;
    while (file_exists($upload_dir."/".$file_name)) {
       $nome_file=explode(".",$file_name);
       if (count($nome_file)>1) {
           $file_name="";
           for($i=0;$i<count($nome_file)-1;$i++) {
               $file_name.=$nome_file[$i];
               if ($i<count($nome_file)-2)
                   $file_name.=".";
           }
           $file_name.=$num.".".$file_name[count($nome_file)-1];
       }
       else
           $file_name=$nome_file[0].$num;
       $num++;
    }  
     
     $st="$fgt|$file_name|n";

    $op_db = fopen("db.txt","a");
    $fpx = fputs($op_db,$st);
    fclose($op_db);

     echo "File inserito con successo!<br /><br /> <b>Link diretto:</b> <input type='text' value='http://uploadyourfile.altervista.org/altervista_ht_/$file_name' size='60'/><br /> ";
     copy ($file_temp,"$upload_dir/$file_name");
    }
    ?>
     
    .
  2. the be$t
        Like  
     
    .

    User deleted


    Io penso che si possa fare con uno switch, in ogni case dello switch metti le estensioni constentite poi in default metti il messaggio di errore:
    Prova così, non so se a te va bene (magari ho capito male quello che vuoi fare) ma è la prima cosa che mi è venuta in mente =P
    SPOILER (click to view)
    CODICE
    <?php
    $file_name = $_FILES['upfile']['name'];
    $file_temp = $_FILES['upfile']['tmp_name'];
    $file_type = $_FILES['upfile']['type'];
    $file_size = $_FILES['upfile']['size'];

    $upload_dir = "altervista_ht_";

    $righe = file("db.txt");
    $righe[count($righe)-1] = explode("|",$righe[count($righe)-1]);
    $fgt = $righe[count($righe)-2][0]+1;
    unset($righe);

    if ( !is_uploaded_file($_FILES["upfile"]["tmp_name"]) )

    {
      echo "File non inserito (".$_FILES["upfile"]["error"].")";
    }
    else
    {
    $ext = explode (".", $file_name);

    switch($ext[1]){
    case 'jpeg':
    case 'jpg':
    case 'png':
    case 'gif':

    $num=1;
    while (file_exists($upload_dir."/".$file_name)) {
      $nome_file=explode(".",$file_name);
      if (count($nome_file)>1) {
          $file_name="";
          for($i=0;$i<count($nome_file)-1;$i++) {
              $file_name.=$nome_file[$i];
              if ($i<count($nome_file)-2)
                  $file_name.=".";
          }
          $file_name.=$num.".".$file_name[count($nome_file)-1];
      }
      else
          $file_name=$nome_file[0].$num;
      $num++;
    }  

    $st="$fgt|$file_name|n";

    $op_db = fopen("db.txt","a");
    $fpx = fputs($op_db,$st);
    fclose($op_db);

    echo "File inserito con successo!<br /><br /> <b>Link diretto:</b> <input type='text' value='http://uploadyourfile.altervista.org/altervista_ht_/$file_name' size='60'/><br /> ";
    copy ($file_temp,"$upload_dir/$file_name");
    break;
    default:
    echo 'Errore: <b>.'. $ext[1] .'</b> è un estensione non consentita.';
    }
    }
    ?>
     
    .
  3. <D@niel>
        Like  
     
    .

    User deleted


    Perfetto, inserirò un credit nel sito che linka a gamestribe
     
    .
  4. <D@niel>
        Like  
     
    .

    User deleted


    Ora c'è un'altro problema, ovvero questa funzione server per rinominare il file se ne esiste già uno con quel nome, però quando rinomina mi genera un dat, ad esempio se ho 4.gif la rinomina in 41.1

    CODICE
    $num=1;
    while (file_exists($upload_dir."/".$file_name)) {
      $nome_file=explode(".",$file_name);
      if (count($nome_file)>1) {
          $file_name="";
          for($i=0;$i<count($nome_file)-1;$i++) {
              $file_name.=$nome_file[$i];
              if ($i<count($nome_file)-2)
                  $file_name.=".";
          }
          $file_name.=$num.".".$file_name[count($nome_file)-1];
      }
      else
          $file_name=$nome_file[0].$num;
      $num++;
    }
     
    .
  5. the be$t
        Like  
     
    .

    User deleted


    CITAZIONE (<D@niel> @ 21/5/2008, 14:10)
    Ora c'è un'altro problema, ovvero questa funzione server per rinominare il file se ne esiste già uno con quel nome, però quando rinomina mi genera un dat, ad esempio se ho 4.gif la rinomina in 41.1

    CODICE
    $num=1;
    while (file_exists($upload_dir."/".$file_name)) {
      $nome_file=explode(".",$file_name);
      if (count($nome_file)>1) {
          $file_name="";
          for($i=0;$i<count($nome_file)-1;$i++) {
              $file_name.=$nome_file[$i];
              if ($i<count($nome_file)-2)
                  $file_name.=".";
          }
          $file_name.=$num.".".$file_name[count($nome_file)-1];
      }
      else
          $file_name=$nome_file[0].$num;
      $num++;
    }

    Ti serve per forza un file con questo tipo di nome "asd1.gif", "asd2.gif" o ti va bene anche in un altro modo ?

    Secondo me, potresti fare anche in questo modo, togliendo il while, for e le altre cose :sisi:
    CODICE
    if(file_exists($upload_dir.'/'.$file_name)){
    $file_name = $ext[0].'_'.time().'.'.$ext[count($ext)-1];
    }

    In questo modo aggiungi al file il timestamp quindi il file avrà un nome univoco e il nome del file sara tipo questo "asd_1211384253.gif" senza che ti generi il file dat.

    Poi se vuoi usare i numero in modo progressivo, guardo meglio il codice e provo a fare qualcosa :)

    PS: modifica lo switch che controlla le estensioni in questo modo, senza di questo, potrebbero pure mettere "immagine.gif.exe" e lo script lo considerebbe valido:
    HTML
    switch($ext[count($ext)-1]){
    case 'jpeg':
    case 'jpg':
    case 'png':
    case 'gif':
    [...]
     
    .
  6. <D@niel>
        Like  
     
    .

    User deleted


    Sei un grande!!!! E io sono un grande rimbambito, perchè non riesco a trovare l'errore nell'index......

    SPOILER (click to view)
    HTML
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    <meta name="description" content="description"/>
    <meta name="keywords" content="keywords"/>
    <meta name="author" content="author"/>
    <link rel="stylesheet" type="text/css" href="default.css" media="screen"/>
    <link rel="icon" href="http://www.iconarchive.com/icons/flameia/rabbit-xp/zip-brown-16x16.png" type="image/png">
    <title>Upload your File</title>
    </head>

    <body>

    <div class="container">

    <div class="navigation">

    <div class="title">
    <h1>Upload your File</h1>
    <h2>Upload gratuito di file e immagini</h2>
    </div>

    <a href="index.php">Homepage</a>
    <a href="?t=info">Informazioni</a>
    <a href="?t=support">Supportaci</a>
    <a href="?t=contact">Contatti</a>
    <div class="clearer"><span></span></div>

    </div>

    <div class="holder_top"></div>

    <div class="holder">

    <h1>Form Upload File</h1>
    <p>Utilizzando il form sottostante potrai caricare il tuo file e/o la tua immagine. Le estensioni supportate sono: <strong>.rar, .zip, .jpg, .png, .gif, .bmp, .psd</strong></p>

    <p>
    <form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="10240" />
    <strong>Scegli il file da caricare:</strong> &nbsp;<input name="upfile" type="file" />
    <input type="submit" value="Upload File" />
    <br />
    </form>
    </p>

    <p>&nbsp;</p>

    <h1>
    <?php
    $name = "Upload your File";

    switch ($t) {
    default:
    echo "$name - Homepage";
    break;
    case info:
    echo "$name - Informazioni";
    break;
    case support:
    echo "$name - Supportaci";
    break;
    case contact:
    echo "$name - Contatti;
    break;

    }
    ?>
    </h1>
    <p>
    <?php
    $name = 'Upload your File';
    switch ($t) {
    default:
    echo "Benvenuti su $name!!!!! <br />Caricate gratuitamente i vostri file e/o le vostre immagini. Al termine dell'upload riceverete un link diretto al vostro file. <br /><span>Se volete aiutare il forum cliccate nei banner che trovate, potrete permetterci di comprare un dominio e di non avere pi&ugrave; problemi di spazio!";
    break;
    case info:
    echo "$name &egrave; un sito creato con PHP. <br/><br /><strong>News: 21/05/08</strong><br />Il sito &egrave; stato aggiornato e la versione dello script &egrave; la <storng>1.1</strong>";
    break;
    case support:
    echo "Se vuoi supportarci copia e incolla nel tuo sito il codice del nostro banner. <br /><br /><a href='http://uploadyourfile.altervista.org'><img src='http://uploadyourfile.altervista.org/altervista_ht_/logoup.gif' alt='Upload your File' border='0'><br /><br /><textarea rows='2' cols='50'><a href='http://uploadyourfile.altervista.org'><img src='http://uploadyourfile.altervista.org/altervista_ht_/logoup.gif' alt='Upload your File'></textarea>";
    break;
    case contact:
    break;
    }
    ?>
    </p>

    <p><a href="http://gamestribe.forumcommunity.net/"><img src="http://i22.tinypic.com/f03zg6.jpg" alt="Gamestribe" title="Gamestribe" border="0"></a></p>

    <p><script type="text/javascript">
    //<![CDATA[
    document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=468X60/r='+new Date().getTime()+'">
    </s'+'cript>');
    //]]>
    </script>
    </p>
    </div>

    <div class="footer">

    <span class="left">&copy; 2008 <a href="index.php">Upload your File</a>. Valid <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a></span>

    <span class="right"><a href="http://templates.arcsin.se">Website template</a> by <a href="http://arcsin.se">Arcsin</a></span>

    <div class="clearer"><span></span></div>

    </div>

    </div>
    </body>
    </html>
     
    .
  7. the be$t
        Like  
     
    .

    User deleted


    Hai dimenticato di chiudere l'ultima stringa contenuta in switch($t):
    CODICE
    switch ($t) {
    default:
    echo "$name - Homepage";
    break;
    case info:
    echo "$name - Informazioni";
    break;
    case support:
    echo "$name - Supportaci";
    break;
    case contact:
    echo "$name - Contatti";
    break;

    }
     
    .
  8. <D@niel>
        Like  
     
    .

    User deleted


    Grazie!!!!
     
    .
7 replies since 20/5/2008, 18:28   478 views
  Share  
.