Cambiar los tipos de archivos permitidos

Iniciado por Antoniio, 28 Mayo 2017, 08:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Antoniio

Hola, buenas. Tengo un código para subir archivos a una plataforma con extensión "jpg, rar, txt y zip" y quisiera saber cómo hago para cambiar esas extensiones permitidas por las siguientes: "mp4, mpeg, mwv", el código es el siguiente:
Código (php) [Seleccionar]
  <!-- ### FORM POST ### -->
          <div class="box box-info">
            <!-- form start -->
            <form id="poster" class="form-horizontal">
              <div class="box-body">
                 <textarea id="thetextpost" name="posttext" class="form-control" rows="3"></textarea>
              </div>
              <!-- /.box-body -->
            </form>

              <div class="box-footer">
                <button class="btn btn-danger btn-sm pull-left" data-toggle="modal" data-target="#ModalDocumment"> <i class="fa fa-file-archive-o" aria-hidden="true"></i> Archivo</button>
                <button class="posterbtn btn btn-info btn-sm pull-right"><i class="fa fa-pencil"></i> Publicar</button>
              </div>
              <!-- /.box-footer -->
          </div>         
          <!-- ### FORM POST ### -->



          <!-- ### COMMENT ### -->
          <div id="timeliner">

          <?php takemylast6post(); ?>         

          </div>
          <!-- ### COMMENT ### -->
          <div id="loaderlinetime" class="col-sm-12 text-center">
            <div class="loader-inner ball-pulse-sync"><div></div><div></div><div></div></div>
          </div>



       </div>
       <div id="sidebar" class="col-sm-3">
           <?php include 'includes/adsense.html'?>
       </div>
     </div>
     <!-- container -->


     <!-- Modal -->
     <div class="modal fade" id="ModalDocumment" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
       <div class="modal-dialog" role="document">
         <div class="modal-content">
           <div class="modal-header">
             <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
             <h4 class="modal-title" id="myModalLabel"><i class="fa fa-upload" aria-hidden="true"></i> Subir Archivo</h4>
           </div>
           <div class="modal-body">
             
             
              <div id="thefilattch" class="col-sm-12">
                <form id="attachmentfrm">
                  <label>Descripción:</label>
                  <textarea class="form-control" name="descripcion" rows="3"></textarea>
                  <label>Archivo:</label>
                  <input type="file" name="archivo" class="form-control">
                </form>

                <p></p>
                <p>Solo se aceptan archivos con la extension: <?php validextlist(); ?></p>
               
              </div>
              <!-- progress -->
              <div id="loadeingarchive" class="progress active">
                <div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
                </div>
              </div>
              <!-- progress -->
              <button type="button" class="uploadarchive btn btn-primary pull-right">Subir Archivo</button>

           </div>
         </div>
       </div>
     </div>



Código (php) [Seleccionar]
// Sacamos las extensiones permitidas para los archivos que se suben
function gettheextattachment(){

    // conexion de base de datos
    $conexion = Conexion::singleton_conexion();

    $SQL = 'SELECT archiveextensions FROM '.SSPREFIX.'socialconfig WHERE id = 1';
    $stn = $conexion -> prepare($SQL);
    $stn -> execute();
    $rstl = $stn -> fetchAll();
    if (empty($rstl)){
    }else{
      foreach ($rstl as $key){
        $fileext = $key['archiveextensions'];
        return $fileext;
      }
    }
}


function validextlist(){

    // conexion de base de datos
    $conexion = Conexion::singleton_conexion();

    $SQL = 'SELECT archiveextensions FROM '.SSPREFIX.'socialconfig WHERE id = 1';
    $stn = $conexion -> prepare($SQL);
    $stn -> execute();
    $rstl = $stn -> fetchAll();
    if (empty($rstl)){
    }else{
      foreach ($rstl as $key){
         echo '<b>'.str_replace('|', ' / ', $key['archiveextensions']).'</b>';
      }
    }

}


function formatSizeUnits($bytes){
        if ($bytes >= 1073741824)
        {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        }
        elseif ($bytes >= 1048576)
        {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        }
        elseif ($bytes >= 1024)
        {
            $bytes = number_format($bytes / 1024, 2) . ' kB';
        }
        elseif ($bytes > 1)
        {
            $bytes = $bytes . ' bytes';
        }
        elseif ($bytes == 1)
        {
            $bytes = $bytes . ' byte';
        }
        else
        {
            $bytes = '0 bytes';
        }

        return $bytes;
}


// Para subir un archivo
function attachmentfiles($file,$description){

    // conexion de base de datos
    $conexion = Conexion::singleton_conexion();

    // Primero el Año
    $theyear = date('Y');

    // Ahora el Mes
    $themonth = date ('m');

    // Ahora usamos la sesion del usuario para su respectiva carpeta
    $theuser = $_SESSION['ssid'];

    // Creamos un alfanumerico aleatorio.
    $characters = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string = '';
    for ($i = 0; $i < 60; $i++) {
     $string .= $characters[rand(0, strlen($characters) - 1)];
    }

    // Tomamos la fecha y hora con segundos
    $fechaseconds = date('Y-m-d h:i:s');
    $fechanormal =  date('Y-m-d');

    // Nuevo nombre del Archivo
    $thenewname = sha1($fechaseconds.$theuser.$string);

    // Obtenemos la extension
    $fileext = new SplFileInfo($file);
    $getextension = $fileext->getExtension();

    // convertimos extension a minusculas
    $extension = strtolower($getextension);

    //comprobamos si el archivo ha subido y lo movemos a una su respectiva ruta
    if ($file && move_uploaded_file($_FILES['archivo']['tmp_name'],"../attachments/".$theuser."/".$theyear."/".$themonth."/".$thenewname.".".$extension)){
    } 

    // Creamos ruta del temporal
    $temporal = "../attachments/".$theuser."/".$theyear."/".$themonth."/".$thenewname.".".$extension;


    // Creamos el permalink de la publicacion
    $permalink = sha1($string.$fechaseconds);


    // Limitamos las publicaciones a tan solo 1000 caracteres
    $postparse = substr($description, 0,1000);

    // Filtramos para evitar XSS Injection
    $filtro = new InputFilter();
    $finalpost = $filtro->process($postparse);

    // Tamaño del archivo
    $filesize = $_FILES['archivo']['size'];

    // Nombre del Archivo
    $filename = $_FILES['archivo']['name'];

    // Revisamos si el resultado es vacio para no tener que postearlo
    if (empty($finalpost)){
       exit();
    }

    if (is_null($finalpost)){
       exit();
    }

    // Hacemos el registro del Archivo
    $FileAttch = 'INSERT INTO '.SSPREFIX.'attachment (ruta, nombre, usuario, fecha, ext, peso, permalink) VALUES (:ruta, :nombre, :usuario, :fecha, :ext, :peso, :permalink)';
    $stnfile = $conexion -> prepare($FileAttch);
    $stnfile -> bindParam(':ruta', $temporal ,PDO::PARAM_STR);
    $stnfile -> bindParam(':usuario', $_SESSION['ssid'] ,PDO::PARAM_STR);
    $stnfile -> bindParam(':nombre', $filename ,PDO::PARAM_INT);
    $stnfile -> bindParam(':fecha', $fechaseconds ,PDO::PARAM_STR);
    $stnfile -> bindParam(':ext', $extension ,PDO::PARAM_STR);
    $stnfile -> bindParam(':peso', $filesize ,PDO::PARAM_STR);
    $stnfile -> bindParam(':permalink', $thenewname ,PDO::PARAM_STR);
    $stnfile -> execute();
    $lastidfile = $conexion -> lastInsertId();

    // Post con archivo
    $thepostpostarchive = $lastidfile.'|'.$finalpost;

    // Como es un post de archivo es 4
    $tipo = 4;

    $SQL = 'INSERT INTO '.SSPREFIX.'posts (post, usuario, permalink, fecha, tipo) VALUES (:post, :usuario, :permalink, :fecha, :tipo)';
    $stn = $conexion -> prepare($SQL);
    $stn -> bindParam(':post', $thepostpostarchive ,PDO::PARAM_STR);
    $stn -> bindParam(':usuario', $_SESSION['ssid'] ,PDO::PARAM_INT);
    $stn -> bindParam(':permalink', $permalink ,PDO::PARAM_STR);
    $stn -> bindParam(':fecha', $fechaseconds ,PDO::PARAM_STR);
    $stn -> bindParam(':tipo', $tipo ,PDO::PARAM_INT);
    $stn -> execute();
    $lastid = $conexion -> lastInsertId();

    // imagen de perfil
    $profileimg = userprofile($_SESSION['ssid']);
   
    // Fecha
    $fechastronger = fechastring($fechanormal,$permalink);

    echo'
        <div id="post-public'.$lastid.'" class="box box-widget">
            <div class="box-header with-border">
              <div class="user-block">
                <img class="img-circle" src="'.$profileimg.'" alt="'.gettheusernamepost().'">
                <span class="username"><a href="profile.php?leanserwebmaster">'.gettheusernamepost().'</a></span>
                '.$fechastronger.'
              </div>
              <!-- /.user-block -->
              <div class="box-tools">
                <button data-post="'.$lastid.'" class="eliminarthispost btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
              </div>
              <!-- /.box-tools -->
            </div>
            <!-- /.box-header -->
            <div class="box-body">
              <!-- post text -->';

                $postexplode = explode('|', $thepostpostarchive);
                getattachblock($postexplode[0],$postexplode[1]);

         echo'<!-- Social sharing buttons -->
              <button id="liker'.$lastid.'" type="button" data-target="'.$lastid.'" onclick="thelikeloadtimeclick('.$lastid.');" class="btn btn-default btn-xs"><i class="fa fa-thumbs-o-up"></i> Me gusta</button>
              <span id="likecomment'.$lastid.'" class="pull-right text-muted">
                 
              </span>
            </div>

            <!-- /.box-footer -->
            <div class="box-footer">
              <form class="commentfrm" data-form="'.$lastid.'" id="commentfrm'.$lastid.'">
                <img  id="mypiccomment" class="img-responsive img-circle img-sm" src="'.$profileimg.'">
                <!-- .img-push is used to add margin to elements next to floating images -->
                <div class="img-push">
                  <input type="text" class="form-control input-sm" name="comentario" placeholder="Comentar...">
                </div>
              </form>
            </div>
            <!-- /.box-footer -->

            <!-- /.box-body -->
            <div id="box-commets-body-'.$lastid.'" class="box-footer box-comments">

            </div>

          </div>
    ';


    $conexion = '';



}



function downloadarchive($permalink){

     // conexion de base de datos
     $conexion = Conexion::singleton_conexion();

     $SQL = 'SELECT * FROM '.SSPREFIX.'attachment WHERE permalink = :permalink LIMIT 1';
     $stn = $conexion -> prepare($SQL);
     $stn -> bindParam(':permalink', $permalink ,PDO::PARAM_STR);
     $stn -> execute();
     $rstl = $stn -> fetchAll();
     if (empty($rstl)){
       header('Location: 404.php');
     }else{
       foreach ($rstl as $key){
          $ruta = str_replace('../', '', $key['ruta']);
          $nombre = $key['nombre'];
       }
     }

     header("Content-type: application/octet-stream");
     header("Content-Type: application/force-download");
     header("Content-Disposition: attachment; filename=\"$nombre\"\n"); readfile($ruta);


}





// Tomamos los ultimos 6 post
function takepostperpermalink($permalink){

    // conexion de base de datos
    $conexion = Conexion::singleton_conexion();


    $SQL = 'SELECT '.SSPREFIX.'usuarios.id AS userid, '.SSPREFIX.'posts.tipo AS posttipo, '.SSPREFIX.'posts.id AS postingid, '.SSPREFIX.'posts.post, '.SSPREFIX.'posts.permalink, '.SSPREFIX.'posts.fecha, '.SSPREFIX.'usuarios.nombre, '.SSPREFIX.'usuarios.apellido, '.SSPREFIX.'usuarios.permalink AS userperma FROM '.SSPREFIX.'posts INNER JOIN '.SSPREFIX.'usuarios ON '.SSPREFIX.'usuarios.id = '.SSPREFIX.'posts.usuario WHERE '.SSPREFIX.'posts.permalink = :permalink ORDER BY '.SSPREFIX.'posts.fecha DESC LIMIT 1';
    $stn = $conexion -> prepare($SQL);
    $stn -> bindParam(':permalink' , $permalink, PDO::PARAM_INT);
    $stn -> execute();
    $rstl = $stn -> fetchAll();
    if (empty($rstl)){
      # code...
    }else{
      foreach ($rstl as $key){

       
        // imagen de perfil
        $profileimg = userprofile($key['userid']);

        // Fecha
        $fecha = fechastring($key['fecha'],$key['permalink']);

        // Imagen de perfil en el post
        $perfilactual = userprofile($_SESSION['ssid']);


        echo'

        <div id="post-public'.$key['postingid'].'" class="box box-widget">
            <div class="box-header with-border">
              <div class="user-block">
                <img class="img-circle" src="'.$profileimg.'" alt="'.$key['nombre'].' '.$key['apellido'].'">
                <span class="username"><a href="profile.php?'.$key['userperma'].'">'.$key['nombre'].' '.$key['apellido'].'</a></span>
                '.$fecha.'
              </div>
              <!-- /.user-block -->
            </div>
            <!-- /.box-header -->
            <div class="box-body">
              <!-- post text -->';

              if ($key['posttipo'] == 1){
                profileimageposttake($key['post']);
              }elseif ($key['posttipo'] == 3) {
                portadaimageposttake($key['post']);
              }elseif ($key['posttipo'] == 4) {

                $postexplode = explode('|', $key['post']);
                getattachblock($postexplode[0],$postexplode[1]);

              }else{
                echo'<p>'.emoticons($key['post']).'</p>';
              }

              echo'<!-- Social sharing buttons -->
              ';

              checklike($key['postingid']);

              echo'

              <span id="likecomment'.$key['postingid'].'" class="pull-right text-muted">
                 ';

                      checklikeandcomments($key['postingid']);

                 echo'
              </span>
            </div>

            <!-- /.box-footer -->
            <div class="box-footer">
              <form class="commentfrm" data-form="'.$key['postingid'].'" id="commentfrm'.$key['postingid'].'">
                <img  id="mypiccomment" class="img-responsive img-circle img-sm" src="'.$perfilactual.'">
                <!-- .img-push is used to add margin to elements next to floating images -->
                <div class="img-push">
                  <input type="text" class="form-control input-sm" name="comentario" placeholder="Comentar...">
                </div>
              </form>
            </div>
            <!-- /.box-footer -->

            <!-- /.box-body -->
            <div id="box-commets-body-'.$key['postingid'].'" class="box-footer box-comments">';

               commentsajx($key['postingid'],$key['permalink']);

             echo'</div>
          </div>

        ';

      }
    }


    $conexion = '';

}


Gracias de antemano, saludos !!

Alej

CitarHola, buenas. Tengo un código para subir archivos a una plataforma con extensión "jpg, rar, txt y zip" y quisiera saber cómo hago para cambiar esas extensiones permitidas por las siguientes: "mp4, mpeg, mwv", el código es el siguiente

En la funcion:

validextlist()

Indica que dichas extensiones permitidas se ubican en "SELECT archiveextensions FROM '.SSPREFIX"

En "archiveextensions" edita las extensiones que quieres,y listo.

Antoniio

#2
Ya lo encontré:
Código (php) [Seleccionar]


    // Incluimos las funciones del sistema
    require_once '../administrator/ss-functions.php';


    // Revisamos si existe la sesion o si es valida
    isuserajax();

    // Si el posttext es vacio
    if (empty($_POST['descripcion'])){exit();}


    // Si es un espacio
    if (ctype_space($_POST['descripcion'])){exit();}

    // Primero el Año
    $theyear = date('Y');

    // Ahora el Mes
    $themonth = date ('m');

    // creamos directorio para el usuario el año
    if(!is_dir("../attachments/".$_SESSION['ssid']))
        mkdir("../attachments/".$_SESSION['ssid'], 0777);

    // creamos directorio para el usuario
    if(!is_dir("../attachments/".$_SESSION['ssid']."/".$theyear))
        mkdir("../attachments/".$_SESSION['ssid']."/".$theyear, 0777);   


    // creamos directorio para el usuario el mes
    if(!is_dir("../attachments/".$_SESSION['ssid']."/".$theyear."/".$themonth))
        mkdir("../attachments/".$_SESSION['ssid']."/".$theyear."/".$themonth, 0777);


    //obtenemos el archivo a subir
    $file = $_FILES['archivo']['name'];

    // Obtenemos la extension
    $fileext = new SplFileInfo($file);
    $getextension = $fileext->getExtension();

    // convertimos extension a minusculas
    $extension = strtolower($getextension);

    // Aqui sacamos la lista de extensiones
    $extensionlst = gettheextattachment();

    // Aqui hacemos un explode para cada uno
    $extexplode = explode("|", $extensionlst);

    // Contamos el total de extensiones
    $exttotal = count($extexplode);

   
    for ($i=0; $i < $exttotal; $i++) {
       
       if($extension === $extexplode[$i]){
           attachmentfiles($file,$_POST['descripcion']);
           exit();
       }

    }


Pero no entiendo cómo modificar las extensiones de ahí...

Saludos.


Antoniio

#4
Ya lo resolví, saludos !!