tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
828
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    818
    Hallo!

    Ich arbeite gerade an einem einfachen "CMS".
    Hier moechte ich nun eine Möglichkeit einbauen, ein backup zu ziehen.
    So weit, so gut. ICh habe jetzt einen ueberdimensionierten String, welche alle SQL Befehle beinhaltet.
    Diesen möchte ich in eine Datei schreiben und NICHT auf dem server speichern sondern an den Benutzer schicken (quasi als download).
    Nun weiss ich nicht wie ich das realisieren soll, ohne die Datei zwischenzeitlich auf dem Server zu hinterlegen.

    Kurze verbaler Algorithmus:
    Sql DB auslesen -> in String speichern -> string in eine temporäre Datei schreiben (existiert nur im Zwischenspeicher des Servers) -> datei per header an den User schicken -> user downloaded und speichert Datei lokal -> Datei im Zwischenspeicher kann verworfen werden.

    Mir geht es darum, das ich dem PHP Skript keine Schreibrechte auf dem Server geben möchte!

    MfG
    mille
     
    man wird erwachsen ....

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Gib die Zeichenkette doch direkt aus anstatt sie erst in einer Datei zu speichern.
     
    Markus Wulftange

  3. #3
    Avatar von da_loki
    da_loki da_loki ist offline Mitglied
    Registriert seit
    Aug 2002
    Ort
    Münster (NRW)
    Beiträge
    16
    Du kannst die Header-Datei ja so ändern wie du möchtest.
    Gib doch einfach den String in der PHP-Datei aus, und setz den Header auf den Dateityp .sql
    Der WebBrowser des Users sollte dann nachfragen, was mit der Datei gemacht werden soll.

    Vielleicht klappt das ja.

    mfg
    da_loki
     

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    818
    Zitat Zitat von Gumbo
    Gib die Zeichenkette doch direkt aus anstatt sie erst in einer Datei zu speichern.
    Das wäre ne Idee. Geht aber nicht, da ich die Seite für einen DAU mache, dem kann ich ein Copy-Past-Save nicht zu muten.
    Der soll einfach nur klciken, speichern klicken und hochladen druecken fürs Einlesen des Backups *g*.

    Aber die Idee von Loki gefällt mir.
    Einfach quasi ausgeben, nur als Header festlegen, das es sich um eine *.cont.bu Datei handelt. Also content.backup File?

    ich probiers
     
    man wird erwachsen ....

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    818
    Also ich habs gelöst.
    Danke Loki. Danke @PHP Documentation


    Hier der Code:
    PHP-Code:
        header("Content-Disposition: attachment; filename=".$filename);
        
    $bu "";
        
    $sqlbot->getBackup($tbl_arr$bu); // erzeugt das Backup in String $bu
        
    echo $bu;
        exit; 
    Die Datei $filename hat bei mir folgenden schematischen Inhalt:

    Code :
    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
    
    -- Host: localhost
    -- Erstellungszeit: 26. March 2006 um 14:16
    -- PHP-Version: 5.1.1
    --
    -- Datenbank: `__tables`
    --
     
    -- --------------------------------------------------------
     
    TRUNCATE TABLE `TBL_menuepunkte`;
     
    --
    -- Daten für Tabelle `TBL_menuepunkte`
    --
     
    INSERT INTO `TBL_menuepunkte` (ID, menuepunkt, kategorie) VALUES ('3', 'Lackierung', '4');
     
    INSERT INTO `TBL_menuepunkte` (ID, menuepunkt, kategorie) VALUES ('2', 'Unfallinstandsetzung', '4');
     
    INSERT INTO `TBL_menuepunkte` (ID, menuepunkt, kategorie) VALUES ('4', 'Auto', '-1');
     
    INSERT INTO `TBL_menuepunkte` (ID, menuepunkt, kategorie) VALUES ('5', 'Busse', '-1');
     
    INSERT INTO `TBL_menuepunkte` (ID, menuepunkt, kategorie) VALUES ('6', 'Werbeplakatierung', '5');
     
    -- Host: localhost
    -- Erstellungszeit: 26. March 2006 um 14:16
    -- PHP-Version: 5.1.1
    --
    -- Datenbank: `__tables`
    --
     
    -- --------------------------------------------------------
     
    TRUNCATE TABLE `TBL_menuepunkte_inhalt`;
     
    --
    -- Daten für Tabelle `TBL_menuepunkte_inhalt`
    --
     
    INSERT INTO `TBL_menuepunkte_inhalt` (ID, menuepunkt_ID, content) VALUES ('1', '2', 'Inhalt zum Men&uuml;punkt <strong>Unfallinstandsetzung<br /><br /></strong>hier noch zus&auml;tzliche infos<strong></strong>');
    Geändert von mille (26.03.06 um 14:26 Uhr)
     
    man wird erwachsen ....

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes:
    PHP-Code:
    <?php

        $headerFields 
    = array(
            
    'Date'                => date('D, d M Y H:i:s T'time()),
            
    'Content-Type'        => 'application/octet-stream',
            
    'Content-Disposition' => 'attachment; filename="'.date('Y-m-d\TH-i-sO'time()).'.bak.sql"',
            
    'Content-Length'      => strlen($string)
        );

        foreach( 
    $headerFields as $fieldName => $fieldValue ) {
            
    header($fieldName.': '.$fieldValue);
        }
        echo 
    $string;   // Daten aus der Datenbank
        
    exit;

    ?>
     
    Markus Wulftange

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    818
    Was ist denn da jetzt anders?

    Ich habe das mal bei mir eingefügt und bei mir wird somit kein downlaoddialog erzwungen.
    Aber nehmen wir mal an, der wärejetzt erzwungen worden, worin besteht dann der Unterschied? Bzw. was ist anders?
     
    man wird erwachsen ....

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Prinzipiell gibt es keinen Unterschied. Ich habe nur etwas länger für meinen Beitrag gebraucht und habe deinen daher noch nicht wahrgenommen.
     
    Markus Wulftange

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    818
    Achso.

    Danke Gumbo

    -- erledigt
     
    man wird erwachsen ....

Ähnliche Themen

  1. etc/inittab ohne Backup verändert
    Von Huemler im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 18.07.07, 10:06
  2. Backup von Homepage via FTP --> Attribute mit speichern
    Von g-zus im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 05.02.06, 19:00
  3. WebServer Backup: Mials/www/mysql Backup
    Von lukelukeluke im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 28.09.05, 16:20
  4. SQL Backup ohne SSH ?!
    Von Sebigf im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 19.07.05, 12:54
  5. Windows ohne Backup wiederherstellen?
    Von mille im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 12.08.04, 08:31