public function ImprimirEntradas()
 {
     echo "<table id='devildrey33_Entradas'>" . Intro() . "<thead>" . Intro() . "<tr>" . Intro() . "<td>Fecha</td>" . Intro() . "<td>Titulo</td>" . Intro() . "<td>URL</td>" . Intro() . "<td>Tags</td>" . Intro() . "<td>Imagen</td>" . Intro() . "<td>Tipo</td>" . Intro() . "</tr>" . Intro() . "</thead>" . Intro();
     foreach ($this->Datos as $Entrada) {
         echo "<tr>" . Intro() . "<td>" . $Entrada["Fecha"] . "</td>" . Intro() . "<td title='" . $Entrada["Titulo"] . "'>" . $Entrada["Titulo"] . "</td>" . Intro() . "<td title='" . $Entrada["URL"] . "'>" . $Entrada["URL"] . "</td>" . Intro() . ($Tags = "");
         foreach ($Entrada["Tags"] as $Tag) {
             $Tags .= $Tag . ", ";
         }
         $Tags = substr($Tags, 0, strlen($Tags) - 2);
         echo "<td title='" . $Tags . "'>" . $Tags . "</td>" . Intro() . "<td title='" . $Entrada["Imagen"] . "'>" . $Entrada["Imagen"] . "</td>" . Intro() . "<td>" . $Entrada["Tipo"] . "</td>" . Intro() . "</tr>" . Intro();
     }
     echo "</table>" . Intro();
 }
示例#2
0
function TablaDescargas($BD)
{
    $Resultado = $BD->_mysqli->query("SELECT * FROM descargas ORDER BY TotalDescargas DESC");
    $Total = 0;
    $Ret = "<br />" . Intro() . "<h2>Descargas</h2>" . Intro();
    if ($Resultado) {
        $Total = $Resultado->num_rows;
    }
    if ($Total > 0) {
        $Ret .= "<table class='Tabla'>" . Intro() . "<thead>" . Intro() . "<tr>" . Intro() . "<th>NumDescarga</th>" . Intro() . "<th>Url</th>" . Intro() . "<th>TotalDescargas</th>" . Intro() . "</tr>" . Intro() . "</thead>" . Intro();
        for ($i = 0; $i < $Total; $i++) {
            $Datos = $Resultado->fetch_array(MYSQLI_ASSOC);
            $Ret .= "<tr>" . Intro() . "<td>" . $Datos["NumDescarga"] . "</td>" . Intro() . "<td>" . $Datos["Url"] . "</td>" . Intro() . "<td>" . $Datos["TotalDescargas"] . "</td>" . Intro() . "</tr>" . Intro();
        }
        $Ret .= "</table>" . Intro();
    }
    return $Ret;
}
 static function ParsearLogPHP($Log)
 {
     $LogStr = "";
     $Lineas = explode("\n", $Log);
     foreach ($Lineas as $Linea) {
         $NumLinea = strpos($Linea, " on line ");
         if ($NumLinea !== false) {
             $Linea = str_replace(" on line ", " on line <b style='color:blue'>", $Linea);
             $LogStr .= "<div>" . substr($Linea, strpos($Linea, "]") + 2) . "</b></div>" . Intro();
         } else {
             $LogStr .= "<div>" . substr($Linea, strpos($Linea, "]") + 2) . "</div>" . Intro();
         }
     }
     return $LogStr;
 }
<?php

include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Working with google APIs">' . Intro() . '<meta name="keywords" content="google api, google apis">';
$Base->InicioPlantilla(basename(__FILE__), "Working with google APIs", $META);
$Base->InicioBlog(basename(__FILE__), "Working with google APIs", TRUE);
/* TRUE = imatge a la dreta */
$File_Source_1 = '../Codigo/GoogleAPI/simple_gAPI_example_empty.html';
$File_Source_2 = '../Codigo/GoogleAPI/simple_gAPI_example.html';
?>

<script type="text/javascript">
    $Base.CargarCSS('Barba_Posts.css');
</script> 

<!-- <div style="display: inline-block; margin-bottom: 30px;"> -->

    <p>We’ve already seen <a href="how-to-use-google-app-scripts" target="_blank">how to develop a whole web app using the "Web App Scripts"</a>.</p>
    <p>However, many times we would like to keep our web app into another place/server, or just connect an existing web app with the google services, so in this case we must use the google APIs to interact with the google services.</p>

    <p>We're going to split this explanation in 2 parts:</p>
    <ul>
        <li><b>Grant access to the APIs</b></li>
        <li><b>Access the API</b> (authorization and methods to access)</li>
    </ul>

    <p>The first part is common, and you would need to set it whatever type of client access you'd like to use. The second, though, can be implemented in many languages, as well as in the client or the server side. Here we're going to focus on how to implement it with javascript. Let’s see how to do it.</p>
<!-- </div> -->

<h2>Grant access to the APIs</h2>
示例#5
0
 public function LeerLogAccesos()
 {
     $this->TotalTipos["Ataques"] = 0;
     $this->TotalTipos["Advertencias"] = 0;
     $this->TotalTipos["Errores404"] = 0;
     $this->TotalTipos["Zips"] = 0;
     $this->TotalTipos["Documentos"] = 0;
     $this->TotalTipos["CSS"] = 0;
     $this->TotalTipos["JS"] = 0;
     $this->TotalTipos["Imagenes"] = 0;
     $this->TotalTipos["Otros"] = 0;
     /* Opciones para mostrar/ocultar */
     $ArchivoLog = "../../logs/access.log.current";
     if (file_exists($ArchivoLog)) {
         $Archivo = fopen($ArchivoLog, "r");
         $Datos = fread($Archivo, filesize($ArchivoLog));
         fclose($Archivo);
         /* Ejemplo */
         /*	94.194.34.14 - - [03/Jul/2013:00:00:14 +0200] "GET /Graficos/devildrey33.ico HTTP/1.1" 200 3606 devildrey33.es "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" "-"
                    201.134.42.53 - - [03/Jul/2013:00:00:19 +0200] "GET /Tutorial_HTML5_8.php HTTP/1.1" 200 122235 devildrey33.es "http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http%3A%2F%2Fdevildrey33.es%2FTutorial_HTML5_8.php&ei=bE3TUY3jJOSMyAGwjIGQDA&usg=AFQjCNHe90T-d6n5n_EgTirFKAwwET4dGA&bvm=bv.48705608,d.aWc" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" "-"
                    201.134.42.53 - - [03/Jul/2013:00:00:24 +0200] "GET /js/devildrey33.js HTTP/1.1" 304 - devildrey33.es "http://devildrey33.es/Tutorial_HTML5_8.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" "-"
                    201.134.42.53 - - [03/Jul/2013:00:00:24 +0200] "GET /js/devildrey33_Comentarios.js HTTP/1.1" 304 - devildrey33.es "http://devildrey33.es/Tutorial_HTML5_8.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" "-"
                    201.134.42.53 - - [03/Jul/2013:00:00:24 +0200] "GET /css/devildrey33.css HTTP/1.1" 304 - devildrey33.es "http://devildrey33.es/Tutorial_HTML5_8.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0" "-"
                    188.165.195.156 - - [03/Jul/2013:16:14:35 +0200] "HEAD / HTTP/1.1" 200 - devildrey33.es "-" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
            // Divido los datos en un array de lineas */
         $this->Lineas = explode("\n", $Datos);
         // Extraigo toda la información de cada linea y la almaceno por separado en $ListaAccesos
         $Contador = -1;
         foreach ($this->Lineas as $Linea) {
             if (strlen($Linea) < 10) {
                 break;
             }
             // La IP siempre empieza en el primer caracter, luego al terminar viene el siguiente string = " - - "
             $this->ListaAccesos[++$Contador]["IP"] = substr($Linea, 0, strpos($Linea, " - - "));
             // La fecha empieza por "[" y termina por "]"
             $Inicio = strpos($Linea, "[") + 1;
             $Fin = strpos($Linea, "]");
             $this->ListaAccesos[$Contador]["Fecha"] = substr($Linea, $Inicio, $Fin - $Inicio);
             $this->ListaAccesos[$Contador]["Fecha"] = substr($this->ListaAccesos[$Contador]["Fecha"], strpos($this->ListaAccesos[$Contador]["Fecha"], ":") + 1, 8);
             // La acción, GET o POST
             if (strpos($Linea, '] "POST ') > 0) {
                 $this->ListaAccesos[$Contador]["Accion"] = "POST";
             } elseif (strpos($Linea, '] "GET ') > 0) {
                 $this->ListaAccesos[$Contador]["Accion"] = "GET";
             } elseif (strpos($Linea, '] "HEAD ') > 0) {
                 $this->ListaAccesos[$Contador]["Accion"] = "HEAD";
             }
             // La URL empieza despues de la acción
             if ($this->ListaAccesos[$Contador]["Accion"] == "GET") {
                 $Inicio = strpos($Linea, '"GET ') + 5;
             } elseif ($this->ListaAccesos[$Contador]["Accion"] == "POST") {
                 $Inicio = strpos($Linea, '"POST ') + 5;
             } else {
                 $Inicio = strpos($Linea, '"HEAD ') + 5;
             }
             // HEAD tambien tiene 4 caracteres ya va bien
             $Fin = strpos($Linea, " HTTP/1.");
             $this->ListaAccesos[$Contador]["URL"] = substr($Linea, $Inicio, $Fin - $Inicio);
             // El tipo de URL se determina mirando el string de la URL
             $this->ListaAccesos[$Contador]["URL_Tipo"] = $this->TipoURL($this->ListaAccesos[$Contador]["URL"]);
             // Respuestra del servidor (hay un fallo mio con los subdominios, quedaran agregados a $Respuesta.. Pendiente de estudiar otro sistema.
             $Inicio = strpos($Linea, " HTTP/1.") + 11;
             // La url suele ser devildrey33.es, pero aveces la pasa con www. delante, o con algun subdomino, OJO solo soporta subdominios de 3 caracteres
             $Fin = strpos($Linea, 'devildrey33.es "');
             if (strpos($Linea, '.devildrey33.es "') != FALSE) {
                 $Fin -= 4;
             }
             $this->ListaAccesos[$Contador]["Respuesta"] = substr($Linea, $Inicio, $Fin - $Inicio);
             // Cliente / Navegador
             $this->ListaAccesos[$Contador]["Navegador"] = substr($Linea, strpos($Linea, '" "') + 3, -5);
             $Fin = strpos($this->ListaAccesos[$Contador]["Navegador"], '" "-"');
             if ($Fin !== FALSE) {
                 $this->ListaAccesos[$Contador]["Accion"] = substr($this->ListaAccesos[$Contador]["Accion"], 0, $Fin);
             }
         }
         // Genero la lista ordenada por ips y tiempo
         foreach ($this->ListaAccesos as $Acceso) {
             $this->AgregarIP($Acceso);
         }
         $IDAcceso = -1;
         $ArrayDestacados = array();
         // Creo la lista de las entradas mas destacadas
         foreach ($this->ListaOrdenadaPorIP as $IP) {
             $ContadorEntradas = 0;
             $ArrayDestacados[$IP[0]["IP"]] = array();
             $PrimerObjeto = array();
             foreach ($IP as $Acceso) {
                 if (strpos($Acceso["URL"], "BanearIP.php")) {
                     array_unshift($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                 } else {
                     if (strpos($Acceso["URL"], ".php?")) {
                         array_unshift($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                     } else {
                         if (strpos($Acceso["URL"], "Error404")) {
                             array_push($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                         } else {
                             if (strpos($Acceso["URL"], ".zip")) {
                                 array_push($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                             } else {
                                 if (strpos($Acceso["URL"], "PropiedadCSS/")) {
                                     array_push($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                                 } else {
                                     if (strpos($Acceso["URL"], ".php")) {
                                         array_push($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                                     } else {
                                         if (strpos($Acceso["URL"], ".html")) {
                                             array_push($ArrayDestacados[$IP[0]["IP"]], $Acceso["URL"]);
                                         } else {
                                             $PrimerObjeto = $Acceso["URL"];
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $ContadorEntradas++;
             }
             array_push($ArrayDestacados[$IP[0]["IP"]], $PrimerObjeto);
         }
         echo "<table style='float:right'>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelNavegadores' style='color:darkgreen'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChNavegadores'>" . Intro() . "<span>Navegadores</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelBots' style='color:grey'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChBots'>" . Intro() . "<span>Bots</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelDesconocido' style='color:orange'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChDesconocido'>" . Intro() . "<span>Desconocido</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "</table>" . Intro() . "<table>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelAtaques' style='color:red'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChAtaques'>" . Intro() . "<span>Ataques</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelAdvertencias' style='color:orange'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChAdvertencias'>" . Intro() . "<span>Advertencias</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelErrores404' style='color:purple'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChErrores404'>" . Intro() . "<span>Errores 404</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelZips' style='color:olive'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChZip'>" . Intro() . "<span>Archivos Zip</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelDocumentos' style='color:green'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChDocumentos'>" . Intro() . "<span>Documentos PHP y HTML</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelCSS' style='color:blue'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChCSS'>" . Intro() . "<span>CSS</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>" . Intro() . "<label id='LabelJS' style='color:brown'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChJS'>" . Intro() . "<span>JavaScript</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelImagenes' style='color:grey'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChImagenes'>" . Intro() . "<span>Imagenes</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "<td>" . Intro() . "<label id='LabelOtros'>" . Intro() . "<input type='checkbox' checked='checked' OnChange='\$Admin.Log_Actualizar()' id='ChOtros'>" . Intro() . "<span>Otros</span>" . Intro() . "</label>" . Intro() . "</td>" . Intro() . "</tr>" . Intro() . "</table>" . Intro() . "<hr />";
         echo "<div id='Log_Contenedor'></div>" . "<script type='text/javascript'>" . "BD_Log = [";
         foreach ($this->ListaAccesos as $Acceso) {
             echo json_encode($Acceso) . ",";
         }
         echo "];";
         //				echo "	BD_Log = ".json_encode($this->ListaAccesos).";";
         echo " BD_LogPorIP = [";
         foreach ($this->ListaOrdenadaPorIP as $Acceso) {
             echo json_encode($Acceso) . ",";
         }
         echo "];";
         //				echo "	BD_LogPorIP = ".json_encode($this->ListaOrdenadaPorIP).";";
         echo " BD_LogTotalTipos = " . json_encode($this->TotalTipos) . ";" . Intro() . "Log_IP_Admin = '" . $_SERVER["REMOTE_ADDR"] . "';" . Intro() . "\$Admin.Log_Actualizar();" . Intro() . "</script>" . Intro();
     } else {
         echo "<div class='CP_Titulo'>No se encuentra el archivo de logs del dia de hoy.</div>" . Intro();
     }
 }
<?php

include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Virus fotos 05/06">' . Intro() . '<meta name="keywords" content="Virus fotos 05/06, Virus email fotos 05/05, Email fotos 05/06">' . Intro();
$Base->InicioPlantilla(basename(__FILE__), "Aplicación para eliminar el virus &quot;Fotos 05/06&quot;", $META);
$Base->InicioBlog(basename(__FILE__), "Aplicación para eliminar el virus &quot;Fotos 05/06&quot;");
/*
	include("devildrey33.php");
	
	$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));

	$Base->InicioPlantilla("Aplicación para eliminar el virus &quot;Fotos 05/06&quot;");*/
?>
	


                <!-- INTRODUCCION -->
                <p>En el verano del 2010 aparecio un virus que se propagaba por el correo electronico con el asunto &quot;fotos 05/06&quot; el cual mostraba una fotografia a un tamaño muy reducido y que al clickar encima de ella nos descargaba un archivo que se llama &quot;foto28_.com&quot;. Si lllegabamos a ejecutar este archivo la máquina quedaba infectada por este virus, que entre otras cosas se dedica a enviar a todos nuestros contactos del messenger el mismo correo por tal de expandirse.</p>
                <p>En principio este virus no tiene mucho de extraordinario a comparacion de otros, pero me toco la moral porque varios de mis contactos se infectaron, y me enviaban más copias del virus sin que ellos se dieran cuenta. Entre esos contactos que me enviaban el virus estaban mi padre y mi hermana, con lo que practicamente tenia asegurado el tener que desplazarme para eliminar el virus de sus maquinas.... pero como en el verano del 2010 hacia mucha calor, se me ocurrio que podria hacer una aplicacion que eliminara el virus y asi me ahorraria el desplazamiento y me quedaria tan fresco en casa.</p>
                <!-- FIN_INTRODUCCION -->
                <p>Al final inverti varias horas en la creacion de esta aplicacion, y aparte de ayudar a mis familiares, tambien lo colgue en mi web, y de esta forma mi aplicacion a pesar de costarme unas horas de trabajo hizo un gran servicio a muchos internautas afectados.</p>
                <h3>Observaciones</h3>
                <ul>
                <li>El virus crea una carpeta oculta llamada 'cmos' en la raiz de la unidad donde tenemos instalado el windows</li>
                <li>Si existe conexion a internet, al ejecutarse por primera vez, se descarga varios archivos de algun otro sitio (que no me he molestado a averiguar), en caso de no tener conexion a internet solo crea la carpeta 'cmos' sin ocultarla.</li>
                <li>Una vez descargado el virus se crean cinco archivos :   &quot;?:\cmos\id&quot;, &quot;?:\cmos\xlb.cpl&quot;, &quot;?:\cmos\xln.cpl&quot;, &quot;?:\cmos\xlr.exe&quot;, y &quot;?:\cmos\xlr2.exe&quot; </li>
                <li>De los archivos que se crear, se enlazan cuatro al registro de windows de forma que se arranquen al iniciar el sistema.</li>
                <li>El archivo original del virus es un archivo COM de 64ks que solo tiene codigo para descargar el resto del virus y enlazarlo al sistema.</li>
                <li>Una vez el virus se encuentra activo, tus contactos recibiran correos iguales a la foto que se ve más arriba.</li>
                </ul>
示例#7
0
 public function Head_JS()
 {
     $this->GenerarListaEntradasJS();
     //        $Raiz = "/".str_replace("\\", "/", substr(dirname(__FILE__), strlen($_SERVER["DOCUMENT_ROOT"])));
     if (devildrey33_Opciones::Minificar_JS() == 0) {
         // jQuery sin minificar
         echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>' . Intro();
         echo '<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>' . Intro();
         // Para la barra separadora del lab
     } else {
         echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>' . Intro();
         echo '<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>' . Intro();
         // Para la barra separadora del lab
     }
     //        echo "<script type='text/javascript' src='https://www.google.es/jsapi'></script>".Intro(); // json api?
     /* addons del codemirror */
     echo "<script src='" . Base::URL_JS() . "3rdParty/codemirror.min.js'></script>" . Intro();
     /* Three js */
     if (devildrey33_Opciones::Minificar_JS() == 0) {
         // Three.js sin minificar
         echo "<script src='" . Base::URL_JS() . "3rdParty/three-0.79.js'></script>" . Intro();
     } else {
         echo "<script src='" . Base::URL_JS() . "3rdParty/three-0.79.min.js'></script>" . Intro();
     }
     echo "<script src='" . Base::URL_JS() . "3rdParty/tweenjs-0.6.2.min.js'></script>" . Intro();
     //        echo "<script src='".Base::URL_JS()."3rdParty/stats.min.js'></script>".Intro();
     echo "<script src='" . Base::URL_Cache() . "EntradasBlog.js'></script>" . Intro();
     if (devildrey33_Opciones::Minificar_JS() == 0) {
         if (file_exists(dirname(__FILE__) . '/Config/ArchivosMinify.php')) {
             $ArrayCSS = (require dirname(__FILE__) . '/Config/ArchivosMinify.php');
             foreach ($ArrayCSS["js"] as $Archivo) {
                 echo "<script src='" . Base::URL_Web() . substr($Archivo, 1) . "'></script>" . Intro();
             }
         } else {
             error_log("<span style='color:red'>Error!</span> devildrey33::Head_JS -> el archivo '/Config/ArchivosMinify.php' no existe.");
         }
     } else {
         echo "<script src='" . Base::URL_Cache() . "devildrey33.min.js'></script>" . Intro();
     }
     if (devildrey33_Opciones::Administrador() > 0) {
         echo "<script src='" . Base::URL_JS() . "ObjetoAdmin.js'></script>" . Intro() . "<script>\$Base.JSDinamico.push('ObjetoAdmin.js');</script>" . Intro();
         // Para que no lo cargue dinamicamente
     }
 }
<?php

include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Resaltar sintaxis de un código fuente (C/C++, PHP, HTML, JavaScript, CSS) para PHP">' . Intro() . '<meta name="keywords" content="Resaltador de código, Resaltador de sintaxis, Dar formato código, Pintar código, Pintar código fuente, Resaltar código, Resaltar código fuente, Marcar código, Resaltar sintaxis">';
$Titulo = "Resaltar sintaxis de un código fuente";
$Base->InicioPlantilla(basename(__FILE__), $Titulo, $META);
$Base->InicioBlog(basename(__FILE__), $Titulo);
?>
	


    
    <p>Uno de los primeros problemas que me encontré al empezar esta web en el 2009 fue la necesidad de mostrar código fuente de varios lenguajes resaltando su sintaxis.</p>
    <p>Al investigar sobre el tema, me di cuenta que la mayoría de soluciones (por lo menos las mas aceptables) estaban hechas con JavaScript. Lo que al final con el tiempo me llevo a crearme mi propia herramienta para remarcar la sintaxis en php, ya que yo consideraba mejor hacer el parsing en php y guardarlo en archivos "cache", de forma que solo se realizaba el parsing si la fecha de modificación del archivo cache era inferior a la fecha de modificación del archivo de código.</p>

    <p>Por el 2011 publique varias entradas en el blog sobre el tema de remarcar sintaxis en php, en las que explicaba como parsear determinados lenguajes y resaltar su sintaxis :
        <a href='/Blog/ColorearCodigoPHP_XML'>Colorear código XML</a>, 
        <a href='/Blog/ColorearCodigoPHP_CSS'>Colorear código CSS</a>,
        <a href='/Blog/ColorearCodigoPHP_JavaScript'>Colorear código JavaScript</a>,
        <a href='/Blog/ColorearCodigoPHP_PHP'>Colorear código PHP</a>,
        <a href='/Blog/ColorearCodigoPHP_CPP'>Colorear código C/C++</a>,
        <a href='/Blog/ColorearCodigoPHP_HTML'>Colorear código HTML</a>.
        Al final dichas entradas del blog acabaron fusionadas para formar el objeto devildrey33_PintarCodigo.
    </p>
    
    <p>Hace cosa de un par de meses se me metió en la cabeza que necesitaba poder resaltar ciertas líneas de código con enlaces parecidos a un link. Y esto me llevo a re-escribir prácticamente por completo el objeto devildrey33_PintarCodigo. El resultado, es que ahora se pueden resaltar <linea cid='HTML' l='4'>una</linea> o <linea cid='HTML' l='6,7,8,9,14,15,22,23,24'>varias</linea> líneas de código pasando por encima de los enlaces. Si la línea no está visible en la pantalla, al hacer click en el enlace <linea cid='HTML' l='38'>nos lleva hasta ella</linea>.</p>

<?php 
/* -[INICIO devildrey33.HTML]-
<!DOCTYPE HTML>
 private function _ImprimirComentario($Datos, $Punto = FALSE)
 {
     $Delays = range(1, 6);
     shuffle($Delays);
     $Ret = "";
     $Ret .= "<a name='" . $Datos["NumMsg"] . "'></a>";
     if ($Punto === TRUE) {
         $Ret .= "<div PuntoScroll='true' comentario='" . $Datos["NumMsg"] . "'>" . Intro();
     } else {
         $Ret .= "<div comentario='" . $Datos["NumMsg"] . "'>" . Intro();
     }
     $Ret .= "<div class='Comentarios_ControlesMensaje'>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[0] . "'>Responder</button>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[1] . "'>+1</button>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[2] . "'>-1</button>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[3] . "'>Editar</button>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[4] . "'>Eliminar</button>" . "<button class='Boton-Normal TransitionDelay0" . $Delays[5] . "'>Ver email</button>" . "</div>";
     if ($Datos["PaginaWeb"] !== "") {
         $Nombre = "<a href='" . $Datos["PaginaWeb"] . "' target='_blank'>" . $Datos["Nombre"] . "</a>" . Intro();
     } else {
         $Nombre = $Datos["Nombre"];
     }
     $Ret .= "<div>[#" . $Datos["NumMsg"] . "] " . $Nombre . " <span>" . $Datos["FechaCreacion"] . ", votos <b>" . $Datos["VotacionesValor"] . "</b> de <b>" . $Datos["VotacionesTotal"] . "</b>.</span></div>" . Intro();
     $Mensaje = str_replace(array('\\"', "\\'"), array('"', "'"), $Datos["Mensaje"]);
     $Ret .= "<div>" . $Mensaje . "</div>" . Intro();
     $Ret .= "</div>" . Intro();
     return $Ret;
 }
示例#10
0
$CArchivo = devildrey33_Lab::AbrirEjemplo($Archivo, -1);
/*    echo "<pre>";
    print_r($sArchivo);
    echo "</pre>";*/
$HEAD = "";
$Base->InicioPlantilla(basename(__FILE__), "Laboratorio de pruebas", $HEAD);
/*    if ($CArchivo["Ret"] != 200) { // Error al abrir el archivo
        $Archivo = "Ejemplos/Error.html"; 
//        $MostrarError = TRUE;
        $CArchivo = devildrey33_Lab::AbrirEjemplo($Archivo, -1);
    }*/
//    echo $_SERVER["REQUEST_URI"];
/* Maquetacio a pantalla completa */
/*    echo "<pre>";
    print_r($_SERVER);
    echo "</pre>";*/
echo "<article id='MarcoNavegacionLab' pagina='" . $Archivo . "'>" . Intro();
echo '<textarea id="Lab_Codigo" name="code" style="display:none">' . $CArchivo["Datos"] . '</textarea>' . Intro() . '<iframe id="Lab_Preview"></iframe>' . Intro() . "<div id='Lab_Barra1' class='SinSeleccion'>" . Intro() . "<div id='Lab_BotonExplorador' title='Mostrar / Ocultar el explorador'></div>" . Intro() . "</div>" . Intro() . "<div id='Lab_Barra2'></div>" . Intro() . "<div id='Lab_ParcheIframe'></div>" . Intro() . "<div id='Lab_Actualizar'>Actualización en <span id='Lab_Actualizar_Tiempo'>5</span>s<br /><b>Esc</b> para cancelar<br /> <b>Alt+A</b> para actualizar</div>" . Intro() . "</article>" . Intro();
echo "<script>" . Intro() . "\$Lab.Archivo = '" . $Archivo . "';" . Intro() . "\$Lab.ForzarVista = '" . $CArchivo["Vista"] . "';" . Intro() . "\$Lab.Modo = '" . $CArchivo["Modo"] . "';" . Intro();
if ($MostrarError == TRUE) {
    echo "\$Base.MostrarErrorAjax(404, false);" . Intro();
}
echo "</script>" . Intro();
//    $Base->FinBlog();
$Base->FinPlantilla();
?>




示例#11
0
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
include "devildrey33.php";
$Base = new devildrey33();
$HEAD = "";
$Base->InicioPlantilla(basename(__FILE__), "Editar Entradas", $HEAD);
if (devildrey33_Opciones::Administrador() > 0) {
    $Edit = new devildrey33_EditarEntradas();
    echo "<article class='Blog'>" . Intro() . "<div id='Editor_Blog'>" . Intro() . "<table>" . Intro() . "<tr>" . Intro() . "<td>Fecha</td>" . Intro() . "<td><input id='Entrada_Fecha' type='date' /></td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>Titulo</td>" . Intro() . "<td><input id='Entrada_Titulo' type='text' /></td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>URL</td>" . Intro() . "<td><input id='Entrada_URL' type='url' /></td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>Imagen</td>" . Intro() . "<td><input id='Entrada_Imagen' type='text' /></td>" . Intro() . "</tr>" . Intro() . "<tr>" . Intro() . "<td>Tipo</td>" . Intro() . "<td><input id='Entrada_Tipo' type='text' /></td>" . Intro() . "</tr>" . Intro() . "</table>" . Intro() . "<ul>" . Intro();
    $Tags = (require dirname(__FILE__) . '/Config/EntradasTags.php');
    for ($i = 0; $i < count($Tags); $i++) {
        echo "<li><input type='checkbox'><span>" . $Tags[$i] . "</span></li>";
    }
    echo "</ul>" . Intro() . "<div>" . Intro() . "<button id='Editor_Guardar'>Guardar</button>" . Intro() . "<button id='Editor_Cancelar'>Cancelar</button>" . Intro() . "</div>" . Intro() . "</div>" . Intro() . "<div id='Editor_BarraNavegacionInferior'>" . Intro() . "<div id='Editor_BotonAgregar' class='Menu_Boton'></div>" . Intro() . "</div>" . Intro();
    $Edit->ImprimirEntradas();
    echo "</article>" . Intro();
    echo "<script>\$Admin.EditarEntradas_Iniciar();</script>" . Intro();
} else {
    // No es admin, mostramos un 404
    echo "<script>\$Base.MostrarErrorAjax(404, true);</script>" . Intro();
}
$Base->FinPlantilla();
<?php

/*	include("devildrey33.php");
	$Base = new devildrey33(devildrey33_TipoPlantilla::Articulo, basename(__FILE__));	
	$Base->InicioPlantilla("Animaciones CSS3", "");*/
include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Apuntes sobre la actualización del sitio web http://devildrey33.es">' . Intro() . '<meta name="keywords" content="Notas actualización devildrey33">';
$Base->InicioPlantilla(basename(__FILE__), "Notas sobre la actualización de la web", $META);
$Base->InicioBlog(basename(__FILE__), "Notas sobre la actualización de la web");
?>

                <!-- INTRODUCCION -->
                <p>Buenas! hacía ya algún tiempo que no he dado señales de vida por aquí. Hoy me complace enseñaros el nuevo look para mi web, pero no es solo un nuevo look si no que prácticamente el 100% de la web ha sido re-hecho desde cero.</p>
                <p>Una de las razones por la que no he estado al pie del cañón, es porque me había aburrido del aspecto de la web, y solo en pensar en hacerle algún parche ya me desanimaba un poco. Mantener una web con las ultimas tecnologías, que lleva mas de 5 años resulta un poco complicado hoy en día, por lo que a principios del 2015 me decidí a empezar de nuevo toda la web.</p>
                <p>Esta vez he puesto mucho interés en que la web se vea perfectamente en dispositivos móviles, eso si para verla hay que usar un navegador decente actualizado.</p>
                <p>La web solo funciona en navegadores de última generación, en IE 11 debería funcionar bien, pero ya os digo que no me he molestado mucho en comprobarlo, en versiones anteriores ni lo se, ni me importa.</p>
                <!-- FIN_INTRODUCCION -->
                <p>Que puedo destacar del trabajo? :</p> 
                <ul>
                    <li>A simple vista se puede ver que el diseño ha variado bastante, y le da como un toque mas serio.</li>
                    <li>La web es 100% dinámica, la barra principal y la barra de navegación están siempre fijas, todo lo demás se carga al vuelvo mediante ajax.</li>
                    <li>Todas las animaciones están hechas con CSS por lo que el navegador sufre menos, y se ven mucho mas fluidas.</li>
                    <li>La web es totalmente responsive por lo que en dispositivos móviles se ve bastante bien. Todos los menús son 100% accesibles desde dispositivos móviles.</li>
                    <li>He mejorado mucho la navegación de forma que se puede llegar a cualquier parte de la web fácilmente con unos pocos clicks.</li>
                    <li>He modificado el 99% de las URLS para que se vean de forma mas ordenada y amigable.</li>
                </ul>
                   
                <p>Por la parte interna, incluso me he creado un pequeño cms para controlar todos los aspectos de la web, la web anterior funcionaba toda a base de archivos de configuración XML.</p>
                <p>También he mejorado bastante el sistema de mensajería con texto enriquecido, en especial el editor y sus funciones. Por otra parte aún no he implementado ningún sistema de captcha, veremos cuánto dura sin que alguien me llene de spam el foro..., de todas formas dispongo de métodos para monitorizar el flujo de mensajes, y de ser necesario no permitir mas mensajes.</p>
                <p>Sobre el índice debo destacar que ahora acepta entradas del laboratorio, esto quiere decir que si un día estoy inspirado y no tengo ganas de hacer un artículo/tutorial, siempre puedo currarme un ejemplo en el laboratorio y dejarlo en portada.</p>
<?php

include "../Web/devildrey33.php";
$Base = new devildrey33();
$META = '<meta name="description" content="Efectos de resaltado para botones en CSS">' . Intro() . '<meta name="keywords" content="Efectos hover, resaltar botón css, botón hover, botones hover, transición hover, estados botón css, botones css, botón css, transición :active, transición :hover, transición :focus, transformación botón css">';
$Titulo = "Algunos efectos para botones en CSS";
$Base->InicioPlantilla(basename(__FILE__), $Titulo, $META);
$Base->InicioBlog(basename(__FILE__), $Titulo, TRUE);
?>
	
    <script>$Base.CargarCSS("Blog_algunos-efectos-para-botones-en-css.css");</script>

    
    <p>La intención de este documento es mostrar la forma de exprimir al máximo una simple etiqueta <code>&lt;button&gt;</code> añadiendo transiciones y transformaciones para cada uno de sus estados.</p>
    <p>Lo que mas claro nos debe quedar a la hora de trabajar con botones son sus estados. En esencia una etiqueta <code>&lt;button&gt;</code> puede tener los siguientes estados :</p>
    <ul>
        <li><code><a href='/Doc/CSS/Selectores/:hover'>:hover</a></code>  (al pasar el mouse por encima)</li>
        <li><code><a href='/Doc/CSS/Selectores/:active'>:active</a></code> (al hacer click con el mouse)</li>
        <li><code><a href='/Doc/CSS/Selectores/:focus'>:focus</a></code>  (al obtener el foco del teclado)</li>
    </ul>
    <p>Para ponernos en la situación, imaginaros que pasa al hacer click encima de un botón. Para empezar el evento <code><a href='/Doc/CSS/Selectores/:hover'>:hover</a></code> ya ha saltado antes de hacer el click por haber entrado dentro del área del botón. A parte al hacer el click se manda el evento <code><a href='/Doc/CSS/Selectores/:active'>:active</a></code>, y además si el foco actual no es el botón en el que se hace el click, se recibe el evento <code><a href='/Doc/CSS/Selectores/:focus'>:focus</a></code> por que ahora lo será.</p>
    <p>Con esta breve explicación lo que os quiero hacer ver, es que hay que pensar muy bien como distribuir las transiciones para cada evento, ya que si se activan las tres a la vez se pueden acabar pisando entre ellas. (en lo personal me pasa muchisimo utilizando transformaciones)</p>
    <p>Para evitar que las transiciones se pisen la idea es distribuir el control en 3 capas :</p>
    
    <ul id="Capas">
        <li class="Capa1">La <b>capa principal</b> es la etiqueta <code>&lt;button&gt;</code>, la cual contiene el texto y el borde del botón. Se utilizará para las transiciones de los eventos <code><a href='/Doc/CSS/Selectores/:active'>active</a></code> y <code><a href='/Doc/CSS/Selectores/:focus'>:focus</a></code>.</li>
        <li class="Capa2">Detrás de la capa principal utilizaremos el pseudo elemento <code><a href='/Doc/CSS/Selectores/::before'>::before</a></code> para añadir una segunda capa destinada a mostrar las transiciones del evento <code><a href='/Doc/CSS/Selectores/:hover'>:hover</a></code>. Esta capa la identificaremos en este documento como la <b>capa animación</b>.</li>
        <li class="Capa3">Por ultimo detrás de la capa <code><a href='/Doc/CSS/Selectores/::before'>::before</a></code> crearemos con el pseudo elemento <code><a href='/Doc/CSS/Selectores/::after'>::after</a></code> una capa la cual tiene la finalidad de mostrar el fondo del botón (aunque si es necesario se puede llegar a utilizar para otra transición). Esta capa la identificaremos por <b>capa fondo</b>.</li>        
        <li class="Capas_Vista">
            <div>&lt;button&gt;</div>
            <div>::before</div>
示例#14
0
 static function GenerarArticulos($BD, $Categoria = "Todo", $Inicio = 0, $Fin = 16)
 {
     /* Si inicio es 0 hay que comprobar que no se hubieran cargado elementos anteriormente mediante el scroll */
     /*            if ($Inicio === 0) {
                     $Inicio = devildrey33_Opciones::EntradasIndice();
                 }*/
     $Entradas = (require dirname(__FILE__) . '/Config/EntradasBlog.php');
     if ($Categoria === "Todo") {
         $EntradasPC = $Entradas;
     } else {
         /* Creo un array solo con las entradas que tengan la categoria especificada */
         for ($i = 0; $i < count($Entradas); $i++) {
             if (Indice::BuscarCategoria($Entradas[$i]["Tags"], $Categoria) === TRUE) {
                 $EntradasPC[] = $Entradas[$i];
             }
         }
     }
     $Codigo = "";
     if ($Categoria == "") {
         $Categoria = "Todo";
     }
     $Contador = 0;
     for ($i = $Inicio; $i < count($EntradasPC); $i++) {
         //                if (Indice::BuscarCategoria($Entradas[$i]["Tags"], $Categoria) === TRUE) {
         switch ($EntradasPC[$i]["Tipo"]) {
             case "Blog":
             default:
                 $URL = Base::URL_Blog() . $EntradasPC[$i]["URL"];
                 $EntradasPC[$i]["URL"] .= ".php";
                 break;
             case "Lab":
                 $URL = Base::URL_Lab() . $EntradasPC[$i]["URL"];
                 break;
         }
         // Parche parche para que como mínimo en un servidor local no dedicado (localhost/directorio-web) se pueda acceder a las entradas del indice
         //                    if ($EntradasPC[$i]["Tipo"] === "Blog" && devildrey33_Opciones::$ServidorLocal === TRUE) { $URL .= ".php"; }
         $Codigo .= "<article class='Articulo_Portada' style='transition-delay:" . rand(0, 50) / 100 . "s'>" . Intro();
         $Codigo .= "<a href='" . $URL . "'>" . Intro() . "<div class='Articulo_Portada_ImagenO'></div>" . Intro() . "<img src='" . Base::URL_Graficos() . "155x125_" . $EntradasPC[$i]["Imagen"] . "' class='Articulo_Portada_Imagen' alt='" . $EntradasPC[$i]["Titulo"] . "' />" . Intro() . "</a>" . Intro();
         $Codigo .= "<h1><a href='" . $URL . "'>" . $EntradasPC[$i]["Titulo"] . "</a></h1>" . Intro();
         $Codigo .= "<span>" . substr($EntradasPC[$i]["Fecha"], 0, 2) . " de " . Indice::ObtenerMesStr(substr($EntradasPC[$i]["Fecha"], 3, 2)) . " del " . substr($EntradasPC[$i]["Fecha"], 6, 4) . " por <b>" . $EntradasPC[$i]["Autor"] . "</b>" . Intro();
         $Codigo .= $BD->ObtenerValoresEntrada($EntradasPC[$i]["URL"], $EntradasPC[$i]["Titulo"], false) . Intro();
         //                echo    ", 894 visitas, 0 comentarios, 0 votos.</span><br />";
         $Codigo .= "<span><br />" . Intro();
         $Codigo .= Indice::EnlazarTags($EntradasPC[$i]["Tags"]) . Intro();
         $Codigo .= "</span>" . Intro();
         $Codigo .= "</span>" . Intro();
         $Codigo .= "</article>" . Intro();
         // Ultimo articulo de la lista
         $Contador++;
         if ($i === count($EntradasPC) - 1) {
             $Codigo .= "<div finscrollinfinito='true'></div>" . Intro();
         }
         //                }
         // Cuando se leen 16 articulos paramos
         if ($Fin === $Contador) {
             devildrey33_Opciones::EntradasIndice($Inicio + $Contador);
             /* Guardo en la sesión el número de entradas guardadas con el scroll en el indice */
             return $Codigo;
             /* - De esta forma si se vuelve al indice por el historial volverá a la posición de la entrada a la que se accedió */
         }
     }
     return $Codigo;
 }
示例#15
0
 static function CrearMiniLab($ArrayArchivos)
 {
     //            devildrey33_Lab::_CrearMiniLab_ID ++;
     static $ID = -1;
     static $IDC = -1;
     $Oculto = "false";
     $Total = count($ArrayArchivos);
     if ($Total > 1) {
         $IDC++;
         echo "<div class='MiniLab_Contenedor'>";
     }
     foreach ($ArrayArchivos as $Archivo) {
         $ID++;
         echo "<div class='MiniLab' oculto='{$Oculto}' archivo='{$Archivo}' ver='mixto' id='MiniLab_{$ID}'>" . Intro() . "<textarea class='MiniLab_Codigo'></textarea>" . Intro() . "<iframe class='MiniLab_Preview'></iframe>" . Intro() . "<div class='MiniLab_VerPreview'></div>" . Intro() . "<div class='Menu'>" . Intro() . "<input id='MiniLab_Codigo_Estado_{$ID}' class='Menu_Boton_Input SinSeleccion' type='radio' name='MiniLab_input_{$ID}'  />" . Intro() . "<label tooltip-es='Ver el código' tooltip-en='Code' tooltip-pos='B' class='Menu_Boton_Label MiniLab_VerCodigo' for='MiniLab_Codigo_Estado_{$ID}'></label>" . Intro() . "<div class='Menu_Boton'>" . Intro() . "<img src='" . Base::URL_Web() . "SVG/Iconos50x50.svg#svg-vista-codigo' class='Menu_Boton_SVG' />" . Intro() . "</div>" . Intro() . "</div>" . Intro() . "<div class='Menu'>" . Intro() . "<input id='MiniLab_Preview_Estado_{$ID}' class='Menu_Boton_Input SinSeleccion' type='radio' name='MiniLab_input_{$ID}' />" . Intro() . "<label tooltip-es='Ver la pre-visualización' tooltip-en='preview' tooltip-pos='B' class='Menu_Boton_Label MiniLab_VerPreview' for='MiniLab_Preview_Estado_{$ID}'></label>" . Intro() . "<div class='Menu_Boton'>" . Intro() . "<img src='" . Base::URL_Web() . "SVG/Iconos50x50.svg#svg-vista-preview' class='Menu_Boton_SVG' />" . Intro() . "</div>" . Intro() . "</div>" . Intro() . "<div class='Menu'>" . Intro() . "<input id='MiniLab_Mixto_Estado_{$ID}' class='Menu_Boton_Input SinSeleccion' type='radio' name='MiniLab_input_{$ID}' checked='checked' />" . Intro() . "<label tooltip-es='Vista mixta (código/preview)' tooltip-en='Mixed view (code/preview)' tooltip-pos='B' class='Menu_Boton_Label MiniLab_VerMixto' for='MiniLab_Mixto_Estado_{$ID}'></label>" . Intro() . "<div class='Menu_Boton'>" . Intro() . "<img src='" . Base::URL_Web() . "SVG/Iconos50x50.svg#svg-vista-columnas' class='Menu_Boton_SVG' />" . Intro() . "</div>" . Intro() . "</div>" . Intro() . "<a href='/Lab/{$Archivo}'><button class='Boton-Normal'>Abrir en el laboratorio</button></a>" . Intro() . "</div>" . Intro();
         $Oculto = "true";
     }
     if ($Total > 1) {
         echo "<div class='MiniLab_ContenedorBotones'>";
         $Contador = 0;
         foreach ($ArrayArchivos as $Archivo) {
             $Contador++;
             echo "<input id='MiniLab_Contenedor_Estado_{$Contador}' class='Menu_Boton_Input' type='radio' name='MiniLab_Contenedor_{$IDC}'";
             if ($Contador === 1) {
                 echo " checked=checked";
             }
             echo " />" . Intro() . "<label class='Menu_Boton' for='MiniLab_Contenedor_Estado_{$Contador}'>{$Contador}</label>" . Intro();
             //echo "<button>".++$Contador."</button>";
         }
         echo "</div>";
         echo "<div>";
     }
 }