1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
<?php
//sauvegarde des table sql par slyderkiller@msn.com
/*
liste des variable a remplire ci-dessous
*/
$dbchemin='sql.free.fr'; //emplacement de la base de données
$base = 'nom_base'; //nom de la base de donnée
$dbuser='login_base'; //login de la base de données
$dbpass='pass_base'; //mot de passe de la base de données
$dbconnect=@mysql_connect($dbchemin,$dbuser,$dbpass);
$dir = 'sql/'; //chemin du repertoir de sauvegarde (doit etre créé)
$mail = 'ton_mail@free.fr'; //ton mail
/*
voila plus rien a toucher execute la page et regarde tes mail
*/
function Compacter($base) { // Permet de compacter la base avant de lancer toute la procédure
$tables = mysql_list_tables($base);
while ($enr = mysql_fetch_row($tables))
@mysql_query("OPTIMIZE TABLE ".$enr[0]);
}
if($connexion = $dbconnect) { // on effectue la connexion
Compacter($base);
$select_base=@mysql_select_db($base); // Selection de la base de données
// CREATION DU FICHIER
$fname = $dir."backup_".$base.".sql"; //emplacement du fichier de sauvegarde
$f2 = fopen($fname,"w");
fputs($f2,"# Sauvegarde de la base de données\n");
fputs($f2,"# Batch par Alexis BOGEMANS - 2006\n\n");
$tables = mysql_list_tables($base);
while ($enr = mysql_fetch_row($tables)) {
fputs($f2,"# Les tables traitées sont ".$enr[0].";\n");
}
fputs($f2,"\n");
$tables = mysql_list_tables($base);
while ($enr = mysql_fetch_row($tables)) {
fputs($f2,"DELETE FROM $enr[0];\n");
}
$tables = mysql_list_tables($base);
while ($enr = mysql_fetch_row($tables)) {
$res = mysql_query("SELECT * FROM $enr[0]");
// le nombre de champs de la table
$champs = mysql_num_fields($res);
// Pour chaque ligne
while($val=mysql_fetch_array($res)) {
$tmp = "INSERT INTO ".$enr[0]." VALUES(";
$c=0;
// Pour chaque champ
while($c < $champs) {
// Une virgule sauf au premier
if($c>0) $tmp .= ", ";
// Le contenu du champ
$tmp .= "'".AddSlashes($val[$c])."'";
$c++;
}
$tmp .= ");\n";
// Ecrit la ligne
fputs($f2,$tmp);
}
}
fclose($f2);
}
//envoi par mail de la sauvegarde
$boundary='didondinaditondelosdudosdodudundodudindon';
//En-têtes du mail
$headers="From: ".$mail."\r\n
MIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
//Corps du mail en commençant par le message principal
$body="--". $boundary ."\n
Content-Type: text/plain; charset=ISO-8859-1\r\n\n
Voici la sauvegarde sql de ton site.\n\n";
// Piece jointe
$fichier=file_get_contents($fname);
/* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
$fichier=chunk_split($fichier);
//Ecriture de la pièce jointe
$body = $body . "--" .$boundary. "\n".$fichier ;
//Fermeture de la frontière
$body = $body . "--" . $boundary ."--";
//Envoi du mail
mail($mail, "sauvegarde sql", $body, $headers);
?> |
Partager