S'envoyer la sauvegarde sql de sa base de donnée ?

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 10 juil. 2022 à 14:42
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 10 juil. 2022 à 14:49

Bonjour à tous,

Ma Webapplication est presque terminée...Il faut maintenant que je songe à sauvegarder 

la base de données à laquelle elle est liée...

J'ai trouvé un scipt php qui fonctionne hyper bien sur le site de mon hébergeur Ionos. Le

fichier est stocké dans un répertoire de ma Webapplication, au format texte je suppose, 

avec comme nom : date("Ymd").sql

J'ai maintenant décidé de me l'envoyer dans mon Gmail, et me voilà une nouvelle

fois confronté aux problèmes d'envoi de mail... En effet, je reçois qq secondes après

avoir cliqué sur la disquette un mail avec une pièce jointe mais cette dernière est inexploitable...

Voici mon code de sauvegarde et d'envoi : 

<?php
ob_start();
//header("Cache-Control:no-cache");
$referer = ($_SERVER['HTTP_REFERER']); 

// Date du jour : 
$aujourdhui = date("Ymd");

//Entrez ici les informations de votre base de données et le nom du fichier de sauvegarde.
$mysqlDatabaseName ='xxxxxxxxxxx';
$mysqlUserName ='yyyyyyyyyy';
$mysqlPassword ='zzzzzzzzzzzzzzzz';
$mysqlHostName ='wwwwwwwwwww';
$mysqlExportPath ='sql_backup/' . $aujourdhui . '.sql';



//Veuillez ne pas modifier les points suivants
//Exportation de la base de données et résultat
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ' .$mysqlExportPath;
exec($command,$output,$worked);
switch($worked){
case 0:
echo 'La base de données <b>' .$mysqlDatabaseName .'</b> a été stockée avec succès dans le chemin suivant '.getcwd().'/' .$mysqlExportPath .'</b>';

// ENVOI DU FICHIER DE SAUVEGARDE : 
// On va d'abord définir le fichier à envoyer et à qui
$fichier = $mysqlExportPath;
$destinataire = 'moi@gmail.com';
$sujet = 'SAUVEGARDE BDD GESTION';
// On créer un boundary unique
$boundary = md5(uniqid(rand(), true));
// On met les entêtes
$entetes = 'Content-Type: multipart/mixed;'."n".' boundary="'.$boundary.'"';
$body = 'This is a multi-part message in MIME format.'."n";
$body .= '--'.$boundary."n";
// ici, c'est la première partie, notre texte HTML (ou pas !)
// Là, on met l'entête
$body .= 'Content-Type: text/html; charset="UTF-8"'."n";
// On peut aussi mettre les autres (voir à la fin)
$body .= "n";
// On remet un deuxième retour à la ligne pour dire que les entêtes sont finie, on peut afficher notre texte !
$body .= 'Le fichier de sauvegarde de la BDD du gîte en pièce jointe...';
// Le texte est fini, on va faire un saut à la ligne
$body .= "n";
// Et on commence notre deuxième partie qui va contenir le fichier
$body .= '--'.$boundary."n";
// On lui dit (dans le Content-type) que c'est un fichier txt
$body .= 'Content-Type: application/rtf; name="'.$fichier.'"'."n";
$body .= 'Content-Transfer-Encoding: base64'."n";
$body .= 'Content-Disposition: attachment; filename="'.$fichier.'"'."n";
// Les entêtes sont finies, on met un deuxième retour à la ligne
$body .= "n";
$source = file_get_contents($fichier);
$source = base64_encode ($source);
$source = chunk_split($source);
$body .= $source;
// On ferme la dernière partie :
$body .= "n".'--'.$boundary.'--';
// On envoi le mail :
mail($destinataire, $sujet, $body, $entetes);


break;
case 1:
echo 'Une erreur s est produite lors de la exportation de <b>' .$mysqlDatabaseName .'</b> vers'.getcwd().'/' .$mysqlExportPath .'</b>';
break;
case 2:
echo 'Une erreur d exportation s est produite, veuillez vérifier les informations suivantes : <br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
break;
}
// Retour à la page précédente : 
header("Location: $referer"); 
?>

Et voici le binz reçu (contenu de la pièce jointe (noname ???) avec un éditeur texte)  : 

This is a multi-part message in MIME format.n--58570733bae7a053bbcec9287817b572nContent-Type: text/html; charset="UTF-8"nnLe fichier de sauvegarde de la BDD du gîte en pièce jointe...n--58570733bae7a053bbcec9287817b572nContent-Type: application/text/html; name="sql_backup/20220710.sql"nContent-Transfer-Encoding: base64nContent-Disposition: attachment; filename="sql_backup/20220710.sql"nnLS0gTXlTUUwgZHgZGI1NjMgRGlzdHJpYiAxMC4zLjMgZGI1NjMlhREIsIGZvciBkZWJpYW4t
gZGI1NjMZ251ICh4ODZfNjQpCi0tCi0tIEhvc3Q6IGRiNTYzNzUyNTczLmRiLjFhbmQxLmNvbSAg
ICBEYXRhYmFzZTogZGI1NjM3NTI1NzMKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCigZGI1NjMcnZlciB2ZXJzaW9uCTUuNy4zOC1sb2cKCi8q
ITQwMTAxIFNFVCBAT0xEX0NIQVJBQ1RFUl9TRVRfQ0xJRU5UPUBAQ0hBUgZGI1NjMSX1NFVF9DTElF
TlQgKi87Ci8qITQwMTAxIFNFVCBAT0xEX0NIQVJBQ

.... /....

Il y en a 4 pages comme ça !

Auriez vous une idée de l'origine de mon problème, un script fonctionnel à me conseiller ?

Merci d'avance en tous cas pour vos aides !

EDIT : Impossible de poster que j'ai trouvé la réponse sur ce même site !!!


Linux / Chrome 103.0.0.0

A voir également:

2 réponses

emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
10 juil. 2022 à 14:44

Résolu !

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié le 10 juil. 2022 à 14:53
<?php
ob_start();
//header("Cache-Control:no-cache");
$referer = ($_SERVER['HTTP_REFERER']); 

// Date du jour : 
$aujourdhui = date("Ymd");

//Entrez ici les informations de votre base de données et le nom du fichier de sauvegarde.
$mysqlDatabaseName ='wwwwwwwwwwwwwwww';
$mysqlUserName ='xxxxxxxxxxxxxxxx';
$mysqlPassword ='yyyyyyyyyyyyyyyy';
$mysqlHostName ='zzzzzzzzzzzzzzz';
$mysqlExportPath ='sql_backup/' . $aujourdhui . '.sql';
$file_name = $aujourdhui . '.sql';



//Veuillez ne pas modifier les points suivants
//Exportation de la base de données et résultat
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ' .$mysqlExportPath;
exec($command,$output,$worked);
switch($worked){
case 0:
echo 'La base de données <b>' .$mysqlDatabaseName .'</b> a été stockée avec succès dans le chemin suivant '.getcwd().'/' .$mysqlExportPath .'</b>';
// ENVOI DU FICHIER DE SAUVEGARDE : 
$boundary = "_".md5 (uniqid (rand()));

$attached_file = file_get_contents($mysqlExportPath); //file name ie: ./image.jpg
$attached_file = chunk_split(base64_encode($attached_file));

$attached = "\n\n". "--" .$boundary . "\nContent-Type: application; name=\"$file_name\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"$file_name\"\r\n\n".$attached_file . "--" . $boundary . "--";

$headers ="From: expediteur@domaine.fr" ." \r\n";
$headers .= "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"$boundary\"\r\n";

$body = "--". $boundary ."\nContent-Type: text/plain; charset=ISO-8859-1\r\n\n".$message . $attached;
$email='moi@gmail.com';
$subject= 'SAUVEGARDE BDD GÎTE';
@mail($email,$subject,$body,$headers);


break;
case 1:
echo 'Une erreur s est produite lors de la exportation de <b>' .$mysqlDatabaseName .'</b> vers'.getcwd().'/' .$mysqlExportPath .'</b>';
break;
case 2:
echo 'Une erreur d exportation s est produite, veuillez vérifier les informations suivantes : <br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
break;
}
// Retour à la page précédente : 
header("Location: $referer"); 
?>
0