mtWeb > Download > Remote SQL

<?php
    
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
        die(
"Failed\n");
    }

    echo
"Welcome to localhost ;-)\n";

    require_once
'salt.php';
    require_once
'read_dump.php';
    require_once
'../config.php';

    
$db = db_connect();

    
$sql = "SELECT last FROM sql_serv";
    
$last = strtotime($db->getOne($sql));
    
$diff = strtotime('now') - $last;
    if (
$diff < 600) {
        die(
"You're too fast\n");
    }

    echo
"Unserializing data\n";
    
$data = unserialize($_POST['data']);

    
$hash = $data[0];
    
$size = $data[1];
    
$sql = base64_decode($data[2]);
    unset(
$data);

    if (
strlen($sql) != $size) {
        die(
"Incorrect size\nClient: $size\nServer: " . strlen($sql));
    }

    if (
$hash !== md5($sql . $salt)) {
        
$sql = "UPDATE sql_serv SET last = now()";
        
$db->query($sql);
        die(
"Error occurred\n");
    }

    echo
"Splitting SQL dump\n";
    
// the last parameter is your MySQL version as an integer, I use 3.23.47
    
PMA_splitSqlFile($dump, $sql, 32347);

    
$queries = sizeof($dump);
    echo  
"$queries queries to execute\n";

    if (
$queries) {
        
$i = 1;
        foreach (
$dump as $sql) {
            echo
"[$i/$queries] $sql\n";
            
$db->query($sql);
            echo
"Rows affected: " . $db->affectedRows() . "\n\n";
            
$i++;
        }
    }

    echo
"Disconnecting...\n";
    
$db->disconnect();

?>