Ссылка для скачивания:

<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>

Download.php - это готовый php-скрипт API, позволяющий веб-мастерам загружать файлы на свой FTP. Веб-мастера могут выбрать множество вариантов (например, download.php? Words = 2000 & sort = popular & type = xml) из формы, а затем отправить форму, чтобы получить свой собственный сценарий API.

Это строка, которая заменит параметры после отправки формы:

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

Это код для принудительной загрузки. Но я не знаю, как обернуть всю страницу $ content = "";. Я знаю, как обернуть HTML-коды, но как обернуть функцию и коды PHP на странице?

header("Content-Disposition: attachment; filename="download.php");
print $content;
php
2
richard 25 Дек 2012 в 02:59
Не могли бы вы определить wrap в ... how to wrap the PHP function and codes on the page?
 – 
Jelmer
25 Дек 2012 в 03:02
Привет, потому что мне нужно напечатать $ content; чтобы получить определенные части на странице. Итак, насколько я знаю, это $ content = "content, который я хочу напечатать." ;. Но я не знаю, как обернуть php: $ content = "<? Php function get_text ($ text) {....";
 – 
richard
25 Дек 2012 в 03:10
1
Просто экранируйте символы, которые заставляют его обрабатывать как php. Так, например, когда вы показываете материал в файле HTML, вы можете начать с создания из каждого < &lt;. Для такого рода вещей вы можете использовать такие функции, как html_entity_decode < / а>. Вам просто нужно выяснить, какую кодировку вы используете и как вы ее представляете.
 – 
Jelmer
25 Дек 2012 в 03:16
Значит, вы на самом деле пытаетесь предоставить пользователю весь исходный код, который в противном случае выводил бы download.php? Стоит ли мне беспокоиться о том, что в вашем примере есть type=json, но файл на самом деле использует XML?
 – 
Mike Brant
25 Дек 2012 в 03:18
1
Заворачивать ничего не нужно. Поскольку файл загружается как вложение, а не загружается в браузер, он будет сохранен как есть. Вам следует использовать file_get_contents() вместо simplexml_load_file(), если вы не хотите анализировать данные как XML.
 – 
Barmar
25 Дек 2012 в 03:59

1 ответ

Лучший ответ

Не уверен, что ты этого хочешь; но вы можете создать второй сценарий, который вызывает первый, получает вывод и отправляет его с указанными заголовками:

<?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;
?>

Назовите этот файл force_download.php и позвольте пользователям вместо этого вызывать <a href="force_download.php?words=2000&sort=popular&type=xml">Download php file</a>.

1
fbitterlich 31 Янв 2013 в 20:20