2013-03-11 112 views
1

我在我的網站上有一個頁面,它從表格中提取信息並用css格式化。php查詢輸出另存爲文本文件

我找不到保存頁面的方式,就像文本或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。 我也將網址更改爲完整網址,儘管運行PHP會返回空白,因爲會話無法識別。

+0

我意識到我還沒有澄清太多的道歉! 頁面已鏈接並且有會話。該頁面首先檢查用戶是否已登錄,然後根據他們的用戶標識從數據庫中提取信息。嘗試一些這些建議(還沒有嘗試過所有的〜當我回來時會這樣做)只會給我一個空白頁面,因爲它不能識別會話正在運行。 將看看是否有其他建議適用於此。 – Sjrsmile 2013-03-11 17:39:49

回答

4

請考慮使用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);

1

你可能想要更多的東西是這樣的:

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

但實際上,最好的方法是修改代碼,savechoice.php可以被調用的功能,讓你可以有更多這樣的:

$text = get_choice(...); 

取而代之的是,其中適當的邏輯,只輸出你想要的數據,沒有html包裝紙。在幾乎所有的使用情況下,特別是在使用會話(特別是標準的基於文件的會話)時,將HTTP請求調用到您自己的服務器幾乎是毫無意義的浪費資源。

0

這是因爲您正在加載文件,而不是文件的網址。

假設您的網站的域名是http://www.example.com,並且文件「savechoice.php」位於Web根目錄中。如果您將$ url更改爲

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

然後解釋文件中的php,您將看到網頁而不是php。

+0

我這樣做了,雖然PHP運行了,但它沒有識別該會話。現在添加更多信息。 – Sjrsmile 2013-03-11 17:50:51

1

如果您想要獲取文件的輸出而不是原始內容,則需要確保文件以php身份執行。

可以包括它(我看到已經有另一個答案...),也可以使用:

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

與你原來的代碼,以確保該文件被由Web服務器處理。

+0

該文件確實執行了PHP,但不幸的是由於會話變爲空白。我在原文中增加了更多信息。 – Sjrsmile 2013-03-11 17:46:56