Objectif ultime : Je veux créer une page Web où un utilisateur peut saisir des informations dans des formulaires. Avec ces informations, je veux créer un fichier html (appelé ci-dessous test-download.html) en insérant les informations données dans un modèle, puis forcer un téléchargement. Comme je veux faire une démonstration lors d'un prochain atelier où les gens utiliseront cette application "en même temps", je voudrais ne pas enregistrer le fichier sur le serveur et simplement forcer le téléchargement.
Jusqu'à présent : J'ai ceci dans mon fichier html (test.html) :
<form action="test.php" method="post">
To file: <input type="text" name="tofile" />
<input type="submit" />
</form>
et ceci dans mon test.php :
<?php
$filename = 'test-download.html';
$htmlcode1 = "<HTML> \n <BODY>";
$htmlcode2 = "</BODY> \n <HTML>";
$somecontent = $htmlcode1.$_POST["tofile"].$htmlcode2;
!$handle = fopen($filename, 'w');
fwrite($handle, $somecontent);
fclose($handle);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
?>
Cela écrase le fichier test-download.html et force un téléchargement.
Question : Comment puis-je faire cela sans toucher à un fichier (le test-download.html) sur le serveur ?