php查询输出另存为文本文件

时间:2013-03-11 17:18:52

标签: php html save

我的网站上有一个页面,用于从表格中提取信息,并使用css格式化。

我找不到按原样保存页面的方法,如文本或pdf文件。我找到了一个pdf网站来做http://pdfmyurl.com/但我希望在我自己的网站上做同样的事情而不用外部网站。

网页上有一个session,确保用户已登录,具体取决于user_id,取决于从数据库中提取的数据。为了澄清,我希望用户能够查看此页面。在页面上,我希望有一个"SAVE TO COMPUTER"按钮,可以按原样保存该页面。

我找到了

<?php

 //Link to download file...
 $url = "savechoice.php";

 //Code to get the file...
 $data = file_get_contents($url);

 //save as?
 $filename = "test.txt";

 //save the file...
 $fh = fopen($filename,"w");
 fwrite($fh,$data);
 fclose($fh);

 //display link to the file you just saved...
 echo "<a href='".$filename."'>Click Here</a> to download the file...";
?>

但这只是将页面保存为文本,包括未执行的php。 我还将url更改为完整的url,虽然运行PHP会因为无法识别会话而变回空白。

4 个答案:

答案 0 :(得分:4)

请考虑使用file_put_contents()。还要验证您是否在服务器中具有写权限。您可以使用is_writable()

执行此操作

但这只是将页面保存为包含php的文本。 - &gt;您是否希望服务器处理savechoice.php?这完全不同。当您使用file_get_contents()打开文件时,它会准确地获取您在打开文件时看到的文件。它将执行该文件。

您需要更改savechoice.php的工作方式。如果它是具有某些输出的脚本,您可以将输出放在一个变量中,该变量将放在$data中。例如:

savechoice.php

<?php
echo 'Hello World!';
?>

将其更改为:

<?php
$echo = 'Hello World!';
?>

在您的其他文件中,您可以在使用require()致电file_put_contents($echo);后使用savechoice.php

答案 1 :(得分:1)

你可能想要更像这样的东西:

ob_start();
include('savechoice.php');
$text = ob_get_clean();

但实际上,最好的方法是修改savechoice.php中的代码,使其可以作为函数调用,这样你可以更像:

$text = get_choice(...);

相反,它只是输出你想要的数据的适当逻辑,没有html包装纸。在几乎所有使用情况下,向您自己的服务器调用HTTP请求都是毫无意义的浪费,特别是当您使用会话(尤其是基于标准文件的会话)时。

答案 2 :(得分:1)

如果要获取文件的输出而不是原始内容,则需要确保文件以php的形式执行。

你可以加入它(我看到已有另一个答案......)或者你可以使用:

$url = "http://localhost/path/to/file/savechoice.php";

使用原始代码确保文件由Web服务器处理。

答案 3 :(得分:0)

这是因为您正在加载文件,而不是文件的URL。

假设您网站的域名为http://www.example.com,并且文件“savechoice.php”位于网络根目录中。如果您将$ url更改为

$url = "http://www.example.com/savechoice.php";

然后将解释文件中的php,您将看到网页而不是php。