PHP查询输出保存为文本文件


php query output save as text file

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

我找不到保存页面原样的方法,作为文本或pdf文件。我发现了一个pdf网站,做这个http://pdfmyurl.com/,但我希望做同样的事情在我自己的网站没有外部网站。

web页面有一个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返回空白,因为会话无法识别。

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

但是这只是将页面保存为文本,包括php。 ->您希望服务器处理savechoice.php吗?这是完全不同的。当您使用file_get_contents()打开文件时,它获取的文件与您打开文件时看到的完全相同。它将而不是执行文件。

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

savechoice.php

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

把它改成这样:

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

在另一个文件中,您可以在使用require()调用savechoice.php之后简单地使用file_put_contents($echo);

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

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

,但实际上,最好的方法是修改savchoice .php中的代码,使其可作为函数调用,因此您可以有更像:

$text = get_choice(...);

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

如果您希望获得文件的输出而不是原始内容,则需要确保该文件以php方式执行。

你可以包括它(我看到已经有另一个答案…)或者你可以使用:

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

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

假设你的网站域名是http://www.example.com,文件"savchoice .php"在web根目录下。如果你把$url改成

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

文件中的php将被解释,你将看到网页,而不是php。