execute_copie_db2.inc.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. error_reporting(E_ALL);
  3. const BR_END = "<br>\n";
  4. // Menu des administrateurs/utilisateurs
  5. if (isValidConstant() != 1) {
  6. fermeSessionUtilisateur();
  7. }
  8. // ----------------------
  9. // Droit de l'utilisateur
  10. // ----------------------
  11. $modeAdmin= ($_SESSION['gestion_site']>="Oui"?"Oui":"Non");
  12. if ($modeAdmin!=="Oui") {
  13. exit;
  14. }
  15. if ($_SESSION['gestion_site']==="XXX") {
  16. $modeSysteme = "Oui";
  17. } else {
  18. $modeSysteme = "Non";
  19. }
  20. //Date du moment
  21. $dateImmediate = date("Ymd\_His");
  22. print "Date de la copie de sauvegarde : " . $dateImmediate . BR_END;
  23. print BR_END;
  24. $host = 'localhost';
  25. $username = $_ENV["SQL_USER"];
  26. $password = $_ENV["SQL_PW"];
  27. $database_name = 'magikweb_siiieq';
  28. // Get connection object and set the charset
  29. $conn = mysqli_connect($host, $username, $password, $database_name);
  30. $conn->set_charset("utf8");
  31. // Get All Table Names From the Database
  32. $tables = array();
  33. $sql = "SHOW TABLES";
  34. $result = mysqli_query($conn, $sql);
  35. while ($row = mysqli_fetch_row($result)) {
  36. $tables[] = $row[0];
  37. }
  38. $sqlScript = "";
  39. $cptTable = 1;
  40. foreach ($tables as $table) {
  41. // Prepare SQLscript for creating table structure
  42. $query1 = "SHOW CREATE TABLE $table";
  43. $result1 = mysqli_query($conn, $query1);
  44. $row = mysqli_fetch_row($result1);
  45. $sqlScript .= "\n\n" . $row[1] . ";\n\n";
  46. //Copie de sauvegarde de la table en cours
  47. if ($modeSysteme == "Oui") {
  48. print "Copie de sauvegarde de " . $table . BR_END;
  49. } else {
  50. print "Copie de sauvegarde de la table #" . $cptTable . BR_END;
  51. $cptTable++;
  52. }
  53. $query2 = "SELECT * FROM $table";
  54. $result2 = mysqli_query($conn, $query2);
  55. $columnCount = mysqli_num_fields($result2);
  56. // Prepare SQLscript for dumping data for each table
  57. for ($i = 0; $i < $columnCount; $i++) {
  58. while ($row = mysqli_fetch_row($result2)) {
  59. $sqlScript .= "INSERT INTO $table VALUES(";
  60. for ($j = 0; $j < $columnCount; $j++) {
  61. //$row[$j] = addslashes($row[$j]);
  62. if (isset($row[$j])) {
  63. $sqlScript .= '"' . $row[$j] . '"';
  64. } else {
  65. $sqlScript .= '""';
  66. }
  67. if ($j < ($columnCount - 1)) {
  68. $sqlScript .= ',';
  69. }
  70. }
  71. $sqlScript .= ");\n";
  72. }
  73. }
  74. $sqlScript .= "\n";
  75. }
  76. if (!empty($sqlScript)) {
  77. // Save the SQL script to a backup file
  78. mkdir($dateImmediate);
  79. $backup_file_name = $dateImmediate . "/" . $database_name . '_backup_' . $dateImmediate . '.sql';
  80. $fileHandler = fopen($backup_file_name, 'w+');
  81. $number_of_lines = fwrite($fileHandler, $sqlScript);
  82. fclose($fileHandler);
  83. if ($modeSysteme == "Oui") {
  84. print $backup_file_name . BR_END;
  85. }
  86. print BR_END;
  87. print "Nombre de lignes : " . $number_of_lines . BR_END;
  88. if ($modeSysteme == "Oui") {
  89. // Download the SQL backup file to the browser
  90. header('Content-Description: File Transfer');
  91. header('Content-Type: application/octet-stream');
  92. header('Content-Disposition: attachment; filename=' . basename($backup_file_name));
  93. header('Content-Transfer-Encoding: binary');
  94. header('Expires: 0');
  95. header('Cache-Control: must-revalidate');
  96. header('Pragma: public');
  97. header('Content-Length: ' . filesize($backup_file_name));
  98. ob_clean();
  99. flush();
  100. readfile($backup_file_name);
  101. exec('rm ' . $backup_file_name);
  102. } else {
  103. //Envoyer un courriel, pour notification
  104. }
  105. }