pragmaMx Support Forum

alles für Webmaster => PhP & mySQL => Thema gestartet von: Chrisoffstormydays am 22 November 2002, 19:09:39

Titel: Automatisierte Dumperstellung
Beitrag von: Chrisoffstormydays am 22 November 2002, 19:09:39
Moin,

mit

 
<?php
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h ihr.datenbankserver.de DATENBANKNAME > /is/htdocs/kdnummer/www.domain.de/dump/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
?>

funktioniert das Erstellen des Dumps und das Speichern im WebspaceVerzeichnis:
....was mir noch fehlt, ist der Mail Versand...des Dumps...

Kann mir jemand helfen??

Gruß
Chris
Titel: Re: Automatisierte Dumperstellung
Beitrag von: jubilee am 22 November 2002, 19:59:20
Hallo !
Also, wenn du auf Deinem Server SMTP nutzen kannst (Unix-Server mit sendmail)
, dann kannst Du die mail() Funktion benutzen.
Sollte so gehen :
Zitat<?
$email="hier@ die Adresse.de";                                //Empfängeradresse
$titel="Hier der Betreff";                                           //Betreff
$text="Hier der Mailtext";                                        //Mailtext
$header ="From:Von@wemgesendet.de";             //Absenderadresse
$header .= "Reply-To: Die@Antwortadresse.de"; //Antwortadresse
$header .= "X-Mailer: PHPmail()";                        //Mailapplication
$header .= "Attachment:HierDerFilename";        //Anhang
$header .= "X-Priority:1";                                  //Priorität 1= hoch,2=mittel,3=gering
$header .= "Content-Type: text/html";       //Inhaltstyp
$bool=mail($email, $titel, $text, $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
?>
So ähnlich müsste es funktionieren.
Mfg
jubilee
Titel: Re: Automatisierte Dumperstellung
Beitrag von: jubilee am 23 November 2002, 00:23:15
Hallo !
Voriges Beispiel geht so nicht (nur ohne Anhang) !
Um einen Anhang zu versenden bitte folgendes Beispiel
verwenden (geht NUR mit TEXT-Dateien als Anhang !!!)
 
Zitat<?
$boundary = strtoupper(md5(uniqid(time()))); //Boundary erzeugen
$dateiname="dump-datei"; //Hier kann ein Name für den Anhang (!) angegeben werden
$datei="/hier/pfad/zur/datei.txt";  //Dateiname mit absolutem Pfad
$datei_content = fread(fopen($datei,"r"),filesize($datei));
$email="empfänger@adresse.de"; //Empfängeradresse
$titel="Mailtest"; //Betreff der E-Mail
$text="Das hier ist ein Test"; //Mailtext/Mailbody
$header ="From:absender@adresse.de"; //Absenderadresse
$header .="\nMIME-Version: 1.0"; //Mime Header
$header .="\nContent-Type: multipart/mixed; boundary=$boundary"; //Mime Inhalts-Type und Boundary
$header .="\n\nDies ist eine mehrteilige Nachricht im MIME-Format";//Information an nicht Mime-Clients
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/html"; //Mime-Type des Mailbody's
$header .="\nContent-Transfer-Encoding: 8bit"; //Transfer Encodierung NUR TEXT !!!
$header .="\n\n$text"; //Mailbody senden
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/plain"; //Mine-Type desr Dateianhanges
$header .="\nContent-Transfer-Encoding: 8bit";//Transfer Encodierung NUR TEXT !!!
$header .="\nContent-Disposition: attachment; filename=\"$dateiname\"";//Anhang spezifizieren
$header .="\n$datei_content"; //Anhang Inhalt
$header .="\n--$boundary--"; //Ende des Headers
$bool=mail($email, $titel,"" , $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
?>
MfG
jubilee

P.S Andere Anhänge gehen natürlich auch, aber dafür müssen das Transfer-encoding
und der Mime Inhaltstyp angepasst werden. Ausserdem muss bei Binärdateien noch
eine Codierung vorgenommen werden.


[Editiert am 22/11/2002 von jubilee]
Titel: Re: Automatisierte Dumperstellung
Beitrag von: Chrisoffstormydays am 24 November 2002, 16:41:47
Hi Jubilee,

erstmal super vielen Dank für deine Mühe!

Ich bin leider erst gerade eben dazu gekommen,..das Script auszuprobieren.

Ich habs als mail.php abgespeichert in einem paswortgeschütztem Verzeichnis, in dem ich die Dumps als txt file erstellen lasse.....

Lediglich bei

>>$datei="/hier/pfad/zur/datei.txt"; //Dateiname mit absolutem Pfad

musste ich den relativen Pfad angeben,....aber was soll ich sagen....es funzt ohne Probleme....

Nochmal Dank für deine Arbeit,

Gruß
Chris
Titel: Re: Automatisierte Dumperstellung
Beitrag von: soxin am 24 November 2002, 17:12:32
könnt ihr das im gesammten nochmal hier hinschreiben .. hääte das auch gern ..
aber kapier nicht wie und wo ich das einbauen muß?!!?

HÄ??
Titel: Re: Automatisierte Dumperstellung
Beitrag von: jubilee am 24 November 2002, 22:15:12
Hallo soxin
Na eigentlich ganz einfach.
Der Chris... hat ein kleines Script um einen Dump von seiner Datenbank zu ziehen.
Ich hab Ihm dafür ein kleines Script zum Versand per Mail geschrieben.
Nun brauchst Du die beiden nur zusammenkopieren und unter einem
IrgendeinenDateinamen.php zu speichern. In dein Webverzeichnis kopieren
Variablen anpassen.
Und dann kannst Du das über den Browser ausführen.
Also :
 
Zitat<?php //erst chris... Script
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -h ihr.datenbankserver.de DATENBANKNAME > /is/htdocs/kdnummer/www.domain.de/dump/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
//Dann kommt der Rest
$boundary = strtoupper(md5(uniqid(time()))); //Boundary erzeugen
$dateiname="dump-datei"; //Hier kann ein Name für den Anhang (!) angegeben werden
$datei="/hier/pfad/zur/datei.txt"; //Dateiname mit absolutem Pfad
$datei_content = fread(fopen($datei,"r"),filesize($datei));
$email="empfänger@adresse.de"; //Empfängeradresse
$titel="Mailtest"; //Betreff der E-Mail
$text="Das hier ist ein Test"; //Mailtext/Mailbody
$header ="From:absender@adresse.de"; //Absenderadresse
$header .="\nMIME-Version: 1.0"; //Mime Header
$header .="\nContent-Type: multipart/mixed; boundary=$boundary"; //Mime Inhalts-Type und Boundary
$header .="\n\nDies ist eine mehrteilige Nachricht im MIME-Format";//Information an nicht Mime-Clients
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/html"; //Mime-Type des Mailbody's
$header .="\nContent-Transfer-Encoding: 8bit"; //Transfer Encodierung NUR TEXT !!!
$header .="\n\n$text"; //Mailbody senden
$header .="\n--$boundary"; //Boundary zur Trennung senden
$header .="\nContent-Type: text/plain"; //Mine-Type desr Dateianhanges
$header .="\nContent-Transfer-Encoding: 8bit";//Transfer Encodierung NUR TEXT !!!
$header .="\nContent-Disposition: attachment; filename=\"$dateiname\"";//Anhang spezifizieren
$header .="\n$datei_content"; //Anhang Inhalt
$header .="\n--$boundary--"; //Ende des Headers
$bool=mail($email, $titel,"" , $header); //Aufruf der Funktion
If ($bool) {echo "E-Mail wurde versendet";}//Erfolgreich ?
Aber denk dran: die Variablen an deine Gegebenheiten anpassen !!!
MfG
jubilee