2 votes

Passer une valeur à un fichier php pour changer le texte à l'intérieur du fichier puis forcer le téléchargement du même fichier

Lien de téléchargement :

<a href="download.php?words=2000&sort=popular&type=xml">Download php file</a>

download.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Home</title>
</head>
<body>
<h1>PHP file</h1>

<?php
function get_text($text)  
{  
   ....
}      

function get_time($time)  
{  
   ....
}    

$url = "http://api.xxx.com/info.php?words=".$_GET['words']."&sort=".$_GET['sort']."&type="$_GET['type'];
$xml = simplexml_load_file($url);
if (count($xml))
{
  foreach($xml->book as $book)
  {
    echo ....      
  }
}
?>

</body>
</html>

Le download.php est un script API php script prêt à l'emploi pour permettre aux webmasters de télécharger des fichiers sur leur FTP. Les webmasters peuvent choisir plusieurs options (par exemple : download.php?words=2000&sort=popular&type=xml) à partir d'un formulaire, puis soumettre le formulaire pour obtenir leur script API personnalisé.

Il s'agit de la ligne qui remplacera les options après la soumission du formulaire :

$url = "http://api.xxx.com/info.php?words=".$_GET['words']."&sort=".$_GET['sort']."&type="$_GET['type'];

Voici le code pour forcer le téléchargement. Mais je ne sais pas comment envelopper toute la page avec $content = "" ;. Je sais comment envelopper les codes HTML mais comment envelopper la fonction PHP et les codes sur la page ?

header("Content-Disposition: attachment; filename="download.php");
print $content;

1voto

fbitterlich Points 382

Je ne sais pas si c'est ce que vous voulez, mais vous pourriez créer un second script qui appelle le premier, récupère la sortie et l'envoie avec les en-têtes mentionnés :

<?php
$words = (int) $_GET['words'];
$sort = $_GET['sort'];

$url = sprintf("http://localhost/wherever/download.php?words=%d&sort=%s&type=xml", $words, $sort);
$content = file_get_contents($url);

header("Content-Disposition: attachment; filename="download.php");
print $content;
?>

Appelez ce fichier "force_download.php" et laissez les utilisateurs appeler <a href="force_download.php?words=2000&sort=popular&type=xml">Download php file</a> au lieu de cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X