!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_led/php/nucleo/componentes/interface/efs/   drwxrwxr-x
Free 13.77 GB of 61.93 GB (22.23%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     toba_ef_upload.php (5.46 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * Ef que selecciona un archivo de su sistema para que esté disponible en el servidor
 * Equivale a un <INPUT type='file'> y su estado equivale a una entrada del $_FILES de php
 * Ver el {http://www.php.net/manual/es/features.file-upload.php manejo de uploads} por parte de php,
 * para entender las restricciones y el manejo en general del upload de archivos
 * @package Componentes
 * @subpackage Efs
 * @jsdoc ef_upload ef_upload
 */
class toba_ef_upload extends toba_ef
{
    protected 
$archivo_cargado false;        //Se cargo un archivo en la etapa anterior?
    
protected $archivo_subido false;        //Se subio un archivo en esta etapa
    
protected $extensiones_validas null;
    protected 
$clase_css 'ef-upload';
    
    static function 
get_lista_parametros()
    {
        
$parametros[] = 'upload_extensiones';
        return 
$parametros;
    }    
    
    function 
__construct($padre,$nombre_formulario,$id,$etiqueta,$descripcion,$dato,$obligatorio$parametros)
    { 
        
// Controlar las extensiones válidas...
        
if (isset($parametros['upload_extensiones']) && trim($parametros['upload_extensiones']) != '') {
            
$this->extensiones_validas = array();
            foreach (
explode(','$parametros['upload_extensiones']) as $valor)
                
$this->extensiones_validas[] = strtolower(trim($valor));
        }        
        
parent::__construct($padre,$nombre_formulario$id,$etiqueta,$descripcion,$dato,$obligatorio$parametros);
    }    
    
    function 
get_input()
    {
        
$tab $this->padre->get_tab_index();
        
$extra " tabindex='$tab'";        
        
$estado $this->get_estado_input();
        
//--- Se puede cargar con el nombre del archivo o el arreglo que php brinda
        //--- al hacer el upload
        
if (is_array($estado)) {
            
$nombre_archivo = isset($estado['name']) ? $estado['name'] : current($estado);
        } else {
            
$nombre_archivo $estado;
        }
        
//-- Si hay un archivo lo deja marcado en sesion para la etapa siguiente
        
if (isset($nombre_archivo) && trim($nombre_archivo) != '') {
            if (! 
$this->permitir_html) {
                
$nombre_archivo texto_plano($nombre_archivo);
            }
            
toba::memoria()->set_dato_sincronizado($this->id_form."_cargado"true);
        }
        
$salida "";
        if (! 
$this->es_solo_lectura()) {
            if (isset(
$nombre_archivo) && $nombre_archivo != '') {
                
$salida .= toba_form::archivo($this->id_formnull$this->clase_css"style='display:none'");
                
$salida .= "<div id='{$this->id_form}_desicion' class='ef-upload-desc'>"$nombre_archivo "</div>";
                
$salida .= toba_form::checkbox("{$this->id_form}_check"null1'ef-checkbox'"$extra onclick=\"{$this->objeto_js()}.set_editable()\"");
                
$salida .= "<label for='{$this->id_form}_check'>Cambiar el Archivo</label>";
            } else {
                
$salida toba_form::archivo($this->id_formnull$this->clase_css$extra);
                
$salida .= toba_form::checkbox("{$this->id_form}_check"11'ef-checkbox'"style='display:none'");
            }
        } else { 
// En modo sólo lectura
            
if (isset($nombre_archivo) && $nombre_archivo != '') {
                
$salida "<div class='ef-upload-desc'>"$nombre_archivo ."</div>";
            } else {
                
$salida toba_form::archivo($this->id_formnull$this->clase_css"disabled='disabled'");
            }
        }
        
$salida .= $this->get_html_iconos_utilerias();
        return 
$salida;
    }
    
    function 
get_estado_input()
    {
        if (isset(
$this->estado)) {
            return 
$this->estado;
        }else{
            return 
null;
        }
    }
    
    function 
cargar_estado_post()
    {
        
$this->archivo_cargado toba::memoria()->get_dato_sincronizado($this->id_form."_cargado");
        
$this->archivo_subido false;
        if (isset(
$_FILES[$this->id_form])) {
            if (isset(
$_POST[$this->id_form."_check"])) {
                
$this->archivo_subido true;
                
$this->estado $_FILES[$this->id_form]; 
            }
        }
    }

    function 
es_archivo_vacio()
    {
        return 
$_FILES[$this->id_form]["error"] == UPLOAD_ERR_NO_FILE;
    }
    
    function 
tiene_estado()
    {
        return 
$this->archivo_cargado || 
                (
$this->archivo_subido && !$this->es_archivo_vacio());
    }
    
    
/**
     * Valida que cumpla con la lista de extensiones válidas definidas.
     * También chequea los {@link http://www.php.net/manual/en/features.file-upload.errors.php mensajes de error de upload} de php
     * @return unknown
     */
    
function validar_estado()
    {
        
$padre parent::validar_estado();
        if (
$padre !== true) {
            return 
$padre;    
        }
        if (
$this->archivo_subido) {
            
$id $this->estado['error'];
            switch(
$id){
                case 
UPLOAD_ERR_OK:
                    break;
                case 
UPLOAD_ERR_INI_SIZE:
                    return 
"Se supero el tamaño máximo del archivo.";
                case 
UPLOAD_ERR_FORM_SIZE:
                    return 
"Se supero el limite expresado en el FORM";
                case 
UPLOAD_ERR_NO_FILE:
                    
//Este caso lo maneja el obligatorio
                    
$this->archivo_subido false;
                    break;
                case 
UPLOAD_ERR_CANT_WRITE:
                    return 
"No tiene permisos sobre la carpeta de upload";
                default:
                    return 
"Ha ocurrido un error cargando el archivo ($id)";
            }
                        
            if (!
$this->solo_lectura_modificacion && isset($this->extensiones_validas) && $this->archivo_subido && !$this->es_archivo_vacio()) {
                
$rep $_FILES[$this->id_form]['name'];
                
$ext substr($repstrrpos($rep'.') + 1);
                if (! 
in_array(strtolower($ext), $this->extensiones_validas)) {
                    
$extensiones implode(', '$this->extensiones_validas);
                    
$this->archivo_subido false;
                    
$this->estado null;
                    return 
"No esta permitido subir este tipo de archivo. Solo se permiten extensiones $extensiones";
                }
            }
        }
        return 
true;
    }
    
    function 
get_consumo_javascript()
    {
        
$consumos = array('efs/ef','efs/ef_upload');
        return 
$consumos;
    }
    
    function 
crear_objeto_js()
    {
        return 
"new ef_upload({$this->parametros_js()})";
    }
    
}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.479 ]--