2013-03-11 2 views
1

У меня есть страница на моем веб-сайте, которая извлекает информацию из таблицы и форматируется css.php query output сохранить как текстовый файл

Я не могу найти способ сохранить страницу как есть, в виде текстового или 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 возвращается, поскольку сеанс не распознается.

+0

Я понимаю, что не прояснил многое, поэтому извиняюсь! Страница связана с сеансом и имеет сеанс. Сначала проверяется страница, если пользователь вошел в систему, а THEN вытаскивает информацию в зависимости от идентификатора пользователя от базы данных. Попытка некоторых из этих предложений (не пробовала их всех ~ будет делать, когда я вернусь к этому) только дал мне пустую страницу, так как она не распознает сеанс. Посмотрите, будут ли для этого работать другие предложения. – Sjrsmile

ответ

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

В вашей другой файл, вы можете просто использовать file_put_contents($echo); после вызова savechoice.php с помощью require().

1

Вы, вероятно, хотите что-то более, как это:

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

но реально, лучший метод, чтобы изменить код в savechoice.php быть отозваны как функция, так что вы можете иметь более, как:

$text = get_choice(...); 

вместо этого, что соответствует логике для вывода ТОЛЬКО данных, которые вы хотите, без оберточной бумаги html. Вызов HTTP-запросов на ваш собственный сервер - бесполезная трата ресурсов практически во всех случаях использования, особенно когда вы используете сеансы (и особенно стандартные сеансы на основе файлов).

0

Это потому, что вы загружаете файл, а не URL-адрес файла.

Предпочитаете, что домен вашего сайта является http://www.example.com и что файл "savechoice.php" находится в сети.Если вы изменяете $ URL в

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

РНР в файле будет интерпретироваться и вы увидите веб-страницы, а не PHP.

+0

Я сделал это, и хотя PHP работал, он не распознал сеанс. Добавлена ​​дополнительная информация. – Sjrsmile

1

Если вы хотите получить выходные данные файла вместо необработанного содержимого, вам нужно убедиться, что файл выполнен как php.

Вы можете включить его (я вижу, уже есть другой ответ ...), или вы можете использовать:

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

с исходным кодом, чтобы убедиться, что файл будет обрабатываться веб-сервером.

+0

Файл выполняет PHP, но, к сожалению, из-за сеанса он становится пустым. Я добавил дополнительную информацию в исходное сообщение. – Sjrsmile

Смежные вопросы