Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запись текста в файл на PC пользователя
 
 автор: lifead   (24.07.2009 в 05:12)   письмо автору
 
 

Подскажите как средствами php сделать вывод текста из переменной (текстовой, числовой и т.д) в файл на PC пользователя, а не в файл на сервере, причем для разных ОС, Win *nix и др.

  Ответить  
 
 автор: sim5   (24.07.2009 в 05:44)   письмо автору
 
   для: lifead   (24.07.2009 в 05:12)
 

РНР работает на сервере и до компьютера клиента ему нет дела, а значит и средств записи чего либо на компьютер клиента у него нет.

  Ответить  
 
 автор: guye   (24.07.2009 в 11:07)   письмо автору
 
   для: sim5   (24.07.2009 в 05:44)
 

header('Content-Type: application/octet-stream');

header('Content-disposition: attachment; filename="то как файл будет называться на стороне клиента.txt"');

print $memory;

  Ответить  
 
 автор: sim5   (24.07.2009 в 12:53)   письмо автору
 
   для: guye   (24.07.2009 в 11:07)
 

Это не запись скриптом РНР файла на клиенте, это нечто другое.

  Ответить  
 
 автор: Loki   (24.07.2009 в 11:09)   письмо автору
 
   для: lifead   (24.07.2009 в 05:12)
 

ну можно пользователю предложить сохранить файл...

  Ответить  
 
 автор: lifead   (11.08.2009 в 06:05)   письмо автору
 
   для: Loki   (24.07.2009 в 11:09)
 

а можно кусочек кода как это сделать?

  Ответить  
 
 автор: neadekvat   (11.08.2009 в 12:10)   письмо автору
 
   для: lifead   (11.08.2009 в 06:05)
 

Пхп тут ни при чем.
Это в head:
<META HTTP-EQUIV="REFRESH" CONTENT="10;URL=file.txt">

Это в body:
Загрузка файла начнется через 10 секунд. Если загрузка файла не началась, нажмите на <a href="">ссылку</a>

  Ответить  
 
 автор: sim5   (11.08.2009 в 12:41)   письмо автору
 
   для: neadekvat   (11.08.2009 в 12:10)
 

И что дальше?

  Ответить  
 
 автор: neadekvat   (11.08.2009 в 13:18)   письмо автору
 
   для: sim5   (11.08.2009 в 12:41)
 

Пользователю предложат сохранить файл.

  Ответить  
 
 автор: sim5   (11.08.2009 в 14:50)   письмо автору
 
   для: neadekvat   (11.08.2009 в 13:18)
 

Автор спрашивает не о том, как извесить пользователя, а о том, как делается сохранение, а это как раз забота сервера (РНР) отдать файл.

  Ответить  
 
 автор: neadekvat   (11.08.2009 в 16:03)   письмо автору
 
   для: sim5   (11.08.2009 в 14:50)
 

>ну можно пользователю предложить сохранить файл...
Автор темы:
>а можно кусочек кода как это сделать?

  Ответить  
 
 автор: sim5   (11.08.2009 в 16:21)   письмо автору
 
   для: neadekvat   (11.08.2009 в 16:03)
 

Ну да, а ваше перенаправление как раз и сохранит? Автор вообще не знает о чем речь была, считая то, что сказал Loki, именно отдачей и сохранением файла на клиенте, собственно ваше перенаправление тут и нафиг не нужно.

  Ответить  
 
 автор: neadekvat   (11.08.2009 в 17:10)   письмо автору
 
   для: sim5   (11.08.2009 в 16:21)
 

Перенаправление, если вы не заметили, ссылается на файл. Пытаясь открыть файл, что делает бразуер? Предлагает его сохранить на компьютер.

  Ответить  
 
 автор: sim5   (11.08.2009 в 18:46)   письмо автору
 
   для: neadekvat   (11.08.2009 в 17:10)
 

А без перенаправления никак не отдать файл и не предложить сохранить его?

  Ответить  
 
 автор: neadekvat   (11.08.2009 в 19:34)   письмо автору
 
   для: sim5   (11.08.2009 в 18:46)
 

Омг..ну уберите meta тег и оставьте только текст со ссылкой.
И это..хватит придираться уже.

  Ответить  
 
 автор: mrSHTURMAN   (12.08.2009 в 06:36)   письмо автору
 
   для: lifead   (11.08.2009 в 06:05)
 

Суньте скриптик клиенту ;-)

<script language="JavaScript">
function CreateFile()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:FileName", true);
tf.WriteLine("bla-bla-bla!!!") ;
tf.Close();
}
</script>

только ему все-равно придется дать согласие на сохранение...

  Ответить  
 
 автор: sim5   (12.08.2009 в 06:45)   письмо автору
 
   для: mrSHTURMAN   (12.08.2009 в 06:36)
 

А причем тут РНР? И ни один разумный клиент на такое согласие не даст.

  Ответить  
 
 автор: mrSHTURMAN   (12.08.2009 в 11:43)   письмо автору
 
   для: sim5   (12.08.2009 в 06:45)
 

Ну, исходя из "можно пользователю предложить сохранить файл..." - как вариант.
Записать-то надо на клиентской машине. А чем по-вашему плох JavaScript кроме необходимости подтверждения действия?

  Ответить  
 
 автор: sim5   (12.08.2009 в 13:22)   письмо автору
 
   для: mrSHTURMAN   (12.08.2009 в 11:43)
 

А я разве говорил, что JavaScript плох чем-то? Есть понятие безопасности, а посему незнающего клиента пугать ActiveX, это очень плохо, а знающий пошлет вас.... в общем сами знаете куда. Кроме того, чтобы записать так, как вы показываете, нужно еще отдать кому следует на клиенте данные, чтобы не писать "бла-бла-бла....".

  Ответить  
 
 автор: Trianon   (12.08.2009 в 14:25)   письмо автору
 
   для: mrSHTURMAN   (12.08.2009 в 11:43)
 

>Записать-то надо на клиентской машине. А чем по-вашему плох JavaScript кроме необходимости подтверждения действия?
Плох не JavaScript.
Плохим является само намерение что-то ультимативно изменять на клиентской машине.
Ваше "суньте скриптик клиенту" является квинтэсссенцией этого намерения.

  Ответить  
 
 автор: lifead   (13.08.2009 в 04:54)   письмо автору
 
   для: Trianon   (12.08.2009 в 14:25)
 

Обсуждений много, но вот ситуация следующая:
Есть php скрипт которые занимается обработкой базы данных: статистика, экспорт, различные изменения в БД. В результате работы скрипта формируется некоторая переменная с обработанными данными из БД. Так вот можно ли и если можно то как записать данную переменную в файл на машине пользователя, и не выводить все это безобразие на экран.
P.S. ОС пользователя может быть как от MSoft, так и *nix системы

  Ответить  
 
 автор: sim5   (13.08.2009 в 05:03)   письмо автору
 
   для: lifead   (13.08.2009 в 04:54)
 

Без согласия пользователя, записать на его машину что-то нельзя!

  Ответить  
 
 автор: lifead   (13.08.2009 в 05:07)   письмо автору
 
   для: sim5   (13.08.2009 в 05:03)
 

Надо с согласием и с запросом места куда ему этот файл записать.

  Ответить  
 
 автор: sim5   (13.08.2009 в 05:15)   письмо автору
 
   для: lifead   (13.08.2009 в 05:07)
 

Значит вам надо отдавать файл на скачивание. И вам уже об этом говорили. Как отдавать файл пользователю, смотрите здесь примеры, их в разделе этом много.

  Ответить  
 
 автор: lifead   (13.08.2009 в 05:39)   письмо автору
 
   для: sim5   (13.08.2009 в 05:15)
 

т.е. сначала необходимо записать файл на диск, а только затем его считать и отправить?

  Ответить  
 
 автор: Trianon   (13.08.2009 в 10:53)   письмо автору
 
   для: lifead   (13.08.2009 в 05:39)
 

Нет.
Перефразирую.
Надо отдать поток данных приложения на скачивание.
Браузер предложит сохранить этот поток, как файл с указанным именем ( в том месте, где пользователь обычно сохраняет файлы, скачанные из интернета)

Делается путем указания специального типа application/octet-stream, как показал guve (24.07.2009 в 11:07)
Единственное , для совместимости атрибут filename в поле content-disposition стоит повторить атрибутом name в поле content-type

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования