execute_copie_db1.inc.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. $dateJour = date("Ymd");
  22. $dateImmediate = date("Ymd\_His");
  23. print "Date de la copie de sauvegarde : " . $dateImmediate . BR_END;
  24. print BR_END;
  25. $host = 'localhost';
  26. $username = $_ENV["SQL_USER"];
  27. $password = $_ENV["SQL_PW"];
  28. $database_name = 'dbogrdax2q4gaw'; //-->magikweb_libweb
  29. // Get connection object and set the charset
  30. $conn = mysqli_connect($host, $username, $password, $database_name);
  31. $conn->set_charset("utf8");
  32. // Get All Table Names From the Database
  33. $tables = array();
  34. $sql = "SHOW TABLES";
  35. $result = mysqli_query($conn, $sql);
  36. while ($row = mysqli_fetch_row($result)) {
  37. $tables[] = $row[0];
  38. }
  39. $sqlScript = "";
  40. $cptTable = 1;
  41. foreach ($tables as $table) {
  42. // Prepare SQLscript for creating table structure
  43. $query1 = "SHOW CREATE TABLE $table";
  44. $result1 = mysqli_query($conn, $query1);
  45. $row = mysqli_fetch_row($result1);
  46. $sqlScript .= "\n\n" . $row[1] . ";\n\n";
  47. //Copie de sauvegarde de la table en cours
  48. if ($modeSysteme == "Oui") {
  49. print "Copie de sauvegarde de " . $table . BR_END;
  50. } else {
  51. print "Copie de sauvegarde de la table #" . $cptTable . BR_END;
  52. $cptTable++;
  53. }
  54. $query2 = "SELECT * FROM $table";
  55. $result2 = mysqli_query($conn, $query2);
  56. $columnCount = mysqli_num_fields($result2);
  57. // Prepare SQLscript for dumping data for each table
  58. for ($i = 0; $i < $columnCount; $i++) {
  59. while ($row = mysqli_fetch_row($result2)) {
  60. $sqlScript .= "INSERT INTO $table VALUES(";
  61. for ($j = 0; $j < $columnCount; $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. if (!file_exists("SQL/$dateJour")) {
  79. mkdir("SQL/$dateJour");
  80. }
  81. //$backup_file_name = $dateImmediate . "/" . $database_name . '_backup_' . $dateImmediate . '.sql';
  82. $backup_file_name = "SQL/$dateJour/" . $database_name . '_backup_' . $dateImmediate . '.sql';
  83. $fileHandler = fopen($backup_file_name, 'w+');
  84. $number_of_lines = fwrite($fileHandler, $sqlScript);
  85. fclose($fileHandler);
  86. if ($modeSysteme == "Oui") {
  87. print $backup_file_name . BR_END;
  88. }
  89. print BR_END;
  90. print "Nombre de lignes : " . $number_of_lines . BR_END;
  91. if ($modeSysteme == "Oui") {
  92. // Download the SQL backup file to the browser
  93. header('Content-Description: File Transfer');
  94. header('Content-Type: application/octet-stream');
  95. header('Content-Disposition: attachment; filename=' . basename($backup_file_name));
  96. header('Content-Transfer-Encoding: binary');
  97. header('Expires: 0');
  98. header('Cache-Control: must-revalidate');
  99. header('Pragma: public');
  100. header('Content-Length: ' . filesize($backup_file_name));
  101. ob_clean();
  102. flush();
  103. readfile($backup_file_name);
  104. exec('rm ' . $backup_file_name);
  105. die();
  106. } else {
  107. //Envoyer un courriel, pour notification
  108. print "Le courriel a été envoyé.";
  109. }
  110. }