[php] .sql bestand ter download aanbieden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Kogelvis
  • Registratie: Maart 2001
  • Laatst online: 11-09 15:01

Kogelvis

Nu ook met gitaar

Topicstarter
Hoi,

Ik ben hier momenteel iets in php aan het maken waarin ik een backup module van de database wil bouwen nu had ik hier iets op GoT gevonden met de header functie in php waardoor je dus een bestand ter download aanbied het gaat hier om de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
<?php 
/* de backup module */
if (IsSet ($mode) && $mode == "backup" && $level == "1") 
{
    exec('mysqldump -ukogelvis -ppassword dev > database.sql');
    header("Content-type: database/sql");
    header("Content-Disposition: attachment; filename=database.sql");
}
?>


nu gaat dit dumpen perfect maar die headers dat werkt op de 1 of andere manier niet hierbij biedt hij zegmaar de source van de pagina zelf aan ipv de database.sql weet iemand wat ik kan veranderen zodat die database .sql ter download aan word geboden want als je het in de browser opvraagt dan krijg je de inhoud te zien en dat wil ik dus nu niet.

[ Voor 6% gewijzigd door ACM op 22-01-2003 15:04 ]

<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 14:39

mulder

ik spuug op het trottoir

Content-type moet volgens mij iets anders zijn, geheugen laat me even in de steek. BTW password posten is niet handig.

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Kogelvis
  • Registratie: Maart 2001
  • Laatst online: 11-09 15:01

Kogelvis

Nu ook met gitaar

Topicstarter
is fake password hoor

<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

PHP:
1
2
3
4
5
6
7
8
9
10
if (ereg("MSIE ([0-9].[0-9]{1,2})", $HTTP_USER_AGENT, $log_version)) {
    header("Content-Disposition: inline; filename=\"".$filename."\"");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");
} else {
    header("Content-Disposition: attachment; filename=\"".$filename."\"");
    header("Expires: 0");
    header("Pragma: no-cache");
}

Rustacean


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:54

Janoz

Moderator Devschuur®

!litemod

Euhm .. je moet die dump niet naar de schijf doen, maar wel doorsturen naar de client natuurlijk.

Gebruik anders ipv een exec, een fpassthru oid.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 13:54
Bij mij werkt bovenstaande oplossing (van codebase.nl) niet. Ik heb het voorbeeld exact gekopieerd, maar toch wordt het gewoon in de browser getoond. Waar kan dit aan liggen?

specs


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
je moet bij de content type aangeven dat het gedownload moet worden *ook mijn geheugen laat me in de steek* maar ik heb het hier ooit wel voor bij zijn komen.

Zoek op download/headers oid.

Acties:
  • 0 Henk 'm!

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 13:54
Hmm, even ter verduidelijking: ik wil geen fysiek bestand aanbieden, maar een gegenereerde string. Ik denk dat jij de functie fpasstru bedoelt, maar dat is hier dus niet van toepassing. De volgende headers stuur ik momenteel mee:
PHP:
1
2
3
4
5
6
$string = "Dit is een testbestand";
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".strlen($string));
header("Content-Disposition: attachment; filename=test.txt");
echo $string;

Dit zou toch gewoon moeten werken :?. Al mijn zoekacties komen uit op deze oplossing, maar toch werkt het niet.

specs


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
ik bedoelde dus "application/octet-stream" uhm, ik heb ergens ook nog wel een download script, uhm kwam volgens mij van php.net ofzo :)

http://www.php.net/manual/en/function.fpassthru.php (zoeken op mirko, 4de bericht)

Misschien dat ie door de extensie besluit dat jij hem gewoon wil openen? Probeer het eens met een andere naam ofzo.

[ Voor 52% gewijzigd door martinvw op 22-01-2003 15:04 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waarom moet je perse de dump naar een file doen en daarna pas naar tekst :?

gewoon zoiets:
PHP:
1
$mysql_dump_text = `mysqldump -u root -p etc dev`;

Scheelt je weer een overbodige stap.
Of zie Janoz :)

Aargh, ik kijk weer es naar een oude topicstart :(

[ Voor 21% gewijzigd door ACM op 22-01-2003 15:08 ]


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
RubenDJ schreef op 22 januari 2003 @ 14:55:
Hmm, even ter verduidelijking: ik wil geen fysiek bestand aanbieden, maar een gegenereerde string. Ik denk dat jij de functie fpasstru bedoelt, maar dat is hier dus niet van toepassing.
:)

Zegt hij dat nu en snapt ACM niet of ben ik de draad kwijt :?

[ Voor 16% gewijzigd door martinvw op 22-01-2003 15:06 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Let wel dat Mozilla nog wel 's de neiging heeft een extensie toe te voegen als de content-type niet klopt met de extensie van 't bestand.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 13:54
Kan iemand anders eens even kijken of het script dat ik postte werkt op zijn/haar webserver? Ik heb het idee dat de Apache van mijn hoster dingen blokkeert (zojuist ergens gelezen dat dat een mogelijkheid is). Probeer het eventueel met een andere filename. Bij mij maakte het niets uit, hij wil gewoon het dialoogvenster niet tonen :'(.

specs


Acties:
  • 0 Henk 'm!

  • RubenDJ
  • Registratie: Februari 2000
  • Laatst online: 13:54
Ik ben er al achter. Mijn vermoeden was juist, ik mag die headers niet versturen. Valt me tegen van een provider als WideXS. Bij DeHeeg werkt exact dezelfde code probleemloos. 8)7

specs

Pagina: 1