У меня есть страница на моем веб-сайте, которая извлекает информацию из таблицы и отформатирована с помощью 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 возвращается, поскольку сеанс не распознается.
Пожалуйста, рассмотрите возможность использования 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 () .
Вероятно, вы захотите еще чего-то подобного:
ob_start(); include('savechoice.php'); $text = ob_get_clean();
вob_start(); include('savechoice.php'); $text = ob_get_clean();
но на самом деле лучшим способом является изменение вашего кода в файле savechoice.php, чтобы он мог быть вызван как функция, поэтому вы можете иметь больше:
$text = get_choice(...);
вместо этого, что соответствующая логика выводит ТОЛЬКО данные, которые вы хотите, без оберточной бумаги html. Вызов HTTP-запросов на ваш собственный сервер – бесполезная трата ресурсов практически во всех случаях использования, особенно когда вы используете сеансы (и особенно стандартные сеансы на основе файлов).
Если вы хотите получить выходные данные файла вместо необработанного содержимого, вам нужно убедиться, что файл выполняется как php.
Вы можете включить его (я вижу, что уже есть другой ответ …), или вы можете использовать:
$url = "http://localhost/path/to/file/savechoice.php";
с вашим исходным кодом, чтобы убедиться, что файл обрабатывается веб-сервером.
Это потому, что вы загружаете файл, а не URL-адрес файла.
Предположим, что домен вашего сайта http://www.example.com и что файл «savechoice.php» находится в корневом каталоге веб-сайта. Если вы измените $ url на
$url = "http://www.example.com/savechoice.php";
Затем php в файле будет интерпретироваться, и вы увидите веб-страницу, а не php.